diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000000..4108200a3d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,18 @@ +--- +name: Report a bug +about: Report incorrect or unexpected behavior. +title: '' +labels: bug +assignees: adamkrellenstein + +--- + +**Describe the Problem** +A clear and concise description of what the problem is. What was the expected behavior? + +**Steps To Reproduce** +Steps to reproduce the behavior: +1. ... + +**Screenshots and Logfiles** +If applicable, upload screenshots and logfiles to help explain your problem. Please run everything with the `--verbose` flag when possible. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000000..d075a0acdf --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Request a feature +about: Suggest an improvement! +title: '' +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/bandit.yml b/.github/workflows/bandit.yml new file mode 100644 index 0000000000..d88cb006d4 --- /dev/null +++ b/.github/workflows/bandit.yml @@ -0,0 +1,47 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# Bandit is a security linter designed to find common security issues in Python code. +# This action will run Bandit on your codebase. +# The results of the scan will be found under the Security tab of your repository. + +# https://github.com/marketplace/actions/bandit-scan is ISC licensed, by abirismyname +# https://pypi.org/project/bandit/ is Apache v2.0 licensed, by PyCQA + +name: Bandit + +on: + push: + branches: "**" + +jobs: + bandit: + permissions: + contents: read # for actions/checkout to fetch code + security-events: write # for github/codeql-action/upload-sarif to upload SARIF results + actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Bandit Scan + uses: shundor/python-bandit-scan@9cc5aa4a006482b8a7f91134412df6772dbda22c + with: # optional arguments + # exit with 0, even with results found + exit_zero: true # optional, default is DEFAULT + # Github token of the repository (automatically created by Github) + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information. + # File or directory to run bandit on + # path: # optional, default is DEFAULT + # Report only issues of a given severity level or higher. Can be LOW, MEDIUM or HIGH. Default is UNDEFINED (everything) + # level: # optional, default is UNDEFINED + # Report only issues of a given confidence level or higher. Can be LOW, MEDIUM or HIGH. Default is UNDEFINED (everything) + # confidence: # optional, default is UNDEFINED + # comma-separated list of paths (glob patterns supported) to exclude from scan (note that these are in addition to the excluded paths provided in the config file) (default: .svn,CVS,.bzr,.hg,.git,__pycache__,.tox,.eggs,*.egg) + excluded_paths: "*/test/*,*/counterparty-lib/tools/*" # optional, default is DEFAULT + # comma-separated list of test IDs to skip + skips: "B101" # optional, default is DEFAULT + # path to a .bandit file that supplies command line arguments + # ini_path: bandit.yml # optional, default is DEFAULT diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml new file mode 100644 index 0000000000..f2e223b3a7 --- /dev/null +++ b/.github/workflows/build_and_test.yml @@ -0,0 +1,212 @@ +name: Build, Install then Test + +on: + push: + branches: "**" + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + PYTHON_VERSION: "3.10" + COUNTERPARTY_RS_DIR: "./counterparty-rs" + +jobs: + macos-x86_64: + runs-on: macos-12 #x86_64 + steps: + - uses: actions/checkout@v3 + + # Install dependencies + + - uses: actions/setup-python@v4 + with: + python-version: ${{ env.PYTHON_VERSION }} + cache: 'pip' + + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + default: true + + - name: Set up Homebrew + id: set-up-homebrew + uses: Homebrew/actions/setup-homebrew@master + + - name: Install leveldb + run: | + brew install leveldb + + - name: Install pytest and build module + run: | + pip install pytest hatch + python -m pip install --upgrade build + + # Build counterparty packages + + - name: Build counterparty-rs + uses: messense/maturin-action@v1 + with: + args: --release --out dist --sdist -m ${{ env.COUNTERPARTY_RS_DIR }}/Cargo.toml + + - name: Build counterparty-lib + run: | + cd counterparty-lib && hatch build ../dist + + - name: Build counterparty-cli + run: | + cd counterparty-cli && hatch build ../dist + + # Install counterparty packages + + - name: Install wheels + run: | + pip install dist/*.whl --force-reinstall + + # Run counterparty-lib tests + + - name: Run counterparty-lib tests + run: | + cd counterparty-lib + pytest + + # Upload wheels + + - name: Upload wheels + uses: actions/upload-artifact@v2 + with: + name: wheels + path: dist + + macos-m1: + runs-on: macos-14 + steps: + - uses: actions/checkout@v3 + + # Install dependencies + + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + default: true + + - name: Set up Homebrew + id: set-up-homebrew + uses: Homebrew/actions/setup-homebrew@master + + - name: Install Python 3.10 and leveldb + run: | + brew install python@3.10 leveldb + echo '/opt/homebrew/opt/python@3.10/libexec/bin' >> $GITHUB_PATH + + - name: Install pytest and build module + run: | + pip3.10 install pytest hatch + python3.10 -m pip install --upgrade build + + # Build counterparty packages + + - name: Build counterparty-rs + uses: messense/maturin-action@v1 + with: + args: --release --out dist --sdist -m ${{ env.COUNTERPARTY_RS_DIR }}/Cargo.toml + + - name: Build counterparty-lib + run: | + cd counterparty-lib && hatch build ../dist + + - name: Build counterparty-cli + run: | + cd counterparty-cli && hatch build ../dist + + # Install counterparty packages + + - name: Install wheels + run: | + export LIBRARY_PATH="$LIBRARY_PATH:$(brew --prefix)/lib" + export CPATH="$CPATH:$(brew --prefix)/include" + pip3.10 install dist/*.whl --force-reinstall + + # Run counterparty-lib tests + + - name: Run counterparty-lib tests + run: | + cd counterparty-lib + pytest + + # Upload wheels + + - name: Upload wheels + uses: actions/upload-artifact@v2 + with: + name: wheels + path: dist + + ubuntu-22-04: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + + # Install dependencies + + - uses: actions/setup-python@v4 + with: + python-version: ${{ env.PYTHON_VERSION }} + cache: 'pip' + + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + default: true + + - name: Install leveldb + run: | + sudo apt-get install -y libleveldb-dev + + - name: Install pytest and build module + run: | + pip install pytest hatch + python -m pip install --upgrade build + + # Build counterparty packages + + - name: Build counterparty-rs + uses: messense/maturin-action@v1 + with: + args: --release --out dist --sdist -m ${{ env.COUNTERPARTY_RS_DIR }}/Cargo.toml + + - name: Build counterparty-lib + run: | + cd counterparty-lib && hatch build ../dist + + - name: Build counterparty-cli + run: | + cd counterparty-cli && hatch build ../dist + + # Install counterparty packages + + - name: Install wheels + run: | + pip install dist/*.whl --force-reinstall + + # Run counterparty-lib tests + + - name: Run counterparty-lib tests + run: | + cd counterparty-lib + pytest + + # Upload wheels + + - name: Upload wheels + uses: actions/upload-artifact@v2 + with: + name: wheels + path: dist diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000000..fee20edf3f --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,77 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: "**" + +jobs: + analyze: + name: Analyze + # Runner size impacts CodeQL analysis time. To learn more, please see: + # - https://gh.io/recommended-hardware-resources-for-running-codeql + # - https://gh.io/supported-runners-and-hardware-resources + # - https://gh.io/using-larger-runners + # Consider using larger runners for possible analysis time improvements. + runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'python' ] + # CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ] + # Use only 'java-kotlin' to analyze code written in Java, Kotlin or both + # Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + + # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + with: + category: "/language:${{matrix.language}}" diff --git a/.github/workflows/license_scanner.yml b/.github/workflows/license_scanner.yml new file mode 100644 index 0000000000..81b7ad28ed --- /dev/null +++ b/.github/workflows/license_scanner.yml @@ -0,0 +1,41 @@ +name: License Scanner + +on: + push: + branches: "**" + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.11"] + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + default: true + - name: Install dependencies + run: | + sudo apt-get update -y + sudo apt-get install -y libgirepository1.0-dev libleveldb-dev + python -m pip install --upgrade pip + pip install license_scanner maturin sh + cd counterparty-rs && pip install -e . && cd .. + cd counterparty-lib && pip install -e . && cd .. + cd counterparty-cli && pip install -e . && cd .. + pip install evdev + - name: Analysing dependencies with licence_scanner + run: | + python counterparty-lib/tools/checklicences.py + - name: Upload SARIF + uses: github/codeql-action/upload-sarif/@v2 + with: + sarif_file: license_scanner.sarif diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml new file mode 100644 index 0000000000..e78859aeb0 --- /dev/null +++ b/.github/workflows/pylint.yml @@ -0,0 +1,42 @@ +name: Pylint + +on: + push: + branches: "**" + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.11"] + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + default: true + - name: Install dependencies + run: | + sudo apt-get update -y + sudo apt-get install -y libgirepository1.0-dev libleveldb-dev + python -m pip install --upgrade pip + pip install pylint maturin + pip install pylint-sarif-unofficial + cd counterparty-rs && pip install -e . && cd .. + cd counterparty-lib && pip install -e . && cd .. + cd counterparty-cli && pip install -e . && cd .. + pip install evdev + - name: Analysing the code with pylint + run: | + pylint2sarif $(git ls-files '*.py' | grep -v counterparty-rs/tests/ | grep -v counterparty-lib/counterpartylib/test/ | grep -v counterparty-lib/tools/) || true + - name: Upload SARIF + uses: github/codeql-action/upload-sarif/@v2 + with: + sarif_file: pylint.sarif diff --git a/.gitignore b/.gitignore index e483f9ee4b..6dc06b0cb4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ env venv docs/_build/* +target/ profile.txt @@ -15,7 +16,7 @@ profile.txt *.pyc # Setuptools distribution folder. -/dist/ +dist/ # Setuptools build folder. /build/ @@ -32,3 +33,9 @@ profile.txt .cache .python-version + +.eggs +.env +.env.leave +.venv/ +test-results/ diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 616d22d055..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,57 +0,0 @@ -sudo: required - -services: -- docker - -env: - global: - # define DOCKER_USERNAME and DOCKER_PASSWORD - - secure: "NZZCFpX/ubtrMHxU3C6+HkV+mrSUIAqRLXKySBiUJeiKaOsiVUl1AMd1cKQOrDp59dIFmjMvH+HGFbAKt3QvTcTImx0yye09bsXNKUKIQbVElnoZvkP6pZSxXAFcmjZdUGTfMSMkLukrXHgLb5ob2ziBCinJBoG57tgcUJnoZTc=" - - secure: "d4TXRnQ4QffUFILVN6Hn7DA55unGDk0H6vZsmDRxP3ucLrUC/j8ko3Tm9jDeHZvVxGUe/e0dNXQ1WjaialCpB/h+rrnCEFExk9+oeUhhzn9GVOp488jqoiIwQxYM8cEh5I8Fh8lztBwaLnaI/MgRougFuOs3Ocf3v2IhBgvcwGs=" - -before_install: -- sudo apt-get -qq update -# add coveralls -- sudo apt-get -y install python3 python3-pip python3-setuptools -- sudo pip3 install --upgrade pip -- sudo pip3 install coveralls -# upgrade docker, for build argument support -- sudo apt-get install -o Dpkg::Options::="--force-confold" --force-yes -y docker-ce -- docker version -- docker ps -a -# get the current PR and branch name -- sudo apt-get -y install jq -- export PR=https://api.github.com/repos/$TRAVIS_REPO_SLUG/pulls/$TRAVIS_PULL_REQUEST -- export BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH; else echo `curl -s $PR | jq -r .head.ref`; fi) -- echo $PR -- echo $BRANCH -# determine the docker image tag name ("nopush" being a placeholder to signify the image will not be pushed to dockerhub) -- export DOCKER_TAG="nopush" -- | - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then - if [ "$BRANCH" == "master" ]; then export DOCKER_TAG="latest"; fi - if [ "$BRANCH" == "develop" ]; then export DOCKER_TAG="develop"; fi - fi -- echo $DOCKER_TAG -# try to check out the same branch for counterparty-lib (if it exists), and fallback to the develop branch if not -- if curl --output /dev/null --silent --head --fail "https://github.com/CounterpartyXCP/counterparty-cli/tree/$BRANCH"; then export DOCKERFILE_CLI_BRANCH="$BRANCH"; else export DOCKERFILE_CLI_BRANCH="develop"; fi -- echo $DOCKERFILE_CLI_BRANCH -# build docker image -- docker build -t counterparty/counterparty-server:$DOCKER_TAG --build-arg CLI_BRANCH="$DOCKERFILE_CLI_BRANCH" . - -script: -# run the test suite in the docker container we just made -- docker run --entrypoint=/bin/bash counterparty/counterparty-server:$DOCKER_TAG -c "cd /counterparty-lib/counterpartylib; py.test --verbose --skiptestbook=all --cov-config=../.coveragerc --cov-report=term-missing --cov=./" - -after_success: -- coveralls -# if it's master or develop, then push the appropirately tagged docker image (otherwise don't push anything) -- | - if [ "$DOCKER_TAG" != "nopush" ]; then - docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"; - docker push counterparty/counterparty-server:$DOCKER_TAG; - fi - -notifications: - slack: - secure: cl0G5fWZNnIK5VQ6BPZ4RtwVO2/nfvX/zjhljfF6cQ20OKyvyiJHq+e67fl2pkCKDlqlEqSWaQJ6G52YzUpDQmf+o7qpH6YnkFxSqYp5h4YF1hJw4sCHJ7bVSLrjogWxU8QaNvH7YpL4YkGe+WOau2FgoIZOcMt6hhKrvWclfuc= diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 73efea3c26..371d995bae 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Security Issues -* If you’ve identified a potential **security issue**, please contact us +* If you’ve identified a potential **security issue**, please contact the developers directly at . @@ -8,11 +8,11 @@ * Check to see if the issue has already been reported. -* Run with verbose logging and paste the relevant log output. - -* List the exact version/commit being run, as well as the platform the software +* If possible, list the exact steps required to reproduce the issue, including the exact version/commit being run, as well as the platform the software is running on. +* Try to reproduce the issue with verbose logging enabled and then share the relevant log output. + # Making a Pull Request @@ -26,7 +26,4 @@ * Commits should be organized into logical units. -* Verify that your fork passes all tests. The test suite is invoked with `$ - py.test-3.4` in the `counterpartylib` directory of the repository. The -`ethereum-serpent` dependency is satisfied by running `setup.py install ---with-serpent` and `sudo pip2 install ethereum-serpent==1.6.7`. +* Verify that your fork passes all tests. diff --git a/Dockerfile b/Dockerfile index f04bc928cf..506acd4917 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,50 +1,33 @@ -FROM ubuntu:18.04 +# docker build -t counterparty . +# docker run --rm counterparty counterparty-server -h -#MAINTAINER Counterparty Developers +FROM ubuntu:22.04 -# Install common dependencies -RUN apt-get update && apt-get install -y apt-utils ca-certificates wget curl git mercurial \ - python3 python3-dev python3-pip python3-setuptools python3-appdirs \ - build-essential vim unzip software-properties-common sudo gettext-base \ - net-tools iputils-ping telnet lynx locales +RUN apt-get update +# install dependencies +RUN apt-get install -y python3 python3-dev python3-pip libleveldb-dev curl -# Upgrade pip3 to newest -RUN pip3 install --upgrade pip +# install rust +RUN curl https://sh.rustup.rs -sSf | sh -s -- -y +ENV PATH="/root/.cargo/bin:${PATH}" -# Set locale -RUN dpkg-reconfigure -f noninteractive locales && \ - locale-gen en_US.UTF-8 && \ - /usr/sbin/update-locale LANG=en_US.UTF-8 -ENV LC_ALL en_US.UTF-8 +# install maturin +RUN pip3 install maturin -# Set home dir env variable -ENV HOME /root +# copy repository +COPY README.md /README.md +COPY ./counterparty-rs /counterparty-rs +COPY ./counterparty-lib /counterparty-lib +COPY ./counterparty-cli /counterparty-cli -# Install counterparty-lib -COPY . /counterparty-lib -WORKDIR /counterparty-lib -RUN pip3 install -r requirements.txt -RUN python3 setup.py develop -RUN python3 setup.py install_apsw - -# Install counterparty-cli -# NOTE: By default, check out the counterparty-cli master branch. You can override the BRANCH build arg for a different -# branch (as you should check out the same branch as what you have with counterparty-lib, or a compatible one) -# NOTE2: In the future, counterparty-lib and counterparty-cli will go back to being one repo... -ARG CLI_BRANCH=master -ENV CLI_BRANCH ${CLI_BRANCH} -RUN git clone -b ${CLI_BRANCH} https://github.com/CounterpartyXCP/counterparty-cli.git /counterparty-cli -WORKDIR /counterparty-cli -RUN pip3 install -r requirements.txt -RUN python3 setup.py develop - -# Additional setup -COPY docker/server.conf /root/.config/counterparty/server.conf -COPY docker/start.sh /usr/local/bin/start.sh -RUN chmod a+x /usr/local/bin/start.sh -WORKDIR / +# install counterparty-lib +WORKDIR /counterparty-rs +RUN pip3 install . -EXPOSE 4000 14000 +# install counterparty-lib +WORKDIR /counterparty-lib +RUN pip3 install . -# NOTE: Defaults to running on mainnet, specify -e TESTNET=1 to start up on testnet -ENTRYPOINT start.sh ${BTC_NETWORK} ${NO_BOOTSTRAP} +# install counterparty-cli +WORKDIR /counterparty-cli +RUN pip3 install . diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 57af57fbcc..0000000000 --- a/MANIFEST.in +++ /dev/null @@ -1,2 +0,0 @@ -include counterpartylib/mainnet_burns.csv -include counterpartylib/protocol_changes.json \ No newline at end of file diff --git a/README.md b/README.md index 7c50ec2f7a..19c932b41e 100644 --- a/README.md +++ b/README.md @@ -1,183 +1,226 @@ -[![Build Status Travis](https://travis-ci.org/CounterpartyXCP/counterparty-lib.svg?branch=develop)](https://travis-ci.org/CounterpartyXCP/counterparty-lib) -[![Build Status Circle](https://circleci.com/gh/CounterpartyXCP/counterparty-lib.svg?&style=shield)](https://circleci.com/gh/CounterpartyXCP/counterparty-lib) -[![Coverage Status](https://coveralls.io/repos/CounterpartyXCP/counterparty-lib/badge.png?branch=develop)](https://coveralls.io/r/CounterpartyXCP/counterparty-lib?branch=develop) -[![Latest Version](https://pypip.in/version/counterparty-lib/badge.svg)](https://pypi.python.org/pypi/counterparty-lib/) -[![License](https://pypip.in/license/counterparty-lib/badge.svg)](https://pypi.python.org/pypi/counterparty-lib/) -[![Docker Pulls](https://img.shields.io/docker/pulls/counterparty/counterparty-server.svg?maxAge=2592000)](https://hub.docker.com/r/counterparty/counterparty-server/) +[![Build Status Circle](https://circleci.com/gh/CounterpartyXCP/counterparty-core.svg?&style=shield)](https://circleci.com/gh/CounterpartyXCP/counterparty-core) # Description -`counterparty-lib` is the reference implementation of the [Counterparty Protocol](https://counterparty.io). +Counterparty Core is the reference implementation of the [Counterparty Protocol](https://counterparty.io). -**Note:** for the command-line interface to `counterparty-lib`, see [`counterparty-cli`](https://github.com/CounterpartyXCP/counterparty-cli). +# Getting Started -# Installation +The simplest way to get your Counterparty node up and running is to use Docker Compose. -**WARNING** Master branch should only be used for testing. For production releases uses tagged releases. +``` +sudo apt install docker-compose +``` + +Then, for `mainnet`, run: + +```bash +docker-compose -f simplenode/compose.yml up +``` + +For `testnet`, modify the Docker Compose file in `simplenode/` and then run: +```bash +docker-compose -f simplenode/compose.yml -p simplenode-testnet up +``` + +Then wait for your node to catch up with the network. Note: this process currently takes a long time, beause it does not make use of the `bootstrap` or `kickstart` functionality. (See below.) + + +# Manual Installation + +Dependencies: -For a simple Docker-based install of the Counterparty software stack, see [this guide](http://counterparty.io/docs/federated_node/). +- Bitcoin Core +- AddrIndexRS +- Python >= 3.10 +- Rust +- Maturin +- LevelDB +## Install dependencies -# Manual installation +### Install Bitcoin Core Download the latest [Bitcoin Core](https://github.com/bitcoin/bitcoin/releases) and create -a `bitcoin.conf` file with the following options: +a `bitcoin.conf` file (by default located in `~.bitcoin/`) with the following options: ``` -rpcuser=bitcoinrpc +rpcuser=rpc rpcpassword=rpc server=1 -txindex=1 -rpctimeout=300 -zmqpubhashblock=tcp://127.0.0.1:28832 -zmqpubhashtx=tcp://127.0.0.1:28832 addresstype=legacy +txindex=1 +prune=0 +mempoolfullrbf=1 +rpcworkqueue=100 ``` -**Note:** you can and should replace the RPC credentials. Remember to use the changed RPC credentials throughout this document. -Download and install latest addrindexrs: +Adding the following lines, and opening up port `8333` to incoming traffic, may improve your sync speed: + ``` -$ git clone https://github.com/CounterpartyXCP/addrindexrs.git -$ cd addrindexrs -$ cargo check - -- Setup the appropiate environment variables -- - - ADDRINDEXRS_JSONRPC_IMPORT=1 - - ADDRINDEXRS_TXID_LIMIT=15000 - - ADDRINDEXRS_COOKIE=user:password - - ADDRINDEXRS_INDEXER_RPC_ADDR=0.0.0.0:8432 - - ADDRINDEXRS_DAEMON_RPC_ADDR=bitcoin:8332 - -- -$ cargo build --release -$ cargo run --release +listen=1 +dbcache=4000 ``` -You could run the indexd daemon with a process manager like `forever` or `pm2` (recommended). +### Install Rust -Then, download and install `counterparty-lib`: +The recommended way to install Rust is to use `rustup`: +```bash +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +source "$HOME/.cargo/env" ``` -$ git clone https://github.com/CounterpartyXCP/counterparty-lib.git -$ cd counterparty-lib -$ sudo pip3 install --upgrade -r requirements.txt -$ sudo python3 setup.py install + +See https://www.rust-lang.org/tools/install for more information. + + +### Install Addrindexrs + +Download and install the latest [AddrIndexRS](https://github.com/CounterpartyXCP/addrindexrs): + +```bash +git clone https://github.com/CounterpartyXCP/addrindexrs.git +cd addrindexrs +cargo install --path=. ``` -Followed by `counterparty-cli`: +Start `addrindexrs` with: +```bash +addrindexrs --cookie=rpc:rpc -vvv ``` -$ git clone https://github.com/CounterpartyXCP/counterparty-cli.git -$ cd counterparty-cli -$ sudo pip3 install --upgrade -r requirements.txt -$ sudo python3 setup.py install + +When working with a remote full node or low-memory system, you can tell `addrindexrs` to use JSON-RPC to communicate with `bitcoind` using the flag `--jsonrpc-import`. +You can also limit the resources available for `addrindexrs` with: + +```bash +ulimit -n 8192 ``` -Note on **sudo**: both counterparty-lib and counterparty-server can be installed by non-sudoers. Please refer to external documentation for instructions on using pip without root access and other information related to custom install locations. +Use `addrindexrs -h` for more options. +### Install Python >= 3.10 and Maturin -Then, launch the daemon via: +On Ubuntu 22.04 and similar: +```bash +apt-get install -y python3 python3-dev python3-pip +pip3 install maturin ``` -$ counterparty-server bootstrap -$ counterparty-server --backend-password=rpc start + +On MacOS: + +```bash +brew install python +pip3 install maturin ``` -# Basic Usage +See https://brew.sh/ to install Homewrew. -## Via command-line -(Requires `counterparty-cli` to be installed.) +### Install LevelDB -* The first time you run the server, you may bootstrap the local database with: - `$ counterparty-server bootstrap` +On Ubuntu 22.04 and similar: -* Start the server with: - `$ counterparty-server start` +```bash +apt-get install -y libleveldb-dev +``` -* Check the status of the server with: - `$ counterparty-client getinfo` +On MacOS: -* For additional command-line arguments and options: - `$ counterparty-server --help` - `$ counterparty-client --help` +```bash +brew install leveldb +``` -## Via Python +## Install Counterparty Core -Bare usage from Python is also possible, without installing `counterparty-cli`: +Download the latest version `counterparty-core`: +```bash +git clone https://github.com/CounterpartyXCP/counterparty-core.git ``` -$ python3 ->>> from counterpartylib import server ->>> db = server.initialise() ->>> server.start_all(db) + +Install the `counterparty-rs` library: + +```bash +cd counterparty-core/counterparty-rs +pip3 install . ``` -# Configuration and Operation +Install the `counterparty-lib` library: + +```bash +cd counterparty-core/counterparty-lib +pip3 install . +``` + +Install the `counterparty-cli` library: + +```bash +cd counterparty-core/counterparty-cli +pip3 install . +``` -The paths to the **configuration** files, **log** files and **database** files are printed to the screen when starting the server in ‘verbose’ mode: - `$ counterparty-server --verbose start` +*Note for MacOS users* -By default, the **configuration files** are named `server.conf` and `client.conf` and located in the following directories: +Use this command if you get an error while installing one of the packages: + +```bash +CFLAGS="-I/opt/homebrew/include -L/opt/homebrew/lib" +``` + +# Usage + +## Configuration + +Manual configuration is not necessary for most use cases, but example configuration files may be found in the `docker/` directory. + +By default, the **configuration files** are named `server.conf` and `client.conf` and are located in the following directories: * Linux: `~/.config/counterparty/` * Windows: `%APPDATA%\Counterparty\` -Client and Server log files are named `counterparty.client.[testnet.]log` and `counterparty.server.[testnet.]log`, and located in the following directories: +Client and server log files are named `counterparty.client.[testnet.]log` and `counterparty.server.[testnet.]log` and are located in the following directories: * Linux: `~/.cache/counterparty/log/` * Windows: `%APPDATA%\Local\Counterparty\counterparty\Logs` -Counterparty API activity is logged in `server.[testnet.]api.log` and `client.[testnet.]api.log`. +Counterparty API activity is logged to `server.[testnet.]api.log` and `client.[testnet.]api.log`. -Counterparty database files are by default named `counterparty.[testnet.]db` and located in the following directories: +Counterparty database files are by default named `counterparty.[testnet.]db` and are located in the following directories: * Linux: `~/.local/share/counterparty` * Windows: `%APPDATA%\Roaming\Counterparty\counterparty` -## Configuration File Format - -Manual configuration is not necessary for most use cases. "back-end" and "wallet" are used to access Bitcoin server RPC. +All configurable parameters in the configuration file can also be passed as arguments to the `counterpart-server` command. Use `counterparty-server --help` to see the list of these options. -A `counterparty-server` configuration file looks like this: +## Quickly Catch Up with the Network - [Default] - backend-name = indexd - backend-user = - backend-password = - indexd-connect = localhost - indexd-port = 8432 - rpc-host = 0.0.0.0 - rpc-user = - rpc-password = +You will not be able to run `counterparty-server` until `addrindexrs` has caught up (and its RPC server is running), which in turn requires `bitcoind` have caught up as well. The command to start the Counterparty server process is simply `counterparty-server start`. However, simply running this command requires a long time to catch up with the network, and Counterparty must have parsed all published blocks before being operational. -The ``force`` argument can be used either in the server configuration file or passed at runtime to make the server keep running in the case it loses connectivity with the Internet and falls behind the back-end database. This may be useful for *non-production* Counterparty servers that need to maintain RPC service availability even when the backend or counterparty server has no Internet connectivity. +There are two ways to speed up the process of catching up with the network: -A `counterparty-client` configuration file looks like this: +1. `counterparty-server bootstrap` downloads a recent snapshot of a Counterparty database from a centralized server maintained by the Counterparty Core development team. Because this method does not involve verifying the history of Counterparty transactions yourself, **the `bootstrap` command should not be used for mission-critical, commercial or public-facing nodes.** - [Default] - wallet-name = bitcoincore - wallet-connect = localhost - wallet-user = - wallet-password = - counterparty-rpc-connect = localhost - counterparty-rpc-user = - counterparty-rpc-password = +```bash +counterparty-server bootstrap +``` +1. `counterparty-server kickstart` will perform a complete catchup in around 8 to 24 hours. However, this method requires first stopping Bitcoin Core (while leaving `addrindexrs` running, so that Counterparty Core can read the Bitcoin block files directly from `bitcoind`'s database. -# Developer notes +```bash +counterparty-server kickstart +``` -## Versioning -* Major version changes require a full (automatic) rebuild of the database. -* Minor version changes require a(n automatic) database reparse. -* All protocol changes are retroactive on testnet. +## Start the Server -## Continuous integration - - TravisCI is setup to run all tests with 1 command and generate a coverage report and let `python-coveralls` parse and upload it. - It does runs with `--skiptestbook=all` so it will not do the reparsing of the bootstrap files. - - CircleCI is setup to split the tests as much as possible to make it easier to read the error reports. - It also runs the `integration_test.test_book` tests, which reparse the bootstrap files. +Once the Counterparty server has caught up with the network, you may start the server simply with `counterparty start`: +```bash +counterparty-server start +``` # Further Reading diff --git a/RELEASE.md b/RELEASE.md new file mode 100644 index 0000000000..e1e00ff590 --- /dev/null +++ b/RELEASE.md @@ -0,0 +1,24 @@ +# Codebase +- [ ] Update `VERSION_` variables in `lib/config.py` +- [ ] Update `protocol_changes.json` (as necessary) +- [ ] Update Counterparty packages version in `requirement.txt` files +- [ ] Review all open pull requests +- [ ] Write release notes +- [ ] Create pull request against `master` +- [ ] Ensure all tests pass in CI +- [ ] Merge PR into `master` +- [ ] Tag and sign release, copying release notes from the codebase +- [ ] Rebase `gh-pages` against `master` +- [ ] Upload (signed) package to PyPi + * `sudo python3 setup.py sdist build` + * `sudo python3 setup.py sdist upload -r pypi` +- [ ] Publish Docker images +- [ ] Update documentation + + +# Announcements + +- [ ] [Official Forums](https://forums.counterparty.io/t/new-version-announcements-counterparty-and-counterpartyd/363)) +- [ ] Mailing list +- [ ] Telegram +- [ ] Twitter diff --git a/circle.yml b/circle.yml index 6cd3d8f270..427ad7a1e2 100644 --- a/circle.yml +++ b/circle.yml @@ -5,102 +5,18 @@ orbs: python: circleci/python@2.0.3 jobs: - build: - docker: - - image: cimg/python:3.6.15 - - steps: - - checkout - - - python/install-packages: - pkg-manager: pip - - - run: - name: Run counterparty-lib setup and install - command: python setup.py develop - - - run: - name: Run apsw setup and install - command: python setup.py install_apsw - - - persist_to_workspace: - root: ~/ - paths: - - . - - test: - docker: - - image: cimg/python:3.6.15 - - steps: - - attach_workspace: - at: ~/ - - - run: - name: "Run tests" - command: | - mkdir test-results - py.test --junitxml=test-results/junit.xml --verbose --skiptestbook=all --cov-config=.coveragerc --cov-report=term-missing --cov=./ counterpartylib - - store_test_results: - path: test-results - - test-reparse-testnet: + test-book-testnet: docker: - - image: cimg/python:3.6.15 - - steps: - - attach_workspace: - at: ~/ - - - run: - name: "Get latest testnet db file" - command: | - mkdir -p ~/.local/share/counterparty - wget https://counterparty.io/bootstrap/counterparty-db-testnet-7.latest.tar.gz -O ~/.local/share/counterparty/counterparty-db-testnet.latest.tar.gz - tar -C ~/.local/share/counterparty -xvzf ~/.local/share/counterparty/counterparty-db-testnet.latest.tar.gz - - - run: - name: "Run testnet reparse test" - command: | - mkdir test-results - py.test --junitxml=test-results/junit.xml --verbose --capture=no --skiptestbook=mainnet -k test_book counterpartylib/test/reparse_test.py - - - store_test_results: - path: test-results + - image: cimg/python:3.11.6 - test-reparse-mainnet: - docker: - - image: cimg/python:3.6.15 - steps: - - attach_workspace: - at: ~/ - - run: - name: "Get latest mainnet db file" + name: "TODO" command: | - mkdir -p ~/.local/share/counterparty - wget https://counterparty.io/bootstrap/counterparty-db.latest.tar.gz -O ~/.local/share/counterparty/counterparty-db.latest.tar.gz - tar -C ~/.local/share/counterparty -xvzf ~/.local/share/counterparty/counterparty-db.latest.tar.gz - - - run: - name: "Run testnet reparse test" - command: | - mkdir test-results - py.test --junitxml=test-results/junit.xml --verbose --capture=no --skiptestbook=testnet -k test_book counterpartylib/test/reparse_test.py - - - store_test_results: - path: test-results - + echo "Success" workflows: build-and-test: jobs: - - build - - test: - requires: - - build - - test-reparse-testnet: - requires: - - build \ No newline at end of file + - test-book-testnet \ No newline at end of file diff --git a/counterparty-cli/counterpartycli/__init__.py b/counterparty-cli/counterpartycli/__init__.py new file mode 100644 index 0000000000..c5736095cb --- /dev/null +++ b/counterparty-cli/counterpartycli/__init__.py @@ -0,0 +1,20 @@ +import os, sys + +from counterpartylib.lib import config + + +APP_VERSION = config.VERSION_STRING + + +CURR_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), os.path.expanduser('__file__')))) +WIN_EXE_LIB = os.path.normpath(os.path.join(CURR_DIR, 'library')) +if os.path.isdir(WIN_EXE_LIB): + sys.path.insert(0, WIN_EXE_LIB) + +def client_main(): + from counterpartycli import client + client.main() + +def server_main(): + from counterpartycli import server + server.main() diff --git a/counterparty-cli/counterpartycli/client.py b/counterparty-cli/counterpartycli/client.py new file mode 100755 index 0000000000..b287eddd8f --- /dev/null +++ b/counterparty-cli/counterpartycli/client.py @@ -0,0 +1,278 @@ +#! /usr/bin/env python3 + +import os +import sys +import argparse +import logging +import getpass +from decimal import Decimal as D + +from counterpartylib.lib import log +logger = logging.getLogger(__name__) + +from counterpartylib.lib import config, script +from counterpartylib.lib.util import make_id, BET_TYPE_NAME +from counterpartylib.lib.log import isodt +from counterpartylib.lib.exceptions import TransactionError +from counterpartycli.util import add_config_arguments +from counterpartycli.setup import generate_config_files +from counterpartycli import APP_VERSION, util, messages, wallet, console, clientapi + +APP_NAME = 'counterparty-client' + +CONFIG_ARGS = [ + [('-v', '--verbose'), {'dest': 'verbose', 'action': 'store_true', 'help': 'sets log level to DEBUG instead of WARNING'}], + [('--testnet',), {'action': 'store_true', 'default': False, 'help': f'use {config.BTC_NAME} testnet addresses and block numbers'}], + [('--testcoin',), {'action': 'store_true', 'default': False, 'help': f'use the test {config.XCP_NAME} network on every blockchain'}], + [('--regtest',), {'action': 'store_true', 'default': False, 'help': f'use {config.BTC_NAME} regtest addresses and block numbers'}], + [('--customnet',), {'default': '', 'help': 'use a custom network (specify as UNSPENDABLE_ADDRESS|ADDRESSVERSION|P2SH_ADDRESSVERSION with version bytes in HH hex format)'}], + + [('--counterparty-rpc-connect',), {'default': 'localhost', 'help': 'the hostname or IP of the Counterparty JSON-RPC server'}], + [('--counterparty-rpc-port',), {'type': int, 'help': 'the port of the Counterparty JSON-RPC server'}], + [('--counterparty-rpc-user',), {'default': 'rpc', 'help': 'the username for the Counterparty JSON-RPC server'}], + [('--counterparty-rpc-password',), {'help': 'the password for the Counterparty JSON-RPC server'}], + [('--counterparty-rpc-ssl',), {'default': False, 'action': 'store_true', 'help': 'use SSL to connect to the Counterparty server (default: false)'}], + [('--counterparty-rpc-ssl-verify',), {'default': False, 'action': 'store_true', 'help': 'verify SSL certificate of the Counterparty server; disallow use of self‐signed certificates (default: false)'}], + + [('--wallet-name',), {'default': 'bitcoincore', 'help': 'the wallet name to connect to'}], + [('--wallet-connect',), {'default': 'localhost', 'help': 'the hostname or IP of the wallet server'}], + [('--wallet-port',), {'type': int, 'help': 'the wallet port to connect to'}], + [('--wallet-user',), {'default': 'bitcoinrpc', 'help': 'the username used to communicate with wallet'}], + [('--wallet-password',), {'help': 'the password used to communicate with wallet'}], + [('--wallet-ssl',), {'action': 'store_true', 'default': False, 'help': 'use SSL to connect to wallet (default: false)'}], + [('--wallet-ssl-verify',), {'action': 'store_true', 'default': False, 'help': 'verify SSL certificate of wallet; disallow use of self‐signed certificates (default: false)'}], + + [('--json-output',), {'action': 'store_true', 'default': False, 'help': 'display result in json format'}], + [('--unconfirmed',), {'action': 'store_true', 'default': False, 'help': 'allow the spending of unconfirmed transaction outputs'}], + [('--encoding',), {'default': 'auto', 'type': str, 'help': 'data encoding method'}], + [('--fee-per-kb',), {'type': D, 'default': D(config.DEFAULT_FEE_PER_KB / config.UNIT), 'help': f'fee per kilobyte, in {config.BTC}'}], + [('--regular-dust-size',), {'type': D, 'default': D(config.DEFAULT_REGULAR_DUST_SIZE / config.UNIT), 'help': f'value for dust Pay‐to‐Pubkey‐Hash outputs, in {config.BTC}'}], + [('--multisig-dust-size',), {'type': D, 'default': D(config.DEFAULT_MULTISIG_DUST_SIZE / config.UNIT), 'help': f'for dust OP_CHECKMULTISIG outputs, in {config.BTC}'}], + [('--op-return-value',), {'type': D, 'default': D(config.DEFAULT_OP_RETURN_VALUE / config.UNIT), 'help': f'value for OP_RETURN outputs, in {config.BTC}'}], + [('--unsigned',), {'action': 'store_true', 'default': False, 'help': 'print out unsigned hex of transaction; do not sign or broadcast'}], + [('--disable-utxo-locks',), {'action': 'store_true', 'default': False, 'help': 'disable locking of UTXOs being spend'}], + [('--dust-return-pubkey',), {'help': 'pubkey for dust outputs (required for P2SH)'}], + [('--requests-timeout',), {'type': int, 'default': clientapi.DEFAULT_REQUESTS_TIMEOUT, 'help': 'timeout value (in seconds) used for all HTTP requests (default: 5)'}] +] + +def main(): + if os.name == 'nt': + from counterpartylib.lib import util_windows + #patch up cmd.exe's "challenged" (i.e. broken/non-existent) UTF-8 logging + util_windows.fix_win32_unicode() + + # Post installation tasks + generate_config_files() + + # Parse command-line arguments. + parser = argparse.ArgumentParser(prog=APP_NAME, description='Counterparty CLI for counterparty-server', add_help=False) + parser.add_argument('-h', '--help', dest='help', action='store_true', help='show this help message and exit') + parser.add_argument('-V', '--version', action='version', version=f"{APP_NAME} v{APP_VERSION}; counterparty-lib v{config.VERSION_STRING}") + parser.add_argument('--config-file', help='the location of the configuration file') + + add_config_arguments(parser, CONFIG_ARGS, 'client.conf') + + subparsers = parser.add_subparsers(dest='action', help='the action to be taken') + + parser_send = subparsers.add_parser('send', help='create and broadcast a *send* message') + parser_send.add_argument('--source', required=True, help='the source address') + parser_send.add_argument('--destination', required=True, help='the destination address') + parser_send.add_argument('--quantity', required=True, help='the quantity of ASSET to send') + parser_send.add_argument('--asset', required=True, help='the ASSET of which you would like to send QUANTITY') + parser_send.add_argument('--memo', help='A transaction memo attached to this send') + parser_send.add_argument('--memo-is-hex', action='store_true', default=False, help='Whether to interpret memo as a hexadecimal value') + parser_send.add_argument('--no-use-enhanced-send', action='store_false', dest="use_enhanced_send", default=True, help='If set to false, compose a non-enhanced send with a bitcoin dust output') + parser_send.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + + parser_sweep = subparsers.add_parser('sweep', help='create and broadcast a *sweep* message') + parser_sweep.add_argument('--source', required=True, help='the source address') + parser_sweep.add_argument('--destination', required=True, help='the destination address') + parser_sweep.add_argument('--flags', default=1, help='the ORed flags for this sweep. 1 for balance sweep, 2 for ownership sweep, 4 for memo as hex. E.G. flag=7 sends all assets, transfer all ownerships and encodes the memo as hex. default=1') + parser_sweep.add_argument('--memo', help='A transaction memo attached to this send') + parser_sweep.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + + parser_dispenser = subparsers.add_parser('dispenser', help='create and broadcast a *dispenser*') + parser_dispenser.add_argument('--source', required=True, help='the source address') + parser_dispenser.add_argument('--asset', required=True, help='the ASSET of which you would like to dispense GIVE_QUANTITY') + parser_dispenser.add_argument('--mainchainrate', required=True, help=f'the quantity of {config.BTC} (decimal) this dispenser must receive to send the GIVEN_QUANTITY of the ASSET') + parser_dispenser.add_argument('--give-quantity', required=True, help=f'the quantity of ASSET that you are giving for each MAINCHAINRATE of {config.BTC} received') + parser_dispenser.add_argument('--escrow-quantity', required=True, help='the quantity of ASSET that you are escrowing for this dispenser') + parser_dispenser.add_argument('--status', default=0, help='the status for the dispenser: 0. to open the dispenser (or replenish a drained one). 10. to close the dispenser. Default 0.') + parser_dispenser.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + parser_dispenser.add_argument('--open-address', help='an empty address to open the dispenser on') + + parser_order = subparsers.add_parser('order', help='create and broadcast an *order* message') + parser_order.add_argument('--source', required=True, help='the source address') + parser_order.add_argument('--get-quantity', required=True, help='the quantity of GET_ASSET that you would like to receive') + parser_order.add_argument('--get-asset', required=True, help='the asset that you would like to buy') + parser_order.add_argument('--give-quantity', required=True, help='the quantity of GIVE_ASSET that you are willing to give') + parser_order.add_argument('--give-asset', required=True, help='the asset that you would like to sell') + parser_order.add_argument('--expiration', type=int, required=True, help='the number of blocks for which the order should be valid') + parser_order.add_argument('--fee-fraction-required', default=config.DEFAULT_FEE_FRACTION_REQUIRED, help=f'the miners’ fee required for an order to match this one, as a fraction of the {config.BTC} to be bought') + parser_order_fees = parser_order.add_mutually_exclusive_group() + parser_order_fees.add_argument('--fee-fraction-provided', default=config.DEFAULT_FEE_FRACTION_PROVIDED, help=f'the miners’ fee provided, as a fraction of the {config.BTC} to be sold') + parser_order_fees.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + + parser_btcpay = subparsers.add_parser(f'{config.BTC}pay'.lower(), help=f'create and broadcast a *{config.BTC}pay* message, to settle an Order Match for which you owe {config.BTC}') + parser_btcpay.add_argument('--source', required=True, help='the source address') + parser_btcpay.add_argument('--order-match-id', required=True, help='the concatenation of the hashes of the two transactions which compose the order match') + parser_btcpay.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + + parser_issuance = subparsers.add_parser('issuance', help='issue a new asset, issue more of an existing asset or transfer the ownership of an asset') + parser_issuance.add_argument('--source', required=True, help='the source address') + parser_issuance.add_argument('--transfer-destination', help='for transfer of ownership of asset issuance rights') + parser_issuance.add_argument('--quantity', default=0, help='the quantity of ASSET to be issued') + parser_issuance.add_argument('--asset', required=True, help='the name of the asset to be issued (if it’s available)') + parser_issuance.add_argument('--divisible', action='store_true', help='whether or not the asset is divisible (must agree with previous issuances)') + parser_issuance.add_argument('--description', type=str, required=True, help='a description of the asset (set to ‘LOCK’ to lock against further issuances with non‐zero quantitys)') + parser_issuance.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + + parser_broadcast = subparsers.add_parser('broadcast', help='broadcast textual and numerical information to the network') + parser_broadcast.add_argument('--source', required=True, help='the source address') + parser_broadcast.add_argument('--text', type=str, required=True, help='the textual part of the broadcast (set to ‘LOCK’ to lock feed)') + parser_broadcast.add_argument('--value', type=float, default=-1, help='numerical value of the broadcast') + parser_broadcast.add_argument('--fee-fraction', default=0, help='the fraction of bets on this feed that go to its operator') + parser_broadcast.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + + parser_bet = subparsers.add_parser('bet', help='offer to make a bet on the value of a feed') + parser_bet.add_argument('--source', required=True, help='the source address') + parser_bet.add_argument('--feed-address', required=True, help='the address which publishes the feed to bet on') + parser_bet.add_argument('--bet-type', choices=list(BET_TYPE_NAME.values()), required=True, help=f'choices: {list(BET_TYPE_NAME.values())}') + parser_bet.add_argument('--deadline', required=True, help='the date and time at which the bet should be decided/settled') + parser_bet.add_argument('--wager', required=True, help='the quantity of XCP to wager') + parser_bet.add_argument('--counterwager', required=True, help='the minimum quantity of XCP to be wagered by the user to bet against you, if he were to accept the whole thing') + parser_bet.add_argument('--target-value', default=0.0, help='target value for Equal/NotEqual bet') + parser_bet.add_argument('--leverage', type=int, default=5040, help='leverage, as a fraction of 5040') + parser_bet.add_argument('--expiration', type=int, required=True, help='the number of blocks for which the bet should be valid') + parser_bet.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + + parser_dividend = subparsers.add_parser('dividend', help='pay dividends to the holders of an asset (in proportion to their stake in it)') + parser_dividend.add_argument('--source', required=True, help='the source address') + parser_dividend.add_argument('--quantity-per-unit', required=True, help='the quantity of XCP to be paid per whole unit held of ASSET') + parser_dividend.add_argument('--asset', required=True, help='the asset to which pay dividends') + parser_dividend.add_argument('--dividend-asset', required=True, help='asset in which to pay the dividends') + parser_dividend.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + + parser_burn = subparsers.add_parser('burn', help='destroy {} to earn XCP, during an initial period of time') + parser_burn.add_argument('--source', required=True, help='the source address') + parser_burn.add_argument('--quantity', required=True, help=f'quantity of {config.BTC} to be burned') + parser_burn.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + + parser_cancel = subparsers.add_parser('cancel', help='cancel an open order or bet you created') + parser_cancel.add_argument('--source', required=True, help='the source address') + parser_cancel.add_argument('--offer-hash', required=True, help='the transaction hash of the order or bet') + parser_cancel.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + + parser_publish = subparsers.add_parser('publish', help='publish contract code in the blockchain') + parser_publish.add_argument('--source', required=True, help='the source address') + parser_publish.add_argument('--gasprice', required=True, type=int, help='the price of gas') + parser_publish.add_argument('--startgas', required=True, type=int, help=f'the maximum quantity of {config.XCP} to be used to pay for the execution (satoshis)') + parser_publish.add_argument('--endowment', required=True, type=int, help=f'quantity of {config.XCP} to be transfered to the contract (satoshis)') + parser_publish.add_argument('--code-hex', required=True, type=str, help='the hex‐encoded contract (returned by `serpent compile`)') + parser_publish.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + + parser_execute = subparsers.add_parser('execute', help='execute contract code in the blockchain') + parser_execute.add_argument('--source', required=True, help='the source address') + parser_execute.add_argument('--contract-id', required=True, help='the contract ID of the contract to be executed') + parser_execute.add_argument('--gasprice', required=True, type=int, help='the price of gas') + parser_execute.add_argument('--startgas', required=True, type=int, help=f'the maximum quantity of {config.XCP} to be used to pay for the execution (satoshis)') + parser_execute.add_argument('--value', required=True, type=int, help=f'quantity of {config.XCP} to be transfered to the contract (satoshis)') + parser_execute.add_argument('--payload-hex', required=True, type=str, help='data to be provided to the contract (returned by `serpent encode_datalist`)') + parser_execute.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + + parser_destroy = subparsers.add_parser('destroy', help='destroy a quantity of a Counterparty asset') + parser_destroy.add_argument('--source', required=True, help='the source address') + parser_destroy.add_argument('--asset', required=True, help='the ASSET of which you would like to destroy QUANTITY') + parser_destroy.add_argument('--quantity', required=True, help='the quantity of ASSET to destroy') + parser_destroy.add_argument('--tag', default='', help='tag') + parser_destroy.add_argument('--fee', help=f'the exact {config.BTC} fee to be paid to miners') + + parser_address = subparsers.add_parser('balances', help=f'display the balances of a {config.XCP_NAME} address') + parser_address.add_argument('address', help='the address you are interested in') + + parser_asset = subparsers.add_parser('asset', help=f'display the basic properties of a {config.XCP_NAME} asset') + parser_asset.add_argument('asset', help='the asset you are interested in') + + parser_wallet = subparsers.add_parser('wallet', help=f'list the addresses in your backend wallet along with their balances in all {config.XCP_NAME} assets') + + parser_pending = subparsers.add_parser('pending', help=f'list pending order matches awaiting {config.BTC}payment from you') + + parser_getrows = subparsers.add_parser('getrows', help='get rows from a Counterparty table') + parser_getrows.add_argument('--table', required=True, help='table name') + parser_getrows.add_argument('--filter', nargs=3, action='append', help='filters to get specific rows') + parser_getrows.add_argument('--filter-op', choices=['AND', 'OR'], help='operator uses to combine filters', default='AND') + parser_getrows.add_argument('--order-by', help='field used to order results') + parser_getrows.add_argument('--order-dir', choices=['ASC', 'DESC'], help='direction used to order results') + parser_getrows.add_argument('--start-block', help='return only rows with block_index greater than start-block') + parser_getrows.add_argument('--end-block', help='return only rows with block_index lower than end-block') + parser_getrows.add_argument('--status', help='return only rows with the specified status') + parser_getrows.add_argument('--limit', help='number of rows to return', default=100) + parser_getrows.add_argument('--offset', help='number of rows to skip', default=0) + + parser_getrunninginfo = subparsers.add_parser('getinfo', help='get the current state of the server') + + parser_get_tx_info = subparsers.add_parser('get_tx_info', help='display info of a raw TX') + parser_get_tx_info.add_argument('tx_hex', help='the raw TX') + + args = parser.parse_args() + + # Logging + log.set_up(verbose=args.verbose) + logger.propagate = False + + logger.info(f'Running v{APP_VERSION} of {APP_NAME}.') + + # Help message + if args.help: + parser.print_help() + sys.exit() + + # Configuration + clientapi.initialize(testnet=args.testnet, testcoin=args.testcoin, regtest=args.regtest, customnet=args.customnet, + counterparty_rpc_connect=args.counterparty_rpc_connect, counterparty_rpc_port=args.counterparty_rpc_port, + counterparty_rpc_user=args.counterparty_rpc_user, counterparty_rpc_password=args.counterparty_rpc_password, + counterparty_rpc_ssl=args.counterparty_rpc_ssl, counterparty_rpc_ssl_verify=args.counterparty_rpc_ssl_verify, + wallet_name=args.wallet_name, wallet_connect=args.wallet_connect, wallet_port=args.wallet_port, + wallet_user=args.wallet_user, wallet_password=args.wallet_password, + wallet_ssl=args.wallet_ssl, wallet_ssl_verify=args.wallet_ssl_verify, + requests_timeout=args.requests_timeout) + + # MESSAGE CREATION + if args.action in list(messages.MESSAGE_PARAMS.keys()): + unsigned_hex = messages.compose(args.action, args) + logger.info(f'Transaction (unsigned): {unsigned_hex}') + if not args.unsigned: + if script.is_multisig(args.source): + logger.info('Multi‐signature transactions are signed and broadcasted manually.') + + elif input('Sign and broadcast? (y/N) ') == 'y': + + if wallet.is_mine(args.source): + if wallet.is_locked(): + passphrase = getpass.getpass('Enter your wallet passhrase: ') + logger.info('Unlocking wallet for 60 (more) seconds.') + wallet.unlock(passphrase) + signed_tx_hex = wallet.sign_raw_transaction(unsigned_hex) + else: + private_key_wif = input(f'Source address not in wallet. Please enter the private key in WIF format for {args.source}:') + if not private_key_wif: + raise TransactionError('invalid private key') + signed_tx_hex = wallet.sign_raw_transaction(unsigned_hex, private_key_wif=private_key_wif) + + logger.info(f'Transaction (signed): {signed_tx_hex}') + tx_hash = wallet.send_raw_transaction(signed_tx_hex) + logger.info(f'Hash of transaction (broadcasted): {tx_hash}') + + # VIEWING + elif args.action in ['balances', 'asset', 'wallet', 'pending', 'getinfo', 'getrows', 'get_tx_info']: + view = console.get_view(args.action, args) + print_method = getattr(console, f'print_{args.action}', None) + if args.json_output or print_method is None: + util.json_print(view) + else: + print_method(view) + + else: + parser.print_help() + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterparty-cli/counterpartycli/clientapi.py b/counterparty-cli/counterpartycli/clientapi.py new file mode 100755 index 0000000000..bf3014b7fe --- /dev/null +++ b/counterparty-cli/counterpartycli/clientapi.py @@ -0,0 +1,257 @@ +import sys +import logging +import binascii +from urllib.parse import quote_plus as urlencode + +from counterpartylib.lib import config, script +from counterpartycli import util +from counterpartycli import wallet +from counterpartycli import messages +from counterpartycli.messages import get_pubkeys + +logger = logging.getLogger() + +DEFAULT_REQUESTS_TIMEOUT = 5 # seconds + +class ConfigurationError(Exception): + pass + +def initialize(testnet=False, testcoin=False, regtest=True, customnet="", + counterparty_rpc_connect=None, counterparty_rpc_port=None, + counterparty_rpc_user=None, counterparty_rpc_password=None, + counterparty_rpc_ssl=False, counterparty_rpc_ssl_verify=False, + wallet_name=None, wallet_connect=None, wallet_port=None, + wallet_user=None, wallet_password=None, + wallet_ssl=False, wallet_ssl_verify=False, + requests_timeout=DEFAULT_REQUESTS_TIMEOUT): + + def handle_exception(exc_type, exc_value, exc_traceback): + logger.error("Unhandled Exception", exc_info=(exc_type, exc_value, exc_traceback)) + sys.excepthook = handle_exception + + # testnet + config.TESTNET = testnet or False + + config.REGTEST = regtest or False + + if len(customnet) > 0: + config.CUSTOMNET = True + config.REGTEST = True + else: + config.CUSTOMNET = False + + # testcoin + config.TESTCOIN = testcoin or False + + ############## + # THINGS WE CONNECT TO + + # Server host (Bitcoin Core) + config.COUNTERPARTY_RPC_CONNECT = counterparty_rpc_connect or 'localhost' + + # Server RPC port (Bitcoin Core) + if counterparty_rpc_port: + config.COUNTERPARTY_RPC_PORT = counterparty_rpc_port + else: + if config.TESTNET: + config.COUNTERPARTY_RPC_PORT = config.DEFAULT_RPC_PORT_TESTNET + elif config.CUSTOMNET: + config.COUNTERPARTY_RPC_PORT = config.DEFAULT_RPC_PORT_REGTEST + elif config.REGTEST: + config.COUNTERPARTY_RPC_PORT = config.DEFAULT_RPC_PORT_REGTEST + else: + config.COUNTERPARTY_RPC_PORT = config.DEFAULT_RPC_PORT + try: + config.COUNTERPARTY_RPC_PORT = int(config.COUNTERPARTY_RPC_PORT) + if not (int(config.COUNTERPARTY_RPC_PORT) > 1 and int(config.COUNTERPARTY_RPC_PORT) < 65535): + raise ConfigurationError('invalid RPC port number') + except: + raise Exception("Please specific a valid port number counterparty-rpc-port configuration parameter") + + # Server RPC user (Bitcoin Core) + config.COUNTERPARTY_RPC_USER = counterparty_rpc_user or 'rpc' + + # Server RPC password (Bitcoin Core) + if counterparty_rpc_password: + config.COUNTERPARTY_RPC_PASSWORD = counterparty_rpc_password + else: + config.COUNTERPARTY_RPC_PASSWORD = None + + # Server RPC SSL + config.COUNTERPARTY_RPC_SSL = counterparty_rpc_ssl or False # Default to off. + + # Server RPC SSL Verify + config.COUNTERPARTY_RPC_SSL_VERIFY = counterparty_rpc_ssl_verify or False # Default to off (support self‐signed certificates) + + # Construct server URL. + config.COUNTERPARTY_RPC = config.COUNTERPARTY_RPC_CONNECT + ':' + str(config.COUNTERPARTY_RPC_PORT) + if config.COUNTERPARTY_RPC_PASSWORD: + config.COUNTERPARTY_RPC = urlencode(config.COUNTERPARTY_RPC_USER) + ':' + urlencode(config.COUNTERPARTY_RPC_PASSWORD) + '@' + config.COUNTERPARTY_RPC + if config.COUNTERPARTY_RPC_SSL: + config.COUNTERPARTY_RPC = 'https://' + config.COUNTERPARTY_RPC + else: + config.COUNTERPARTY_RPC = 'http://' + config.COUNTERPARTY_RPC + config.COUNTERPARTY_RPC += '/rpc/' + + # BTC Wallet name + config.WALLET_NAME = wallet_name or 'bitcoincore' + + # BTC Wallet host + config.WALLET_CONNECT = wallet_connect or 'localhost' + + # BTC Wallet port + if wallet_port: + config.WALLET_PORT = wallet_port + else: + if config.TESTNET: + config.WALLET_PORT = config.DEFAULT_BACKEND_PORT_TESTNET + elif config.CUSTOMNET: + config.WALLET_PORT = config.DEFAULT_BACKEND_PORT_REGTEST + elif config.REGTEST: + config.WALLET_PORT = config.DEFAULT_BACKEND_PORT_REGTEST + else: + config.WALLET_PORT = config.DEFAULT_BACKEND_PORT + try: + config.WALLET_PORT = int(config.WALLET_PORT) + if not (int(config.WALLET_PORT) > 1 and int(config.WALLET_PORT) < 65535): + raise ConfigurationError('invalid wallet API port number') + except: + raise ConfigurationError("Please specific a valid port number wallet-port configuration parameter") + + # BTC Wallet user + config.WALLET_USER = wallet_user or 'bitcoinrpc' + + # BTC Wallet password + if wallet_password: + config.WALLET_PASSWORD = wallet_password + else: + raise ConfigurationError('wallet RPC password not set. (Use configuration file or --wallet-password=PASSWORD)') + + # BTC Wallet SSL + config.WALLET_SSL = wallet_ssl or False # Default to off. + + # BTC Wallet SSL Verify + config.WALLET_SSL_VERIFY = wallet_ssl_verify or False # Default to off (support self‐signed certificates) + + # Construct BTC wallet URL. + config.WALLET_URL = urlencode(config.WALLET_USER) + ':' + urlencode(config.WALLET_PASSWORD) + '@' + config.WALLET_CONNECT + ':' + str(config.WALLET_PORT) + if config.WALLET_SSL: + config.WALLET_URL = 'https://' + config.WALLET_URL + else: + config.WALLET_URL = 'http://' + config.WALLET_URL + + config.REQUESTS_TIMEOUT = requests_timeout + + # Encoding + if config.TESTCOIN: + config.PREFIX = b'XX' # 2 bytes (possibly accidentally created) + else: + config.PREFIX = b'CNTRPRTY' # 8 bytes + + # (more) Testnet + if config.TESTNET: + config.MAGIC_BYTES = config.MAGIC_BYTES_TESTNET + if config.TESTCOIN: + config.ADDRESSVERSION = config.ADDRESSVERSION_TESTNET + config.P2SH_ADDRESSVERSION = config.P2SH_ADDRESSVERSION_TESTNET + config.BLOCK_FIRST = config.BLOCK_FIRST_TESTNET_TESTCOIN + config.BURN_START = config.BURN_START_TESTNET_TESTCOIN + config.BURN_END = config.BURN_END_TESTNET_TESTCOIN + config.UNSPENDABLE = config.UNSPENDABLE_TESTNET + else: + config.ADDRESSVERSION = config.ADDRESSVERSION_TESTNET + config.P2SH_ADDRESSVERSION = config.P2SH_ADDRESSVERSION_TESTNET + config.BLOCK_FIRST = config.BLOCK_FIRST_TESTNET + config.BURN_START = config.BURN_START_TESTNET + config.BURN_END = config.BURN_END_TESTNET + config.UNSPENDABLE = config.UNSPENDABLE_TESTNET + elif config.CUSTOMNET: + custom_args = customnet.split('|') + + if len(custom_args) == 3: + config.MAGIC_BYTES = config.MAGIC_BYTES_REGTEST + config.ADDRESSVERSION = binascii.unhexlify(custom_args[1]) + config.P2SH_ADDRESSVERSION = binascii.unhexlify(custom_args[2]) + config.BLOCK_FIRST = config.BLOCK_FIRST_REGTEST + config.BURN_START = config.BURN_START_REGTEST + config.BURN_END = config.BURN_END_REGTEST + config.UNSPENDABLE = custom_args[0] + else: + raise "Custom net parameter needs to be like UNSPENDABLE_ADDRESS|ADDRESSVERSION|P2SH_ADDRESSVERSION (version bytes in HH format)" + elif config.REGTEST: + config.MAGIC_BYTES = config.MAGIC_BYTES_REGTEST + if config.TESTCOIN: + config.ADDRESSVERSION = config.ADDRESSVERSION_REGTEST + config.P2SH_ADDRESSVERSION = config.P2SH_ADDRESSVERSION_REGTEST + config.BLOCK_FIRST = config.BLOCK_FIRST_REGTEST_TESTCOIN + config.BURN_START = config.BURN_START_REGTEST_TESTCOIN + config.BURN_END = config.BURN_END_REGTEST_TESTCOIN + config.UNSPENDABLE = config.UNSPENDABLE_REGTEST + else: + config.ADDRESSVERSION = config.ADDRESSVERSION_REGTEST + config.P2SH_ADDRESSVERSION = config.P2SH_ADDRESSVERSION_REGTEST + config.BLOCK_FIRST = config.BLOCK_FIRST_REGTEST + config.BURN_START = config.BURN_START_REGTEST + config.BURN_END = config.BURN_END_REGTEST + config.UNSPENDABLE = config.UNSPENDABLE_REGTEST + else: + config.MAGIC_BYTES = config.MAGIC_BYTES_MAINNET + if config.TESTCOIN: + config.ADDRESSVERSION = config.ADDRESSVERSION_MAINNET + config.P2SH_ADDRESSVERSION = config.P2SH_ADDRESSVERSION_MAINNET + config.BLOCK_FIRST = config.BLOCK_FIRST_MAINNET_TESTCOIN + config.BURN_START = config.BURN_START_MAINNET_TESTCOIN + config.BURN_END = config.BURN_END_MAINNET_TESTCOIN + config.UNSPENDABLE = config.UNSPENDABLE_MAINNET + else: + config.ADDRESSVERSION = config.ADDRESSVERSION_MAINNET + config.P2SH_ADDRESSVERSION = config.P2SH_ADDRESSVERSION_MAINNET + config.BLOCK_FIRST = config.BLOCK_FIRST_MAINNET + config.BURN_START = config.BURN_START_MAINNET + config.BURN_END = config.BURN_END_MAINNET + config.UNSPENDABLE = config.UNSPENDABLE_MAINNET + + +WALLET_METHODS = [ + 'get_wallet_addresses', 'get_btc_balances', 'sign_raw_transaction', + 'get_pubkey', 'is_valid', 'is_mine', 'get_btc_balance', 'send_raw_transaction', + 'wallet', 'asset', 'balances', 'pending', 'is_locked', 'unlock', 'wallet_last_block', + 'sweep' +] + +def call(method, args, pubkey_resolver=None): + """ + Unified function to call Wallet and Server API methods + Should be used by applications like `counterparty-gui` + + :Example: + + import counterpartycli.clientapi + clientapi.initialize(...) + unsigned_hex = clientapi.call('create_send', {...}) + signed_hex = clientapi.call('sign_raw_transaction', unsigned_hex) + tx_hash = clientapi.call('send_raw_transaction', signed_hex) + """ + if method in WALLET_METHODS: + func = getattr(wallet, method) + return func(**args) + else: + if method.startswith('create_'): + # Get provided pubkeys from params. + pubkeys = [] + for address_name in ['source', 'destination']: + if address_name in args: + address = args[address_name] + if script.is_multisig(address) or address_name != 'destination': # We don’t need the pubkey for a mono‐sig destination. + pubkeys += get_pubkeys(address, pubkey_resolver=pubkey_resolver) + args['pubkey'] = pubkeys + + result = util.api(method, args) + + if method.startswith('create_'): + messages.check_transaction(method, args, result) + + return result + + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterparty-cli/counterpartycli/console.py b/counterparty-cli/counterpartycli/console.py new file mode 100755 index 0000000000..8763d11d0d --- /dev/null +++ b/counterparty-cli/counterpartycli/console.py @@ -0,0 +1,121 @@ +import os +from prettytable import PrettyTable +from counterpartycli import wallet, util + +# TODO: inelegant +def get_view(view_name, args): + if view_name == 'balances': + return wallet.balances(args.address) + elif view_name == 'asset': + return wallet.asset(args.asset) + elif view_name == 'wallet': + return wallet.wallet() + elif view_name == 'pending': + return wallet.pending() + elif view_name == 'getinfo': + return util.api('get_running_info') + elif view_name == 'get_tx_info': + return util.api('get_tx_info', {'tx_hex': args.tx_hex}) + elif view_name == 'getrows': + method = f'get_{args.table}' + if args.filter: + filters = [tuple(f) for f in args.filter] + else: + filters = [] + params = { + 'filters': filters, + 'filterop': args.filter_op, + 'order_by': args.order_by, + 'order_dir': args.order_dir, + 'start_block': args.start_block, + 'end_block': args.end_block, + 'status': args.status, + 'limit': args.limit, + 'offset': args.offset + } + return util.api(method, params) + +def print_balances(balances): + lines = [] + lines.append('') + lines.append('Address Balances') + table = PrettyTable(['Asset', 'Amount']) + for asset in balances: + table.add_row([asset, balances[asset]]) + lines.append(table.get_string()) + lines.append('') + print(os.linesep.join(lines)) + +def print_asset(asset): + lines = [] + lines.append('') + lines.append('Asset Details') + table = PrettyTable(header=False, align='l') + table.add_row(['Asset Name:', asset['asset']]) + table.add_row(['Asset ID:', asset['asset_id']]) + table.add_row(['Divisible:', asset['divisible']]) + table.add_row(['Locked:', asset['locked']]) + table.add_row(['Supply:', asset['supply']]) + table.add_row(['Issuer:', asset['issuer']]) + table.add_row(['Description:', '‘' + asset['description'] + '’']) + table.add_row(['Balance:', asset['balance']]) + lines.append(table.get_string()) + + if asset['addresses']: + lines.append('') + lines.append('Wallet Balances') + table = PrettyTable(['Address', 'Balance']) + for address in asset['addresses']: + balance = asset['addresses'][address] + table.add_row([address, balance]) + lines.append(table.get_string()) + + if asset['sends']: + lines.append('') + lines.append('Wallet Sends and Receives') + table = PrettyTable(['Type', 'Quantity', 'Source', 'Destination']) + for send in asset['sends']: + table.add_row([send['type'], send['quantity'], send['source'], send['destination']]) + lines.append(table.get_string()) + + lines.append('') + print(os.linesep.join(lines)) + +def print_wallet(wallet): + lines = [] + for address in wallet['addresses']: + table = PrettyTable(['Asset', 'Balance']) + for asset in wallet['addresses'][address]: + balance = wallet['addresses'][address][asset] + table.add_row([asset, balance]) + lines.append(address) + lines.append(table.get_string()) + lines.append('') + total_table = PrettyTable(['Asset', 'Balance']) + for asset in wallet['assets']: + balance = wallet['assets'][asset] + total_table.add_row([asset, balance]) + lines.append('TOTAL') + lines.append(total_table.get_string()) + lines.append('') + print(os.linesep.join(lines)) + +def print_pending(awaiting_btcs): + table = PrettyTable(['Matched Order ID', 'Time Left']) + for order_match in awaiting_btcs: + order_match = format_order_match(order_match) + table.add_row(order_match) + print(table) + +def print_getrows(rows): + if len(rows) > 0: + headers = list(rows[0].keys()) + table = PrettyTable(headers) + for row in rows: + values = list(row.values()) + table.add_row(values) + print(table) + else: + print("No result.") + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterparty-cli/counterpartycli/messages.py b/counterparty-cli/counterpartycli/messages.py new file mode 100755 index 0000000000..c486fda64a --- /dev/null +++ b/counterparty-cli/counterpartycli/messages.py @@ -0,0 +1,296 @@ +import logging +from decimal import Decimal as D +import binascii +from math import ceil +import time +import calendar +import dateutil.parser + +from counterpartylib.lib import script, config, blocks, exceptions, api, transaction +from counterpartylib.lib.util import make_id, BET_TYPE_NAME, BET_TYPE_ID, dhash +from counterpartylib.lib.ledger import generate_asset_name +from counterpartylib.lib.kickstart.utils import ib2h +from counterpartycli import util +from counterpartycli import wallet + +import bitcoin as bitcoinlib + +MESSAGE_PARAMS = { + 'send': ['source', 'destination', 'asset', 'quantity', 'memo', 'memo_is_hex', 'use_enhanced_send'], + 'sweep': ['source', 'destination', 'flags', 'memo'], + 'dispenser': ['source', 'asset', 'give_quantity', 'mainchainrate', 'escrow_quantity', 'status', 'open_address'], + 'order': ['source', 'give_asset', 'give_quantity', 'get_asset', 'get_quantity', 'expiration', 'fee_required', 'fee_provided'], + 'btcpay': ['source', 'order_match_id'], + 'issuance': ['source', 'asset', 'quantity', 'divisible', 'description', 'transfer_destination'], + 'broadcast': ['source', 'fee_fraction', 'text', 'timestamp', 'value'], + 'bet': ['source', 'feed_address', 'bet_type','deadline', 'wager_quantity', 'counterwager_quantity', 'expiration', 'target_value', 'leverage'], + 'dividend': ['source', 'quantity_per_unit', 'asset', 'dividend_asset'], + 'burn': ['source', 'quantity'], + 'cancel': ['source', 'offer_hash'], + 'rps': ['source', 'possible_moves', 'wager', 'move_random_hash', 'expiration'], + 'rpsresolve': ['source', 'random', 'move', 'rps_match_id'], + 'publish': ['source', 'gasprice', 'startgas', 'endowment','code_hex'], + 'execute': ['source', 'contract_id', 'gasprice', 'startgas', 'value', 'payload_hex'], + 'destroy': ['source', 'asset', 'quantity', 'tag'] +} + +class InputError(Exception): + pass +class ArgumentError(Exception): + pass + +class MessageArgs: + def __init__(self, dict_args): + self.__dict__.update(dict_args) + +def input_pubkey(address): + input_message = f'Public keys (hexadecimal) or Private key (Wallet Import Format) for `{address}`: ' + return input(input_message) + +def get_pubkey_monosig(pubkeyhash, pubkey_resolver=input_pubkey): + if wallet.is_valid(pubkeyhash): + + # If in wallet, get from wallet. + logging.debug(f'Looking for public key for `{pubkeyhash}` in wallet.') + if wallet.is_mine(pubkeyhash): + pubkey = wallet.get_pubkey(pubkeyhash) + if pubkey: + return pubkey + logging.debug(f'Public key for `{pubkeyhash}` not found in wallet.') + + # If in blockchain (and not in wallet), get from blockchain. + logging.debug(f'Looking for public key for `{pubkeyhash}` in blockchain.') + try: + pubkey = util.api('search_pubkey', {'pubkeyhash': pubkeyhash, 'provided_pubkeys': None}) + except util.RPCError as e: + pubkey = None + if pubkey: + return pubkey + logging.debug(f'Public key for `{pubkeyhash}` not found in blockchain.') + + # If not in wallet and not in blockchain, get from user. + answer = pubkey_resolver(pubkeyhash) + if not answer: + return None + + # Public Key or Private Key? + is_fully_valid_pubkey = True + try: + is_fully_valid_pubkey = script.is_fully_valid(binascii.unhexlify(answer)) + except binascii.Error: + is_fully_valid_pubkey = False + if is_fully_valid_pubkey: + logging.debug('Answer was a fully valid public key.') + pubkey = answer + else: + logging.debug('Answer was not a fully valid public key. Assuming answer was a private key.') + private_key = answer + try: + pubkey = script.private_key_to_public_key(private_key) + except script.AltcoinSupportError: + raise InputError('invalid private key') + if pubkeyhash != script.pubkey_to_pubkeyhash(binascii.unhexlify(bytes(pubkey, 'utf-8'))): + raise InputError('provided public or private key does not match the source address') + + return pubkey + + return None + +def get_pubkeys(address, pubkey_resolver=input_pubkey): + pubkeys = [] + if script.is_multisig(address): + _, pubs, _ = script.extract_array(address) + for pub in pubs: + pubkey = get_pubkey_monosig(pub, pubkey_resolver=pubkey_resolver) + if pubkey: + pubkeys.append(pubkey) + else: + pubkey = get_pubkey_monosig(address, pubkey_resolver=pubkey_resolver) + if pubkey: + pubkeys.append(pubkey) + return pubkeys + +def common_args(args): + return { + 'fee': args.fee, + 'allow_unconfirmed_inputs': args.unconfirmed, + 'encoding': args.encoding, + 'fee_per_kb': args.fee_per_kb, + 'regular_dust_size': args.regular_dust_size, + 'multisig_dust_size': args.multisig_dust_size, + 'op_return_value': args.op_return_value, + 'dust_return_pubkey': args.dust_return_pubkey, + 'disable_utxo_locks': args.disable_utxo_locks + } + +def prepare_args(args, action): + # Convert. + args.fee_per_kb = int(args.fee_per_kb * config.UNIT) + args.regular_dust_size = int(args.regular_dust_size * config.UNIT) + args.multisig_dust_size = int(args.multisig_dust_size * config.UNIT) + args.op_return_value = int(args.op_return_value * config.UNIT) + + # common + if args.fee: + args.fee = util.value_in(args.fee, config.BTC) + + # send + if action == 'send': + args.quantity = util.value_in(args.quantity, args.asset) + + # sweep + if action == 'sweep': + args.flags = int(args.flags) + + # dispenser + if action == 'dispenser': + args.status = int(args.status) + args.give_quantity = util.value_in(args.give_quantity, args.asset) + args.escrow_quantity = util.value_in(args.escrow_quantity, args.asset) + args.mainchainrate = util.value_in(args.mainchainrate, config.BTC) + + # order + if action == 'order': + fee_required, fee_fraction_provided = D(args.fee_fraction_required), D(args.fee_fraction_provided) + give_quantity, get_quantity = D(args.give_quantity), D(args.get_quantity) + + # Fee argument is either fee_required or fee_provided, as necessary. + if args.give_asset == config.BTC: + args.fee_required = 0 + fee_fraction_provided = util.value_in(fee_fraction_provided, 'fraction') + args.fee_provided = round(D(fee_fraction_provided) * D(give_quantity) * D(config.UNIT)) + print(f'Fee provided: {util.value_out(args.fee_provided, config.BTC)} {config.BTC}') + elif args.get_asset == config.BTC: + args.fee_provided = 0 + fee_fraction_required = util.value_in(args.fee_fraction_required, 'fraction') + args.fee_required = round(D(fee_fraction_required) * D(get_quantity) * D(config.UNIT)) + print(f'Fee required: {util.value_out(args.fee_required, config.BTC)} {config.BTC}') + else: + args.fee_required = 0 + args.fee_provided = 0 + + args.give_quantity = util.value_in(give_quantity, args.give_asset) + args.get_quantity = util.value_in(get_quantity, args.get_asset) + + # issuance + if action == 'issuance': + args.quantity = util.value_in(args.quantity, None, divisible=args.divisible) + + # broadcast + if action == 'broadcast': + args.value = util.value_in(args.value, 'value') + args.fee_fraction = util.value_in(args.fee_fraction, 'fraction') + args.timestamp = int(time.time()) + + # bet + if action == 'bet': + args.deadline = calendar.timegm(dateutil.parser.parse(args.deadline).utctimetuple()) + args.wager = util.value_in(args.wager, config.XCP) + args.counterwager = util.value_in(args.counterwager, config.XCP) + args.target_value = util.value_in(args.target_value, 'value') + args.leverage = util.value_in(args.leverage, 'leverage') + args.bet_type = BET_TYPE_ID[args.bet_type] + + # dividend + if action == 'dividend': + args.quantity_per_unit = util.value_in(args.quantity_per_unit, config.XCP) + + # burn + if action == 'burn': + args.quantity = util.value_in(args.quantity, config.BTC) + + # execute + if action == 'execute': + args.value = util.value_in(args.value, 'XCP') + args.startgas = util.value_in(args.startgas, 'XCP') + + # destroy + if action == 'destroy': + args.quantity = util.value_in(args.quantity, args.asset) + + # RPS + if action == 'rps': + def generate_move_random_hash(move): + move = int(move).to_bytes(2, byteorder='big') + random_bin = os.urandom(16) + move_random_hash_bin = dhash(random_bin + move) + return binascii.hexlify(random_bin).decode('utf8'), binascii.hexlify(move_random_hash_bin).decode('utf8') + + args.wager = util.value_in(args.wager, 'XCP') + random, move_random_hash = generate_move_random_hash(args.move) + setattr(args, 'move_random_hash', move_random_hash) + print(f'random: {random}') + print(f'move_random_hash: {move_random_hash}') + + return args + +def extract_args(args, keys): + params = {} + dargs = vars(args) + for key in keys: + if key in dargs: + params[key] = dargs[key] + return params + +def get_input_value(tx_hex): + unspents = wallet.list_unspent() + ctx = bitcoinlib.core.CTransaction.deserialize(binascii.unhexlify(tx_hex)) + + inputs_value = 0 + for vin in ctx.vin: + vin_tx_hash = ib2h(vin.prevout.hash) + vout_n = vin.prevout.n + found = False + for output in unspents: + if output['txid'] == vin_tx_hash and output['vout'] == vout_n: + inputs_value += int(output['amount'] * config.UNIT) + found = True + if not found: + raise exceptions.TransactionError('input not found in wallet list unspents') + + return inputs_value + +def check_transaction(method, params, tx_hex): + tx_info = transaction.check_outputs(method, params, tx_hex) + input_value = get_input_value(tx_hex) + fee = input_value - tx_info['total_value'] + fee_per_kb = params['fee_per_kb'] if 'fee_per_kb' in params else config.DEFAULT_FEE_PER_KB + + if 'fee' in params and params['fee']: + necessary_fee = params['fee'] + else: + necessary_fee = ceil(((len(tx_hex) / 2) / 1024)) * fee_per_kb # TODO + + if fee > necessary_fee: + raise exceptions.TransactionError(f'Incorrect fee ({fee} > {necessary_fee})') + +def compose_transaction(args, message_name, param_names): + args = prepare_args(args, message_name) + common_params = common_args(args) + params = extract_args(args, param_names) + params.update(common_params) + + # Get provided pubkeys from params. + pubkeys = [] + for address_name in ['source', 'destination']: + if address_name in params: + address = params[address_name] + if not script.is_p2sh(address) and (script.is_multisig(address) or address_name != 'destination'): # We don’t need the pubkey for a mono‐sig destination. + pubkeys += get_pubkeys(address) + params['pubkey'] = pubkeys + + method = f'create_{message_name}' + unsigned_tx_hex = util.api(method, params) + + # check_transaction(method, params, unsigned_tx_hex) + + return unsigned_tx_hex + +def compose(message, args): + if message in MESSAGE_PARAMS: + param_names = MESSAGE_PARAMS[message] + return compose_transaction(args, message, param_names) + else: + raise ArgumentError('Invalid message name') + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterparty-cli/counterpartycli/server.py b/counterparty-cli/counterpartycli/server.py new file mode 100755 index 0000000000..b0a9b6bcc3 --- /dev/null +++ b/counterparty-cli/counterpartycli/server.py @@ -0,0 +1,195 @@ +#! /usr/bin/env python3 + +import os +import sys +import argparse +import logging + + +from termcolor import cprint + +from counterpartylib.lib import log +from counterpartylib import server +from counterpartylib.lib import config +from counterpartycli.util import add_config_arguments, bootstrap +from counterpartycli.setup import generate_config_files +from counterpartycli import APP_VERSION + + +logger = logging.getLogger(config.LOGGER_NAME) + +APP_NAME = 'counterparty-server' + +CONFIG_ARGS = [ + [('-v', '--verbose'), {'dest': 'verbose', 'action': 'store_true', 'default': False, 'help': 'sets log level to DEBUG'}], + [('--quiet',), {'dest': 'quiet', 'action': 'store_true', 'default': False, 'help': 'sets log level to ERROR'}], + [('--testnet',), {'action': 'store_true', 'default': False, 'help': f'use {config.BTC_NAME} testnet addresses and block numbers'}], + [('--testcoin',), {'action': 'store_true', 'default': False, 'help': f'use the test {config.XCP_NAME} network on every blockchain'}], + [('--regtest',), {'action': 'store_true', 'default': False, 'help': f'use {config.BTC_NAME} regtest addresses and block numbers'}], + [('--customnet',), {'default': '', 'help': 'use a custom network (specify as UNSPENDABLE_ADDRESS|ADDRESSVERSION|P2SH_ADDRESSVERSION with version bytes in HH hex format)'}], + [('--api-limit-rows',), {'type': int, 'default': 1000, 'help': 'limit api calls to the set results (defaults to 1000). Setting to 0 removes the limit.'}], + [('--backend-name',), {'default': 'addrindex', 'help': 'the backend name to connect to'}], + [('--backend-connect',), {'default': 'localhost', 'help': 'the hostname or IP of the backend server'}], + [('--backend-port',), {'type': int, 'help': 'the backend port to connect to'}], + [('--backend-user',), {'default': 'bitcoinrpc', 'help': 'the username used to communicate with backend'}], + [('--backend-password',), {'help': 'the password used to communicate with backend'}], + [('--backend-ssl',), {'action': 'store_true', 'default': False, 'help': 'use SSL to connect to backend (default: false)'}], + [('--backend-ssl-no-verify',), {'action': 'store_true', 'default': False, 'help': 'verify SSL certificate of backend; disallow use of self‐signed certificates (default: true)'}], + [('--backend-poll-interval',), {'type': float, 'default': 0.5, 'help': 'poll interval, in seconds (default: 0.5)'}], + [('--no-check-asset-conservation',), {'action': 'store_true', 'default': False, 'help': 'Skip asset conservation checking (default: false)'}], + [('--p2sh-dust-return-pubkey',), {'help': 'pubkey to receive dust when multisig encoding is used for P2SH source (default: none)'}], + + [('--indexd-connect',), {'default': 'localhost', 'help': 'the hostname or IP of the indexd server'}], + [('--indexd-port',), {'type': int, 'help': 'the indexd server port to connect to'}], + + [('--rpc-host',), {'default': 'localhost', 'help': 'the IP of the interface to bind to for providing JSON-RPC API access (0.0.0.0 for all interfaces)'}], + [('--rpc-port',), {'type': int, 'help': f'port on which to provide the {config.APP_NAME} JSON-RPC API'}], + [('--rpc-user',), {'default': 'rpc', 'help': f'required username to use the {config.APP_NAME} JSON-RPC API (via HTTP basic auth)'}], + [('--rpc-password',), {'help':f'required password (for rpc-user) to use the {config.APP_NAME} JSON-RPC API (via HTTP basic auth)'}], + [('--rpc-no-allow-cors',), {'action': 'store_true', 'default': False, 'help': 'allow ajax cross domain request'}], + [('--rpc-batch-size',), {'type': int, 'default': config.DEFAULT_RPC_BATCH_SIZE, 'help': f'number of RPC queries by batch (default: {config.DEFAULT_RPC_BATCH_SIZE})'}], + [('--requests-timeout',), {'type': int, 'default': config.DEFAULT_REQUESTS_TIMEOUT, 'help': 'timeout value (in seconds) used for all HTTP requests (default: 5)'}], + + [('--force',), {'action': 'store_true', 'default': False, 'help': 'skip backend check, version check, process lock (NOT FOR USE ON PRODUCTION SYSTEMS)'}], + [('--database-file',), {'default': None, 'help': 'the path to the SQLite3 database file'}], + [('--log-file',), {'nargs': '?', 'const': None, 'default': False, 'help': 'log to the specified file'}], + [('--api-log-file',), {'nargs': '?', 'const': None, 'default': False, 'help': 'log API requests to the specified file'}], + [('--no-log-files',), {'action': 'store_true', 'default': False, 'help': 'Don\'t write log files'}], + + [('--utxo-locks-max-addresses',), {'type': int, 'default': config.DEFAULT_UTXO_LOCKS_MAX_ADDRESSES, 'help': 'max number of addresses for which to track UTXO locks'}], + [('--utxo-locks-max-age',), {'type': int, 'default': config.DEFAULT_UTXO_LOCKS_MAX_AGE, 'help': 'how long to keep a lock on a UTXO being tracked'}], +] + +COMMANDS_WITH_DB = ['reparse', 'rollback', 'start', 'vacuum', 'check-db'] + +class VersionError(Exception): + pass +def main(): + cprint(f'Running v{config.__version__} of {config.FULL_APP_NAME}.', 'magenta') + + if os.name == 'nt': + from counterpartylib.lib import util_windows + #patch up cmd.exe's "challenged" (i.e. broken/non-existent) UTF-8 logging + util_windows.fix_win32_unicode() + + # Post installation tasks + generate_config_files() + + # Parse command-line arguments. + parser = argparse.ArgumentParser(prog=APP_NAME, description=f'Server for the {config.XCP_NAME} protocol', add_help=False) + parser.add_argument('-h', '--help', dest='help', action='store_true', help='show this help message and exit') + parser.add_argument('-V', '--version', action='version', version=f"{APP_NAME} v{APP_VERSION}; counterparty-lib v{config.VERSION_STRING}") + parser.add_argument('--config-file', help='the path to the configuration file') + + add_config_arguments(parser, CONFIG_ARGS, 'server.conf') + + subparsers = parser.add_subparsers(dest='action', help='the action to be taken') + + parser_server = subparsers.add_parser('start', help='run the server') + + parser_reparse = subparsers.add_parser('reparse', help='reparse all transactions in the database') + parser_reparse.add_argument('block_index', type=int, help='the index of the last known good block') + + parser_vacuum = subparsers.add_parser('vacuum', help='VACUUM the database (to improve performance)') + + parser_rollback = subparsers.add_parser('rollback', help='rollback database') + parser_rollback.add_argument('block_index', type=int, help='the index of the last known good block') + + parser_kickstart = subparsers.add_parser('kickstart', help='rapidly build database by reading from Bitcoin Core blockchain') + parser_kickstart.add_argument('--bitcoind-dir', help='Bitcoin Core data directory') + parser_kickstart.add_argument('--max-queue-size', type=int, help='Size of the multiprocessing.Queue for parsing blocks') + parser_kickstart.add_argument('--debug-block', type=int, help='Rollback and run kickstart for a single block;') + + subparsers.add_parser('bootstrap', help='bootstrap database with hosted snapshot') + + subparsers.add_parser('check-db', help='do an integrity check on the database') + + subparsers.add_parser('show-config', help='Show counterparty-server configuration') + + args = parser.parse_args() + + # Help message + if args.help: + parser.print_help() + exit(0) + + # Configuration + init_args = dict(database_file=args.database_file, + log_file=args.log_file, api_log_file=args.api_log_file, no_log_files=args.no_log_files, + testnet=args.testnet, testcoin=args.testcoin, regtest=args.regtest, + customnet=args.customnet, + api_limit_rows=args.api_limit_rows, + backend_name=args.backend_name, + backend_connect=args.backend_connect, + backend_port=args.backend_port, + backend_user=args.backend_user, + backend_password=args.backend_password, + backend_ssl=args.backend_ssl, + backend_ssl_no_verify=args.backend_ssl_no_verify, + backend_poll_interval=args.backend_poll_interval, + indexd_connect=args.indexd_connect, indexd_port=args.indexd_port, + rpc_host=args.rpc_host, rpc_port=args.rpc_port, rpc_user=args.rpc_user, + rpc_password=args.rpc_password, rpc_no_allow_cors=args.rpc_no_allow_cors, + requests_timeout=args.requests_timeout, + rpc_batch_size=args.rpc_batch_size, + check_asset_conservation=not args.no_check_asset_conservation, + force=args.force, verbose=args.verbose, quiet=args.quiet, + p2sh_dust_return_pubkey=args.p2sh_dust_return_pubkey, + utxo_locks_max_addresses=args.utxo_locks_max_addresses, + utxo_locks_max_age=args.utxo_locks_max_age) + + if args.action in COMMANDS_WITH_DB: + # server.initialise_config() is called in server.initialise() + db = server.initialise(**init_args) + else: + server.initialise_config(**init_args) + + # set up logging + log.set_up( + verbose=config.VERBOSE, + quiet=config.QUIET, + log_file=config.LOG, + log_in_console=args.action == 'start' + ) + logger.info(f'Running v{APP_VERSION} of {APP_NAME}.') + + # print some info + if config.LOG: + cprint(f'Writing log to file: `{config.LOG}`', 'light_grey') + if args.action == 'start' and config.API_LOG: + cprint(f'Writing API accesses log to file: `{config.API_LOG}`', 'light_grey') + cprint(f"{'-' * 30} {args.action} {'-' * 30}\n", 'green') + + # Bootstrapping + if args.action == 'bootstrap': + bootstrap(testnet=args.testnet) + + # PARSING + elif args.action == 'reparse': + server.reparse(db, block_index=args.block_index) + + elif args.action == 'rollback': + server.rollback(db, block_index=args.block_index) + + elif args.action == 'kickstart': + server.kickstart( + bitcoind_dir=args.bitcoind_dir, + force=args.force, + max_queue_size=args.max_queue_size, + debug_block=args.debug_block) + + elif args.action == 'start': + server.start_all(db) + + elif args.action == 'show-config': + server.show_config() + + elif args.action == 'vacuum': + server.vacuum(db) + + elif args.action == 'check-db': + server.check_database(db) + else: + parser.print_help() + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterparty-cli/counterpartycli/setup.py b/counterparty-cli/counterpartycli/setup.py new file mode 100644 index 0000000000..00b5a4e371 --- /dev/null +++ b/counterparty-cli/counterpartycli/setup.py @@ -0,0 +1,228 @@ +#!/usr/bin/env python + +import os, sys +import shutil +import ctypes.util +import configparser, platform +import urllib.request +import tarfile, zipfile +import appdirs +import hashlib +from decimal import Decimal as D + +# generate commented config file from arguments list (client.CONFIG_ARGS and server.CONFIG_ARGS) and known values +def generate_config_file(filename, config_args, known_config={}, overwrite=False): + if not overwrite and os.path.exists(filename): + return + + config_dir = os.path.dirname(os.path.abspath(filename)) + if not os.path.exists(config_dir): + os.makedirs(config_dir, mode=0o755) + + config_lines = [] + config_lines.append('[Default]') + config_lines.append('') + + for arg in config_args: + key = arg[0][-1].replace('--', '') + value = None + + if key in known_config: + value = known_config[key] + elif 'default' in arg[1]: + value = arg[1]['default'] + + if value is None: + value = '' + elif isinstance(value, bool): + value = '1' if value else '0' + elif isinstance(value, (float, D)): + value = format(value, '.8f') + + if 'default' in arg[1] or value == '': + key = f'# {key}' + + config_lines.append(f"{key} = {value}\t\t\t\t# {arg[1]['help']}") + + with open(filename, 'w', encoding='utf8') as config_file: + config_file.writelines("\n".join(config_lines)) + # user and group have "rw" access + os.chmod(filename, 0o660) # nosec B103 + +def extract_old_config(): + old_config = {} + + old_appdir = appdirs.user_config_dir(appauthor='Counterparty', appname='counterpartyd', roaming=True) + old_configfile = os.path.join(old_appdir, 'counterpartyd.conf') + + if os.path.exists(old_configfile): + configfile = configparser.SafeConfigParser(allow_no_value=True, inline_comment_prefixes=('#', ';')) + configfile.read(old_configfile) + if 'Default' in configfile: + for key in configfile['Default']: + new_key = key.replace('backend-rpc-', 'backend-') + new_key = new_key.replace('blockchain-service-name', 'backend-name') + new_value = configfile['Default'][key].replace('jmcorgan', 'addrindex') + old_config[new_key] = new_value + + return old_config + +def extract_bitcoincore_config(): + bitcoincore_config = {} + + # Figure out the path to the bitcoin.conf file + if platform.system() == 'Darwin': + btc_conf_file = os.path.expanduser('~/Library/Application Support/Bitcoin/') + elif platform.system() == 'Windows': + btc_conf_file = os.path.join(os.environ['APPDATA'], 'Bitcoin') + else: + btc_conf_file = os.path.expanduser('~/.bitcoin') + btc_conf_file = os.path.join(btc_conf_file, 'bitcoin.conf') + + # Extract contents of bitcoin.conf to build service_url + if os.path.exists(btc_conf_file): + conf = {} + with open(btc_conf_file, 'r') as fd: + # Bitcoin Core accepts empty rpcuser, not specified in btc_conf_file + for line in fd.readlines(): + if '#' in line or '=' not in line: + continue + k, v = line.split('=', 1) + conf[k.strip()] = v.strip() + + config_keys = { + 'rpcport': 'backend-port', + 'rpcuser': 'backend-user', + 'rpcpassword': 'backend-password', + 'rpcssl': 'backend-ssl' + } + + for bitcoind_key in config_keys: + if bitcoind_key in conf: + counterparty_key = config_keys[bitcoind_key] + bitcoincore_config[counterparty_key] = conf[bitcoind_key] + + return bitcoincore_config + +def get_server_known_config(): + server_known_config = {} + + bitcoincore_config = extract_bitcoincore_config() + server_known_config.update(bitcoincore_config) + + old_config = extract_old_config() + server_known_config.update(old_config) + + return server_known_config + +# generate client config from server config +def server_to_client_config(server_config): + client_config = {} + + config_keys = { + 'backend-connect': 'wallet-connect', + 'backend-port': 'wallet-port', + 'backend-user': 'wallet-user', + 'backend-password': 'wallet-password', + 'backend-ssl': 'wallet-ssl', + 'backend-ssl-verify': 'wallet-ssl-verify', + 'rpc-host': 'counterparty-rpc-connect', + 'rpc-port': 'counterparty-rpc-port', + 'rpc-user': 'counterparty-rpc-user', + 'rpc-password': 'counterparty-rpc-password' + } + + for server_key in config_keys: + if server_key in server_config: + client_key = config_keys[server_key] + client_config[client_key] = server_config[server_key] + + return client_config + +def generate_config_files(): + from counterpartycli.server import CONFIG_ARGS as SERVER_CONFIG_ARGS + from counterpartycli.client import CONFIG_ARGS as CLIENT_CONFIG_ARGS + from counterpartylib.lib import config, util + + configdir = appdirs.user_config_dir(appauthor=config.XCP_NAME, appname=config.APP_NAME, roaming=True) + + server_configfile = os.path.join(configdir, 'server.conf') + if not os.path.exists(server_configfile): + # extract known configuration + server_known_config = get_server_known_config() + generate_config_file(server_configfile, SERVER_CONFIG_ARGS, server_known_config) + + client_configfile = os.path.join(configdir, 'client.conf') + if not os.path.exists(client_configfile): + client_known_config = server_to_client_config(server_known_config) + generate_config_file(client_configfile, CLIENT_CONFIG_ARGS, client_known_config) + +def zip_folder(folder_path, zip_path): + zip_file = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) + for root, dirs, files in os.walk(folder_path): + for a_file in files: + zip_file.write(os.path.join(root, a_file)) + zip_file.close() + +def before_py2exe_build(win_dist_dir): + # Clean previous build + if os.path.exists(win_dist_dir): + shutil.rmtree(win_dist_dir) + # py2exe don't manages entry_points + for exe_name in ['client', 'server']: + shutil.copy(f'counterpartycli/__init__.py', 'counterparty-{exe_name}.py') + with open(f'counterparty-{exe_name}.py', 'a') as fp: + fp.write(f'{exe_name}_main()') + # Hack + src = 'C:\\Python34\\Lib\\site-packages\\flask_httpauth.py' + dst = 'C:\\Python34\\Lib\\site-packages\\flask\\ext\\httpauth.py' + shutil.copy(src, dst) + +def after_py2exe_build(win_dist_dir): + # clean temporaries scripts + for exe_name in ['client', 'server']: + os.remove(f'counterparty-{exe_name}.py') + # py2exe copies only pyc files in site-packages.zip + # modules with no pyc files must be copied in 'dist/library/' + import counterpartylib, certifi + additionals_modules = [counterpartylib, certifi] + for module in additionals_modules: + moudle_file = os.path.dirname(module.__file__) + dest_file = os.path.join(win_dist_dir, 'library', module.__name__) + shutil.copytree(moudle_file, dest_file) + # additionals DLLs + dlls = ['ssleay32.dll', 'libssl32.dll', 'libeay32.dll'] + dlls.append(ctypes.util.find_msvcrt()) + dlls_path = dlls + for dll in dlls: + dll_path = ctypes.util.find_library(dll) + shutil.copy(dll_path, win_dist_dir) + + # compress distribution folder + zip_path = f'{win_dist_dir}.zip' + zip_folder(win_dist_dir, zip_path) + + # Open,close, read file and calculate MD5 on its contents + with open(zip_path, 'rb') as zip_file: + data = zip_file.read() + md5 = hashlib.md5(data, usedforsecurity=False).hexdigest() + + # include MD5 in the zip name + new_zip_path = f'{win_dist_dir}-{md5}.zip' + os.rename(zip_path, new_zip_path) + + # clean build folder + shutil.rmtree(win_dist_dir) + + # Clean Hack + os.remove('C:\\Python34\\Lib\\site-packages\\flask\\ext\\httpauth.py') + + +# Download bootstrap database +def bootstrap(overwrite=True, ask_confirmation=False): + if ask_confirmation: + question = 'Would you like to bootstrap your local Counterparty database from `https://s3.amazonaws.com/counterparty-bootstrap/`? (y/N): ' + if input(question).lower() != 'y': + return + util.bootstrap(testnet=False) + util.bootstrap(testnet=True) diff --git a/counterparty-cli/counterpartycli/util.py b/counterparty-cli/counterpartycli/util.py new file mode 100644 index 0000000000..0d78706a2b --- /dev/null +++ b/counterparty-cli/counterpartycli/util.py @@ -0,0 +1,242 @@ +#! /usr/bin/python3 + +import sys +import os +import threading +import decimal +import time +import json +import re +import requests +import collections +import logging +import binascii +from datetime import datetime +from dateutil.tz import tzlocal +import argparse +import configparser +import appdirs +import tarfile +import urllib.request +import shutil +import codecs +import tempfile + +from halo import Halo +from termcolor import colored, cprint + +from counterpartylib import server +from counterpartylib.lib import config, check +from counterpartylib.lib.util import value_input, value_output + +logger = logging.getLogger(config.LOGGER_NAME) +D = decimal.Decimal + +OK_GREEN = colored("[OK]", "green") +SPINNER_STYLE = "bouncingBar" + +rpc_sessions = {} + +class JsonDecimalEncoder(json.JSONEncoder): + def default(self, o): + if isinstance(o, D): + return str(o) + return super(JsonDecimalEncoder, self).default(o) + + +json_dump = lambda x: json.dumps(x, sort_keys=True, indent=4, cls=JsonDecimalEncoder) +json_print = lambda x: print(json_dump(x)) + +class RPCError(Exception): + pass +class AssetError(Exception): + pass + +def rpc(url, method, params=None, ssl_verify=False, tries=1): + headers = {'content-type': 'application/json'} + payload = { + "method": method, + "params": params, + "jsonrpc": "2.0", + "id": 0, + } + + if url not in rpc_sessions: + rpc_session = requests.Session() + rpc_sessions[url] = rpc_session + else: + rpc_session = rpc_sessions[url] + + response = None + for i in range(tries): + try: + response = rpc_session.post(url, data=json.dumps(payload), headers=headers, verify=ssl_verify, timeout=config.REQUESTS_TIMEOUT) + if i > 0: + logger.debug('Successfully connected.') + break + except requests.exceptions.SSLError as e: + raise e + except requests.exceptions.Timeout as e: + raise e + except requests.exceptions.ConnectionError: + logger.debug(f'Could not connect to {url}. (Try {i+1}/{tries})') + time.sleep(5) + + if response == None: + raise RPCError(f'Cannot communicate with {url}.') + elif response.status_code not in (200, 500): + raise RPCError(str(response.status_code) + ' ' + response.reason + ' ' + response.text) + + # Return result, with error handling. + response_json = response.json() + if 'error' not in response_json.keys() or response_json['error'] == None: + return response_json['result'] + else: + raise RPCError(f"{response_json['error']}") + +def api(method, params=None): + return rpc(config.COUNTERPARTY_RPC, method, params=params, ssl_verify=config.COUNTERPARTY_RPC_SSL_VERIFY) + +def wallet_api(method, params=None): + return rpc(config.WALLET_URL, method, params=params, ssl_verify=config.WALLET_SSL_VERIFY) + +def is_divisible(asset): + if asset in (config.BTC, config.XCP, 'leverage', 'value', 'fraction', 'price', 'odds'): + return True + else: + sql = '''SELECT * FROM issuances WHERE (status = ? AND asset = ?)''' + bindings = ['valid', asset] + issuances = api('sql', {'query': sql, 'bindings': bindings}) + + if not issuances: raise AssetError(f'No such asset: {asset}') + return issuances[0]['divisible'] + +def value_in(quantity, asset, divisible=None): + if divisible is None: + divisible = is_divisible(asset) + return value_input(quantity, asset, divisible) + +def value_out(quantity, asset, divisible=None): + if divisible is None: + divisible = is_divisible(asset) + return value_output(quantity, asset, divisible) + + +def bootstrap(testnet=False, overwrite=True): + data_dir = appdirs.user_data_dir(appauthor=config.XCP_NAME, appname=config.APP_NAME, roaming=True) + + # Set Constants. + bootstrap_url = config.BOOTSTRAP_URL_TESTNET if testnet else config.BOOTSTRAP_URL_MAINNET + tar_filename = os.path.basename(bootstrap_url) + tarball_path = os.path.join(tempfile.gettempdir(), tar_filename) + database_path = os.path.join(data_dir, config.APP_NAME) + if testnet: + database_path += '.testnet' + database_path += '.db' + + # Delete SQLite Write-Ahead-Log + wal_path = database_path + "-wal" + shm_path = database_path + "-shm" + try: + os.remove(wal_path) + except OSError: + pass + try: + os.remove(shm_path) + except OSError: + pass + + # Prepare Directory. + if not os.path.exists(data_dir): + os.makedirs(data_dir, mode=0o755) + if not overwrite and os.path.exists(database_path): + return + + # Define Progress Bar. + step = f'Downloading database from {bootstrap_url}...' + spinner = Halo(text=step, spinner=SPINNER_STYLE) + + def bootstrap_progress(blocknum, blocksize, totalsize): + readsofar = blocknum * blocksize + if totalsize > 0: + percent = readsofar * 1e2 / totalsize + message = f"Downloading database: {percent:5.1f}% {readsofar} / {totalsize}" + spinner.text = message + + # Downloading + spinner.start() + urllib.request.urlretrieve( + bootstrap_url, + tarball_path, + bootstrap_progress + ) # nosec B310 + spinner.stop() + print(f"{OK_GREEN} {step}") + + # TODO: check checksum, filenames, etc. + step = f'Extracting database to {data_dir}...' + with Halo(text=step, spinner=SPINNER_STYLE): + with tarfile.open(tarball_path, 'r:gz') as tar_file: + tar_file.extractall(path=data_dir) # nosec B202 + print(f"{OK_GREEN} {step}") + + assert os.path.exists(database_path) + # user and group have "rw" access + os.chmod(database_path, 0o660) # nosec B103 + + step = 'Cleaning up...' + with Halo(text=step, spinner=SPINNER_STYLE): + os.remove(tarball_path) + print(f"{OK_GREEN} {step}") + + cprint(f"Database has been successfully bootstrapped to {database_path}.", "green") + + +# Set default values of command line arguments with config file +def add_config_arguments(arg_parser, config_args, default_config_file, config_file_arg_name='config_file'): + cmd_args = arg_parser.parse_known_args()[0] + + config_file = getattr(cmd_args, config_file_arg_name, None) + if not config_file: + config_dir = appdirs.user_config_dir(appauthor=config.XCP_NAME, appname=config.APP_NAME, roaming=True) + if not os.path.isdir(config_dir): + os.makedirs(config_dir, mode=0o755) + config_file = os.path.join(config_dir, default_config_file) + + # clean BOM + bufsize = 4096 + bomlen = len(codecs.BOM_UTF8) + with codecs.open(config_file, 'r+b') as fp: + chunk = fp.read(bufsize) + if chunk.startswith(codecs.BOM_UTF8): + i = 0 + chunk = chunk[bomlen:] + while chunk: + fp.seek(i) + fp.write(chunk) + i += len(chunk) + fp.seek(bomlen, os.SEEK_CUR) + chunk = fp.read(bufsize) + fp.seek(-bomlen, os.SEEK_CUR) + fp.truncate() + + logger.debug(f'Loading configuration file: `{config_file}`') + configfile = configparser.SafeConfigParser(allow_no_value=True, inline_comment_prefixes=('#', ';')) + with codecs.open(config_file, 'r', encoding='utf8') as fp: + configfile.readfp(fp) + + if not 'Default' in configfile: + configfile['Default'] = {} + + # Initialize default values with the config file. + for arg in config_args: + key = arg[0][-1].replace('--', '') + if 'action' in arg[1] and arg[1]['action'] == 'store_true' and key in configfile['Default']: + arg[1]['default'] = configfile['Default'].getboolean(key) + elif key in configfile['Default'] and configfile['Default'][key]: + arg[1]['default'] = configfile['Default'][key] + elif key in configfile['Default'] and arg[1].get('nargs', '') == '?' and 'const' in arg[1]: + arg[1]['default'] = arg[1]['const'] # bit of a hack + arg_parser.add_argument(*arg[0], **arg[1]) + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterparty-cli/counterpartycli/wallet/__init__.py b/counterparty-cli/counterpartycli/wallet/__init__.py new file mode 100644 index 0000000000..474b38c76f --- /dev/null +++ b/counterparty-cli/counterpartycli/wallet/__init__.py @@ -0,0 +1,219 @@ +import os +import getpass +import binascii +import logging +logger = logging.getLogger(__name__) +import sys +import json +import time +from decimal import Decimal as D + +from pycoin.coins.bitcoin.Tx import Tx +from pycoin.satoshi.flags import SIGHASH_ALL +from pycoin.encoding.sec import public_pair_to_hash160_sec +from pycoin.ecdsa.secp256k1 import secp256k1_generator as generator_secp256k1 + +from counterpartycli.wallet import bitcoincore, btcwallet +from counterpartylib.lib import config, util, exceptions, script +from counterpartycli.util import api, value_out + +class WalletError(Exception): + pass + +class LockedWalletError(WalletError): + pass + +def wallet(): + return sys.modules[f'counterpartycli.wallet.{config.WALLET_NAME}'] + +def get_wallet_addresses(): + return wallet().get_wallet_addresses() + +def get_btc_balances(): + for address, btc_balance in wallet().get_btc_balances(): + yield [address, btc_balance] + +def pycoin_sign_raw_transaction(tx_hex, private_key_wif): + for char in private_key_wif: + if char not in script.b58_digits: + raise exceptions.TransactionError('invalid private key') + + if config.TESTNET: + allowable_wif_prefixes = [config.PRIVATEKEY_VERSION_TESTNET] + else: + allowable_wif_prefixes = [config.PRIVATEKEY_VERSION_MAINNET] + + secret_exponent, compressed = script.wif_to_tuple_of_secret_exponent_compressed( + private_key_wif, allowable_wif_prefixes=allowable_wif_prefixes) + public_pair = script.public_pair_for_secret_exponent(generator_secp256k1, secret_exponent) + hash160 = public_pair_to_hash160_sec(public_pair, compressed) + hash160_lookup = {hash160: (secret_exponent, public_pair, compressed)} + + tx = Tx.from_hex(tx_hex) + for idx, tx_in in enumerate(tx.txs_in): + tx.sign_tx_in(hash160_lookup, idx, tx_in.script, hash_type=SIGHASH_ALL) + + return tx.as_hex() + +def sign_raw_transaction(tx_hex, private_key_wif=None): + if private_key_wif is None: + if wallet().is_locked(): + raise LockedWalletError('Wallet is locked.') + return wallet().sign_raw_transaction(tx_hex) + else: + return pycoin_sign_raw_transaction(tx_hex, private_key_wif) + +def get_pubkey(address): + return wallet().get_pubkey(address) + +def is_valid(address): + return wallet().is_valid(address) + +def is_mine(address): + return wallet().is_mine(address) + +def get_btc_balance(address): + return wallet().get_btc_balance(address) + +def list_unspent(): + return wallet().list_unspent() + +def send_raw_transaction(tx_hex): + return wallet().send_raw_transaction(tx_hex) + +def is_locked(): + return wallet().is_locked() + +def unlock(passphrase): + return wallet().unlock(passphrase) + +def wallet_last_block(): + return wallet().wallet_last_block() + +def wallet(): + wallet = { + 'addresses': {}, + 'assets': {} + } + + def add_total(address, asset, quantity): + if quantity: + if address not in wallet['addresses']: + wallet['addresses'][address] = {} + if asset not in wallet['assets']: + wallet['assets'][asset] = 0 + if asset not in wallet['addresses'][address]: + wallet['addresses'][address][asset] = 0 + wallet['addresses'][address][asset] += quantity + wallet['assets'][asset] += quantity + + for bunch in get_btc_balances(): + address, btc_balance = bunch + add_total(address, 'BTC', btc_balance) + balances = api('get_balances', {'filters': [('address', '==', address),]}) + for balance in balances: + asset = balance['asset'] + balance = D(value_out(balance['quantity'], asset)) + add_total(address, asset, balance) + + return wallet + +def asset(asset_name): + supply = api('get_supply', {'asset': asset_name}) + asset_id = api('get_assets', {'filters': [('asset_name', '==', asset_name),]})[0]['asset_id'] + asset_info = { + 'asset': asset_name, + 'supply': D(value_out(supply, asset_name)), + 'asset_id': asset_id + } + if asset_name in ['XCP', 'BTC']: + asset_info.update({ + 'owner': None, + 'divisible': True, + 'locked': False, + 'description': '', + 'issuer': None + }) + else: + issuances = api('get_issuances', { + 'filters': [('asset', '==', asset_name),], + 'status': 'valid', + 'order_by': 'tx_index', + 'order_dir': 'DESC', + }) + if not issuances: + raise WalletError('Asset not found') + locked = False + for issuance in issuances: + if issuance['locked']: + locked = True + issuance = issuances[0] + asset_info.update({ + 'owner': issuance['issuer'], + 'divisible': bool(issuance['divisible']), + 'locked': locked, + 'description': issuance['description'], + 'issuer': issuance['issuer'] + }) + + asset_info['balance'] = 0 + asset_info['addresses'] = {} + + for bunch in get_btc_balances(): + address, btc_balance = bunch + if asset_name == 'BTC': + balance = btc_balance + else: + balances = api('get_balances', {'filters': [('address', '==', address), ('asset', '==', asset_name)]}) + if balances: + balance = balances[0] + balance = D(value_out(balance['quantity'], asset_name)) + else: + balance = 0 + if balance: + asset_info['balance'] += balance + asset_info['addresses'][address] = balance + + addresses = list(asset_info['addresses'].keys()) + + if asset_name != 'BTC': + all_sends = api('get_sends', {'filters': [('source', 'IN', addresses), ('destination', 'IN', addresses)], 'filterop': 'OR', 'status': 'valid'}) + sends = [] + for send in all_sends: + if send['asset'] == asset_name: + if send['source'] in addresses and send['destination'] in addresses: + tx_type = 'in-wallet' + elif send['source'] in addresses: + tx_type = 'send' + elif send['destination'] in addresses: + tx_type = 'receive' + send['type'] = tx_type + send['quantity'] = D(value_out(send['quantity'], asset_name)) + sends.append(send) + asset_info['sends'] = sends + + return asset_info + +def balances(address): + result = { + 'BTC': get_btc_balance(address) + } + balances = api('get_balances', {'filters': [('address', '==', address),]}) + for balance in balances: + asset = balance['asset'] + balance = D(value_out(balance['quantity'], asset)) + result[asset] = balance + return result + +def pending(): + addresses = [] + for bunch in get_btc_balances(): + addresses.append(bunch[0]) + filters = [ + ('tx0_address', 'IN', addresses), + ('tx1_address', 'IN', addresses) + ] + awaiting_btcs = api('get_order_matches', {'filters': filters, 'filterop': 'OR', 'status': 'pending'}) + return awaiting_btcs + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterparty-cli/counterpartycli/wallet/bitcoincore.py b/counterparty-cli/counterpartycli/wallet/bitcoincore.py new file mode 100644 index 0000000000..8eb223aa3f --- /dev/null +++ b/counterparty-cli/counterpartycli/wallet/bitcoincore.py @@ -0,0 +1,72 @@ +import binascii +import logging +logger = logging.getLogger(__name__) +import sys +import json +import time +import requests + +from counterpartylib.lib import config +from counterpartycli.util import wallet_api as rpc + +def get_wallet_addresses(): + addresses = [] + for group in rpc('listaddressgroupings', []): + for bunch in group: + address, btc_balance = bunch[:2] + addresses.append(address) + return addresses + +def get_btc_balances(): + for group in rpc('listaddressgroupings', []): + for bunch in group: + yield bunch[:2] + +def list_unspent(): + return rpc('listunspent', [0, 99999]) + +def sign_raw_transaction(tx_hex): + return rpc('signrawtransactionwithwallet', [tx_hex])['hex'] + +def is_valid(address): + return rpc('validateaddress', [address])['isvalid'] + +def is_mine(address): + return rpc('getaddressinfo', [address])['ismine'] + +def get_pubkey(address): + address_valid = rpc('validateaddress', [address]) + address_infos = rpc('getaddressinfo', [address]) + if address_valid['isvalid'] and address_infos['ismine']: + return address_infos['pubkey'] + return None + +def get_btc_balance(address): + for group in rpc('listaddressgroupings', []): + for bunch in group: + btc_address, btc_balance = bunch[:2] + if btc_address == address: + return btc_balance + return 0 + +def is_locked(): + getinfo = rpc('getwalletinfo', []) + if 'unlocked_until' in getinfo: + if getinfo['unlocked_until'] >= 10: + return False # Wallet is unlocked for at least the next 10 seconds. + else: + return True # Wallet is locked + else: + False + +def unlock(passphrase): + return rpc('walletpassphrase', [passphrase, 60]) + +def send_raw_transaction(tx_hex): + return rpc('sendrawtransaction', [tx_hex]) + +def wallet_last_block(): + getinfo = rpc('getinfo', []) + return getinfo['blocks'] + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterparty-cli/counterpartycli/wallet/btcwallet.py b/counterparty-cli/counterpartycli/wallet/btcwallet.py new file mode 100644 index 0000000000..68690b0f5d --- /dev/null +++ b/counterparty-cli/counterpartycli/wallet/btcwallet.py @@ -0,0 +1,74 @@ +import binascii +import logging +logger = logging.getLogger(__name__) +import sys +import json +import time +import requests + +from counterpartylib.lib import config +from counterpartycli.util import wallet_api as rpc + +def get_wallet_addresses(): + addresses = [] + for output in rpc('listunspent', [0, 99999]): + if output['address'] not in addresses: + addresses.append(output['address']) + return addresses + +def get_btc_balances(): + addresses = {} + for output in rpc('listunspent', [0, 99999]): + if output['address'] not in addresses: + addresses[output['address']] = 0 + addresses[output['address']] += output['amount'] + + for address in addresses: + yield [address, addresses[address]] + +def list_unspent(): + return rpc('listunspent', [0, 99999]) + +def sign_raw_transaction(tx_hex): + return rpc('signrawtransaction', [tx_hex])['hex'] + +def is_valid(address): + address_info = rpc('validateaddress', [address]) + # btcwallet return valid for pubkey + if address_info['isvalid'] and address_info['address'] == address: + return True + return False + +def is_mine(address): + address_info = rpc('validateaddress', [address]) + if 'ismine' not in address_info: + return False + return address_info['ismine'] + +def get_pubkey(address): + address_infos = rpc('validateaddress', [address]) + if address_infos['isvalid'] and address_infos['ismine']: + return address_infos['pubkey'] + return None + +def get_btc_balance(address): + balance = 0 + for output in rpc('listunspent', [0, 99999]): + if output['address'] == address: + balance += output['amount'] + return balance + +def is_locked(): + return rpc('walletislocked', []) + +def unlock(passphrase): + return rpc('walletpassphrase', [passphrase, 60]) + +def send_raw_transaction(tx_hex): + return rpc('sendrawtransaction', [tx_hex]) + +def wallet_last_block(): + getinfo = rpc('getinfo', []) + return getinfo['blocks'] + +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterparty-cli/pyproject.toml b/counterparty-cli/pyproject.toml new file mode 100644 index 0000000000..19f7a8f121 --- /dev/null +++ b/counterparty-cli/pyproject.toml @@ -0,0 +1,50 @@ +[build-system] +requires = ["hatchling==1.14.0", "hatch-requirements-txt==0.4.0"] +build-backend = "hatchling.build" + +[project] +name = "counterparty-cli" +requires-python = ">= 3.10" +dynamic = ["version", "dependencies"] +description = "Counterparty Protocol Command-Line Interface" +readme = "../README.md" +license = "MIT" +authors = [ + { name = "Counterparty Developers", email = "dev@counterparty.io" }, +] +keywords = ['counterparty', 'bitcoin', 'blockchain', 'crypto', 'cryptocurrency', 'wallet', 'exchange', 'trading', 'finance'] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Intended Audience :: Financial and Insurance Industry", + "License :: OSI Approved :: MIT License", + "Natural Language :: English", + "Operating System :: Microsoft :: Windows", + "Operating System :: POSIX", + "Programming Language :: Python :: 3 :: Only", + "Topic :: Office/Business :: Financial", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: System :: Distributed Computing" +] + +[tool.hatch.metadata.hooks.requirements_txt] +files = ["requirements.txt"] + +[tool.hatch.envs.default] +pre-install-commands = [ + "pip install -e ../counterparty-rs", + "pip install -e ../counterparty-lib", +] + +[project.scripts] +counterparty-client = "counterpartycli:client_main" +counterparty-server = "counterpartycli:server_main" + +[project.urls] +"Latest release" = "https://github.com/CounterpartyXCP/counterparty-core/releases/latest" +"Documentation" = "https://docs.counterparty.io/" +"Source code" = "https://github.com/CounterpartyXCP/" +"Home Page" = "https://counterparty.io/" + +[tool.hatch.version] +path = "../counterparty-lib/counterpartylib/lib/config.py" diff --git a/counterparty-cli/requirements.txt b/counterparty-cli/requirements.txt new file mode 100644 index 0000000000..990bf8f87d --- /dev/null +++ b/counterparty-cli/requirements.txt @@ -0,0 +1,8 @@ +appdirs==1.4.4 +setuptools-markdown==0.4.1 +prettytable==3.9.0 +colorlog==6.8.0 +python-dateutil==2.8.2 +requests==2.31.0 +termcolor==2.4.0 +counterparty-lib==10.0.0-alpha diff --git a/counterpartylib/__init__.py b/counterparty-lib/counterpartylib/__init__.py similarity index 100% rename from counterpartylib/__init__.py rename to counterparty-lib/counterpartylib/__init__.py diff --git a/counterpartylib/lib/__init__.py b/counterparty-lib/counterpartylib/lib/__init__.py similarity index 100% rename from counterpartylib/lib/__init__.py rename to counterparty-lib/counterpartylib/lib/__init__.py diff --git a/counterpartylib/lib/address.py b/counterparty-lib/counterpartylib/lib/address.py similarity index 84% rename from counterpartylib/lib/address.py rename to counterparty-lib/counterpartylib/lib/address.py index 4356bb75d9..0f18f95134 100644 --- a/counterpartylib/lib/address.py +++ b/counterparty-lib/counterpartylib/lib/address.py @@ -1,10 +1,12 @@ import logging -logger = logging.getLogger(__name__) import struct import bitcoin from counterpartylib.lib import config from counterpartylib.lib import script +from counterpartylib.lib import ledger + +logger = logging.getLogger(config.LOGGER_NAME) def address_scriptpubkey(address): try: @@ -18,7 +20,7 @@ def pack(address): """ Converts a base58 bitcoin address into a 21 byte bytes object """ - from .util import enabled # Here to account for test mock changes + from .ledger import enabled # Here to account for test mock changes if enabled('segwit_support'): try: @@ -36,7 +38,7 @@ def pack(address): except bitcoin.base58.InvalidBase58Error as e: raise e except Exception as e: - raise Exception(('The address {} is not a valid bitcoin address ({})').format(address,'testnet' if config.TESTNET or config.REGTEST else 'mainnet')) + raise Exception(f"The address {address} is not a valid bitcoin address ({'testnet' if config.TESTNET or config.REGTEST else 'mainnet'})") else: try: short_address_bytes = bitcoin.base58.decode(address)[:-4] @@ -49,7 +51,7 @@ def unpack(short_address_bytes): """ Converts a 21 byte prefix and public key hash into a full base58 bitcoin address """ - from .util import enabled # Here to account for test mock changes + from .ledger import enabled # Here to account for test mock changes if enabled('segwit_support') and short_address_bytes[0] >= 0x80 and short_address_bytes[0] <= 0x8F: # we have a segwit address here diff --git a/counterpartylib/lib/api.py b/counterparty-lib/counterpartylib/lib/api.py similarity index 84% rename from counterpartylib/lib/api.py rename to counterparty-lib/counterpartylib/lib/api.py index 3c239a2d2f..c09f545a00 100644 --- a/counterpartylib/lib/api.py +++ b/counterparty-lib/counterpartylib/lib/api.py @@ -16,7 +16,6 @@ import collections import logging import traceback -logger = logging.getLogger(__name__) from logging import handlers as logging_handlers D = decimal.Decimal import binascii @@ -35,13 +34,15 @@ from counterpartylib.lib import config from counterpartylib.lib import exceptions from counterpartylib.lib import util -from counterpartylib.lib import check +from counterpartylib.lib import ledger from counterpartylib.lib import backend from counterpartylib.lib import database from counterpartylib.lib import transaction from counterpartylib.lib import blocks from counterpartylib.lib import script from counterpartylib.lib import message_type +from counterpartylib.lib import gettxinfo +from counterpartylib.lib.kickstart.blocks_parser import BlockchainParser from counterpartylib.lib.messages import send from counterpartylib.lib.messages.versions import enhanced_send from counterpartylib.lib.messages import order @@ -58,6 +59,8 @@ from counterpartylib.lib.messages import sweep from counterpartylib.lib.messages import dispenser +logger = logging.getLogger(config.LOGGER_NAME) + API_TABLES = ['assets', 'balances', 'credits', 'debits', 'bets', 'bet_matches', 'broadcasts', 'btcpays', 'burns', 'cancels', 'destructions', 'dividends', 'issuances', 'orders', 'order_matches', 'sends', @@ -66,6 +69,49 @@ 'rpsresolves', 'rps_matches', 'rps_expirations', 'rps_match_expirations', 'mempool', 'sweeps', 'dispensers', 'dispenses','transactions'] +VIEW_QUERIES = { + 'balances': ''' + SELECT *, MAX(rowid) + FROM balances + GROUP BY address, asset + ''', + 'orders': ''' + SELECT *, MAX(rowid) + FROM orders + GROUP BY tx_hash + ''', + 'order_matches': ''' + SELECT *, MAX(rowid) + FROM order_matches + GROUP BY id + ''', + 'bets': ''' + SELECT *, MAX(rowid) + FROM bets + GROUP BY tx_hash + ''', + 'bets_matches': ''' + SELECT *, MAX(rowid) + FROM bet_matches + GROUP BY id + ''', + 'rps': ''' + SELECT *, MAX(rowid) + FROM rps + GROUP BY tx_hash + ''', + 'rps_matches': ''' + SELECT *, MAX(rowid) + FROM rps_matches + GROUP BY id + ''', + 'dispensers': ''' + SELECT *, MAX(rowid) + FROM dispensers + GROUP BY tx_hash + ''', +} + API_TRANSACTIONS = ['bet', 'broadcast', 'btcpay', 'burn', 'cancel', 'destroy', 'dividend', 'issuance', 'order', 'send', 'rps', 'rpsresolve', 'sweep', 'dispenser'] @@ -81,8 +127,8 @@ API_MAX_LOG_COUNT = 10 JSON_RPC_ERROR_API_COMPOSE = -32001 #code to use for error composing transaction result -current_api_status_code = None #is updated by the APIStatusPoller -current_api_status_response_json = None #is updated by the APIStatusPoller +CURRENT_API_STATUS_CODE = None #is updated by the APIStatusPoller +CURRENT_API_STATUS_RESPONSE_JSON = None #is updated by the APIStatusPoller class APIError(Exception): pass @@ -91,27 +137,27 @@ class APIError(Exception): class BackendError(Exception): pass def check_backend_state(): - """Checks blocktime of last block to see if {} Core is running behind.""".format(config.BTC_NAME) + f"""Checks blocktime of last block to see if {config.BTC_NAME} Core is running behind.""" block_count = backend.getblockcount() block_hash = backend.getblockhash(block_count) cblock = backend.getblock(block_hash) time_behind = time.time() - cblock.nTime # TODO: Block times are not very reliable. if time_behind > 60 * 60 * 2: # Two hours. - raise BackendError('Bitcoind is running about {} hours behind.'.format(round(time_behind / 3600))) + raise BackendError(f'Bitcoind is running about {round(time_behind / 3600)} hours behind.') # check backend index blocks_behind = backend.getindexblocksbehind() if blocks_behind > 5: - raise BackendError('Indexd is running {} blocks behind.'.format(blocks_behind)) + raise BackendError(f'Indexd is running {blocks_behind} blocks behind.') logger.debug('Backend state check passed.') class DatabaseError(Exception): pass def check_database_state(db, blockcount): - """Checks {} database to see if is caught up with backend.""".format(config.XCP_NAME) - if util.CURRENT_BLOCK_INDEX + 1 < blockcount: - raise DatabaseError('{} database is behind backend.'.format(config.XCP_NAME)) + f"""Checks {config.XCP_NAME} database to see if is caught up with backend.""" + if ledger.CURRENT_BLOCK_INDEX + 1 < blockcount: + raise DatabaseError(f'{config.XCP_NAME} database is behind backend.') logger.debug('Database state check passed.') return @@ -126,7 +172,7 @@ def db_query(db, statement, bindings=(), callback=None, **callback_args): for word in forbidden_words: #This will find if the forbidden word is in the statement as a whole word. For example, "transactions" will be allowed because the "s" at the end if re.search(r"\b"+word+"\b", statement.lower()): - raise APIError("Forbidden word in query: '{}'.".format(word)) + raise APIError(f"Forbidden word in query: '{word}'.") if hasattr(callback, '__call__'): cursor.execute(statement, bindings) @@ -148,7 +194,7 @@ def get_rows(db, table, filters=None, filterop='AND', order_by=None, order_dir=N def value_to_marker(value): # if value is an array place holder is (?,?,?,..) if isinstance(value, list): - return '''({})'''.format(','.join(['?' for e in range(0, len(value))])) + return f'''({','.join(['?' for e in range(0, len(value))])})''' else: return '''?''' @@ -162,7 +208,7 @@ def value_to_marker(value): if not isinstance(limit, int): raise APIError('Invalid limit') elif config.API_LIMIT_ROWS != 0 and limit > config.API_LIMIT_ROWS: - raise APIError('Limit should be lower or equal to %i' % config.API_LIMIT_ROWS) + raise APIError(f'Limit should be lower or equal to {config.API_LIMIT_ROWS}') elif config.API_LIMIT_ROWS != 0 and limit == 0: raise APIError('Limit should be greater than 0') if not isinstance(offset, int): @@ -194,13 +240,13 @@ def value_to_marker(value): for filter_ in filters: for field in ['field', 'op', 'value']: #should have all fields if field not in filter_: - raise APIError("A specified filter is missing the '%s' field" % field) + raise APIError(f"A specified filter is missing the '{field}' field") if not isinstance(filter_['value'], (str, int, float, list)): - raise APIError("Invalid value for the field '%s'" % filter_['field']) + raise APIError(f"Invalid value for the field '{filter_['field']}'") if isinstance(filter_['value'], list) and filter_['op'].upper() not in ['IN', 'NOT IN']: - raise APIError("Invalid value for the field '%s'" % filter_['field']) + raise APIError(f"Invalid value for the field '{filter_['field']}'") if filter_['op'].upper() not in ['=', '==', '!=', '>', '<', '>=', '<=', 'IN', 'LIKE', 'NOT IN', 'NOT LIKE']: - raise APIError("Invalid operator for the field '%s'" % filter_['field']) + raise APIError(f"Invalid operator for the field '{filter_['field']}'") if 'case_sensitive' in filter_ and not isinstance(filter_['case_sensitive'], bool): raise APIError("case_sensitive must be a boolean") @@ -209,17 +255,19 @@ def value_to_marker(value): adjust_get_sends_memo_filters(filters) # SELECT - statement = '''SELECT * FROM {}'''.format(table) + source = VIEW_QUERIES[table] if table in VIEW_QUERIES else table + # no sql injection here + statement = f'''SELECT * FROM ({source})''' # nosec B608 # WHERE bindings = [] conditions = [] for filter_ in filters: case_sensitive = False if 'case_sensitive' not in filter_ else filter_['case_sensitive'] if filter_['op'] == 'LIKE' and case_sensitive == False: - filter_['field'] = '''UPPER({})'''.format(filter_['field']) + filter_['field'] = f'''UPPER({filter_['field']})''' filter_['value'] = filter_['value'].upper() marker = value_to_marker(filter_['value']) - conditions.append('''{} {} {}'''.format(filter_['field'], filter_['op'], marker)) + conditions.append(f'''{filter_['field']} {filter_['op']} {marker}''') if isinstance(filter_['value'], list): bindings += filter_['value'] else: @@ -243,7 +291,7 @@ def value_to_marker(value): # status if isinstance(status, list) and len(status) > 0: - more_conditions.append('''status IN {}'''.format(value_to_marker(status))) + more_conditions.append(f'''status IN {value_to_marker(status)}''') bindings += status elif isinstance(status, str) and status != '': more_conditions.append('''status == ?''') @@ -252,7 +300,7 @@ def value_to_marker(value): # legacy filters if not show_expired and table == 'orders': #Ignore BTC orders one block early. - expire_index = util.CURRENT_BLOCK_INDEX + 1 + expire_index = ledger.CURRENT_BLOCK_INDEX + 1 more_conditions.append('''((give_asset == ? AND expire_index > ?) OR give_asset != ?)''') bindings += [config.BTC, expire_index, config.BTC] @@ -260,38 +308,37 @@ def value_to_marker(value): statement += ''' WHERE''' all_conditions = [] if len(conditions) > 0: - all_conditions.append('''({})'''.format(''' {} '''.format(filterop.upper()).join(conditions))) + all_conditions.append(f'''({f' {filterop.upper()} '.join(conditions)})''') if len(more_conditions) > 0: - all_conditions.append('''({})'''.format(''' AND '''.join(more_conditions))) - statement += ''' {}'''.format(''' AND '''.join(all_conditions)) + all_conditions.append(f'''({' AND '.join(more_conditions)})''') + statement += f''' {' AND '.join(all_conditions)}''' # ORDER BY if order_by != None: - statement += ''' ORDER BY {}'''.format(order_by) + statement += f''' ORDER BY {order_by}''' if order_dir != None: - statement += ''' {}'''.format(order_dir.upper()) + statement += f''' {order_dir.upper()}''' # LIMIT if limit and limit > 0: - statement += ''' LIMIT {}'''.format(limit) + statement += f''' LIMIT {limit}''' if offset: - statement += ''' OFFSET {}'''.format(offset) - + statement += f''' OFFSET {offset}''' query_result = db_query(db, statement, tuple(bindings)) - + if table == 'balances': return adjust_get_balances_results(query_result, db) if table == 'destructions': return adjust_get_destructions_results(query_result) - + if table == 'sends': # for sends, handle the memo field properly return adjust_get_sends_results(query_result) - + if table == 'transactions': # for transactions, handle the data field properly - return adjust_get_transactions_results(query_result) + return adjust_get_transactions_results(query_result) return query_result @@ -301,7 +348,7 @@ def adjust_get_balances_results(query_result, db): for balances_row in list(query_result): asset = balances_row['asset'] if not asset in assets: - assets[asset] = util.is_divisible(db, asset) + assets[asset] = ledger.is_divisible(db, asset) balances_row['divisible'] = assets[asset] filtered_results.append(balances_row) @@ -342,7 +389,7 @@ def adjust_get_sends_results(query_result): else: if type(send_row['memo']) == str: send_row['memo'] = bytes(send_row['memo'], 'utf-8') - + send_row['memo_hex'] = binascii.hexlify(send_row['memo']).decode('utf8') send_row['memo'] = send_row['memo'].decode('utf-8') except UnicodeDecodeError: @@ -403,10 +450,10 @@ def compose_transaction(db, name, params, # Check validity of collected pubkeys. for pubkey in provided_pubkeys: if not script.is_fully_valid(binascii.unhexlify(pubkey)): - raise script.AddressError('invalid public key: {}'.format(pubkey)) + raise script.AddressError(f'invalid public key: {pubkey}') - compose_method = sys.modules['counterpartylib.lib.messages.{}'.format(name)].compose - compose_params = inspect.getargspec(compose_method)[0] + compose_method = sys.modules[f'counterpartylib.lib.messages.{name}'].compose + compose_params = inspect.getfullargspec(compose_method)[0] missing_params = [p for p in compose_params if p not in params and p != 'db'] for param in missing_params: params[param] = None @@ -418,8 +465,8 @@ def compose_transaction(db, name, params, fee_per_kb = config.DEFAULT_FEE_PER_KB if 'extended_tx_info' in params: - extended_tx_info = params['extended_tx_info'] - del params['extended_tx_info'] + extended_tx_info = params['extended_tx_info'] + del params['extended_tx_info'] if 'old_style_api' in params: old_style_api = params['old_style_api'] @@ -463,17 +510,21 @@ def init_api_access_log(app): # Disable console logging... for l in loggers: - l.setLevel(logging.INFO) + l.setLevel(logging.CRITICAL) l.propagate = False # Log to file, if configured... if config.API_LOG: handler = logging_handlers.RotatingFileHandler(config.API_LOG, 'a', API_MAX_LOG_SIZE, API_MAX_LOG_COUNT) for l in loggers: + handler.setLevel(logging.DEBUG) l.addHandler(handler) + + flask.cli.show_server_banner = lambda *args: None class APIStatusPoller(threading.Thread): """Perform regular checks on the state of the backend and the database.""" + def __init__(self): self.last_database_check = 0 threading.Thread.__init__(self) @@ -484,8 +535,8 @@ def stop(self): def run(self): logger.debug('Starting API Status Poller.') - global current_api_status_code, current_api_status_response_json - db = database.get_connection(read_only=True, integrity_check=False) + global CURRENT_API_STATUS_CODE, CURRENT_API_STATUS_RESPONSE_JSON + db = database.get_connection(read_only=True) while self.stop_event.is_set() != True: try: @@ -505,15 +556,16 @@ def run(self): exception_text = str(e) logger.debug("API Status Poller: %s", exception_text) jsonrpc_response = jsonrpc.exceptions.JSONRPCServerError(message=exception_name, data=exception_text) - current_api_status_code = code - current_api_status_response_json = jsonrpc_response.json.encode() + CURRENT_API_STATUS_CODE = code + CURRENT_API_STATUS_RESPONSE_JSON = jsonrpc_response.json.encode() else: - current_api_status_code = None - current_api_status_response_json = None + CURRENT_API_STATUS_CODE = None + CURRENT_API_STATUS_RESPONSE_JSON = None time.sleep(config.BACKEND_POLL_INTERVAL) class APIServer(threading.Thread): """Handle JSON-RPC API calls.""" + def __init__(self, db=None): self.db = db self.is_ready = False @@ -526,7 +578,7 @@ def stop(self): def run(self): logger.info('Starting API Server.') - self.db = self.db or database.get_connection(read_only=True, integrity_check=False) + self.db = self.db or database.get_connection(read_only=True) app = flask.Flask(__name__) auth = HTTPBasicAuth() @@ -550,7 +602,7 @@ def get_method(**kwargs): for table in API_TABLES: new_method = generate_get_method(table) - new_method.__name__ = 'get_{}'.format(table) + new_method.__name__ = f'get_{table}' dispatcher.add_method(new_method) @dispatcher.add_method @@ -559,7 +611,6 @@ def sql(query, bindings=None): bindings = [] return db_query(self.db, query, tuple(bindings)) - ###################### #WRITE/ACTION API @@ -585,7 +636,7 @@ def create_method(**kwargs): return compose_transaction(self.db, name=tx, params=transaction_args, **common_args) except (TypeError, script.AddressError, exceptions.ComposeError, exceptions.TransactionError, exceptions.BalanceError) as error: # TypeError happens when unexpected keyword arguments are passed in - error_msg = "Error composing {} transaction via API: {}".format(tx, str(error)) + error_msg = f"Error composing {tx} transaction via API: {str(error)}" logging.warning(error_msg) logging.warning(traceback.format_exc()) raise JSONRPCDispatchException(code=JSON_RPC_ERROR_API_COMPOSE, message=error_msg) @@ -594,7 +645,7 @@ def create_method(**kwargs): for tx in API_TRANSACTIONS: create_method = generate_create_method(tx) - create_method.__name__ = 'create_{}'.format(tx) + create_method.__name__ = f'create_{tx}' dispatcher.add_method(create_method) @dispatcher.add_method @@ -602,10 +653,7 @@ def get_messages(block_index): if not isinstance(block_index, int): raise APIError("block_index must be an integer.") - cursor = self.db.cursor() - cursor.execute('select * from messages where block_index = ? order by message_index asc', (block_index,)) - messages = cursor.fetchall() - cursor.close() + messages = ledger.get_messages(self.db, block_index=block_index) return messages @dispatcher.add_method @@ -620,11 +668,7 @@ def get_messages_by_index(message_indexes): if not isinstance(idx, int): raise APIError("All items in message_indexes are not integers") - cursor = self.db.cursor() - cursor.execute('SELECT * FROM messages WHERE message_index IN (%s) ORDER BY message_index ASC' - % (','.join([str(x) for x in message_indexes]),)) - messages = cursor.fetchall() - cursor.close() + messages = ledger.get_messages(self.db, message_index_in=message_indexes) return messages @dispatcher.add_method @@ -632,35 +676,35 @@ def get_supply(asset): if asset == 'BTC': return backend.get_btc_supply(normalize=False) elif asset == 'XCP': - return util.xcp_supply(self.db) + return ledger.xcp_supply(self.db) else: - asset = util.resolve_subasset_longname(self.db, asset) - return util.asset_supply(self.db, asset) + asset = ledger.resolve_subasset_longname(self.db, asset) + return ledger.asset_supply(self.db, asset) @dispatcher.add_method def get_xcp_supply(): logger.warning("Deprecated method: `get_xcp_supply`") - return util.xcp_supply(self.db) + return ledger.xcp_supply(self.db) @dispatcher.add_method def get_asset_info(assets=None, asset=None): if asset is not None: assets = [asset] - + if not isinstance(assets, list): raise APIError("assets must be a list of asset names, even if it just contains one entry") - assetsInfo = [] + assets_info = [] for asset in assets: - asset = util.resolve_subasset_longname(self.db, asset) + asset = ledger.resolve_subasset_longname(self.db, asset) # BTC and XCP. if asset in [config.BTC, config.XCP]: if asset == config.BTC: supply = backend.get_btc_supply(normalize=False) else: - supply = util.xcp_supply(self.db) + supply = ledger.xcp_supply(self.db) - assetsInfo.append({ + assets_info.append({ 'asset': asset, 'asset_longname': None, 'owner': None, @@ -674,7 +718,7 @@ def get_asset_info(assets=None, asset=None): # User‐created asset. cursor = self.db.cursor() - issuances = list(cursor.execute('''SELECT * FROM issuances WHERE (status = ? AND asset = ?) ORDER BY block_index ASC''', ('valid', asset))) + issuances = ledger.get_issuances(self.db, asset=asset, status='valid', first=True) cursor.close() if not issuances: continue #asset not found, most likely @@ -683,16 +727,16 @@ def get_asset_info(assets=None, asset=None): locked = False for e in issuances: if e['locked']: locked = True - assetsInfo.append({ + assets_info.append({ 'asset': asset, 'asset_longname': last_issuance['asset_longname'], 'owner': last_issuance['issuer'], 'divisible': bool(last_issuance['divisible']), 'locked': locked, - 'supply': util.asset_supply(self.db, asset), + 'supply': ledger.asset_supply(self.db, asset), 'description': last_issuance['description'], 'issuer': last_issuance['issuer']}) - return assetsInfo + return assets_info @dispatcher.add_method def get_block_info(block_index): @@ -724,18 +768,21 @@ def get_blocks(block_indexes, min_message_index=None): raise APIError("block_indexes must be a list of integers.") if len(block_indexes) >= 250: raise APIError("can only specify up to 250 indexes at a time.") + for block_index in block_indexes: + if not isinstance(block_index, int): + raise APIError("block_indexes must be a list of integers.") - block_indexes_str = ','.join([str(x) for x in block_indexes]) cursor = self.db.cursor() - # The blocks table gets rolled back from undolog, so min_message_index doesn't matter for this query - cursor.execute('SELECT * FROM blocks WHERE block_index IN (%s) ORDER BY block_index ASC' - % (block_indexes_str,)) + block_indexes_placeholder = f"({','.join(['?'] * len(block_indexes))})" + # no sql injection here + cursor.execute( + f'SELECT * FROM blocks WHERE block_index IN ({block_indexes_placeholder}) ORDER BY block_index ASC', # nosec B608 + block_indexes + ) blocks = cursor.fetchall() - cursor.execute('SELECT * FROM messages WHERE block_index IN (%s) ORDER BY message_index ASC' - % (block_indexes_str,)) - messages = collections.deque(cursor.fetchall()) + messages = collections.deque(ledger.get_messages(self.db, block_index_in=block_indexes)) # Discard any messages less than min_message_index if min_message_index: @@ -754,10 +801,10 @@ def get_blocks(block_indexes, min_message_index=None): @dispatcher.add_method def get_running_info(): - latestBlockIndex = backend.getblockcount() + latest_block_index = backend.getblockcount() try: - check_database_state(self.db, latestBlockIndex) + check_database_state(self.db, latest_block_index) except DatabaseError: caught_up = False else: @@ -765,7 +812,7 @@ def get_running_info(): try: cursor = self.db.cursor() - blocks = list(cursor.execute('''SELECT * FROM blocks WHERE block_index = ?''', (util.CURRENT_BLOCK_INDEX, ))) + blocks = list(cursor.execute('''SELECT * FROM blocks WHERE block_index = ?''', (ledger.CURRENT_BLOCK_INDEX, ))) assert len(blocks) == 1 last_block = blocks[0] cursor.close() @@ -773,14 +820,14 @@ def get_running_info(): last_block = None try: - last_message = util.last_message(self.db) + last_message = ledger.last_message(self.db) except: last_message = None try: indexd_blocks_behind = backend.getindexblocksbehind() except: - indexd_blocks_behind = latestBlockIndex if latestBlockIndex > 0 else 999999 + indexd_blocks_behind = latest_block_index if latest_block_index > 0 else 999999 indexd_caught_up = indexd_blocks_behind <= 1 server_ready = caught_up and indexd_caught_up @@ -788,7 +835,7 @@ def get_running_info(): return { 'server_ready': server_ready, 'db_caught_up': caught_up, - 'bitcoin_block_count': latestBlockIndex, + 'bitcoin_block_count': latest_block_index, 'last_block': last_block, 'indexd_caught_up': indexd_caught_up, 'indexd_blocks_behind': indexd_blocks_behind, @@ -810,7 +857,8 @@ def get_element_counts(): 'order_matches', 'btcpays', 'issuances', 'broadcasts', 'bets', 'bet_matches', 'dividends', 'burns', 'cancels', 'order_expirations', 'bet_expirations', 'order_match_expirations', 'bet_match_expirations', 'messages', 'destructions']: - cursor.execute("SELECT COUNT(*) AS count FROM %s" % element) + # no sql injection here, element is hardcoded + cursor.execute(f"SELECT COUNT(*) AS count FROM {element}") # nosec B608 count_list = cursor.fetchall() assert len(count_list) == 1 counts[element] = count_list[0]['count'] @@ -819,14 +867,11 @@ def get_element_counts(): @dispatcher.add_method def get_asset_names(longnames=False): - cursor = self.db.cursor() + all_assets = ledger.get_valid_assets(self.db) if longnames: - names = [] - for row in cursor.execute("SELECT asset, asset_longname FROM issuances WHERE status = 'valid' GROUP BY asset ORDER BY asset ASC"): - names.append({'asset': row['asset'], 'asset_longname': row['asset_longname']}) + names = [{'asset': row['asset'], 'asset_longname': row['asset_longname']} for row in all_assets] else: - names = [row['asset'] for row in cursor.execute("SELECT DISTINCT asset FROM issuances WHERE status = 'valid' ORDER BY asset ASC")] - cursor.close() + names = [row['asset'] for row in all_assets] return names @dispatcher.add_method @@ -835,8 +880,8 @@ def get_asset_longnames(): @dispatcher.add_method def get_holder_count(asset): - asset = util.resolve_subasset_longname(self.db, asset) - holders = util.holders(self.db, asset, True) + asset = ledger.resolve_subasset_longname(self.db, asset) + holders = ledger.holders(self.db, asset, True) addresses = [] for holder in holders: addresses.append(holder['address']) @@ -844,8 +889,8 @@ def get_holder_count(asset): @dispatcher.add_method def get_holders(asset): - asset = util.resolve_subasset_longname(self.db, asset) - holders = util.holders(self.db, asset, True) + asset = ledger.resolve_subasset_longname(self.db, asset) + holders = ledger.holders(self.db, asset, True) return holders @dispatcher.add_method @@ -869,7 +914,6 @@ def get_unspent_txouts(address, unconfirmed=False, unspent_tx_hash=None, order_b reverse = True return sorted(results, key=lambda x: x[order_key], reverse=reverse) - @dispatcher.add_method def getrawtransaction(tx_hash, verbose=False, skip_missing=False): return backend.getrawtransaction(tx_hash, verbose=verbose, skip_missing=skip_missing) @@ -881,7 +925,11 @@ def getrawtransaction_batch(txhash_list, verbose=False, skip_missing=False): @dispatcher.add_method def get_tx_info(tx_hex, block_index=None): # block_index mandatory for transactions before block 335000 - source, destination, btc_amount, fee, data, extra = blocks.get_tx_info(tx_hex, block_index=block_index) + source, destination, btc_amount, fee, data, extra = gettxinfo.get_tx_info( + self.db, + BlockchainParser().deserialize_tx(tx_hex), + block_index=block_index + ) return source, destination, btc_amount, fee, util.hexlify(data) if data else '' @dispatcher.add_method @@ -896,7 +944,7 @@ def unpack(data_hex): unpack_method = enhanced_send.unpack else: raise APIError('unsupported message type') - unpacked = unpack_method(self.db, message, util.CURRENT_BLOCK_INDEX) + unpacked = unpack_method(self.db, message, ledger.CURRENT_BLOCK_INDEX) return message_type_id, unpacked @dispatcher.add_method @@ -907,17 +955,16 @@ def search_pubkey(pubkeyhash, provided_pubkeys=None): @dispatcher.add_method def get_dispenser_info(tx_hash=None, tx_index=None): cursor = self.db.cursor() - + if tx_hash is None and tx_index is None: raise APIError("You must provided a tx hash or a tx index") - + + dispensers = [] if tx_hash is not None: - cursor.execute('SELECT d.*, a.asset_longname FROM dispensers d LEFT JOIN assets a ON a.asset_name = d.asset WHERE tx_hash=:tx_hash', {"tx_hash":tx_hash}) + dispensers = get_dispenser_info(self.db, tx_hash=tx_hash) else: - cursor.execute('SELECT d.*, a.asset_longname FROM dispensers d LEFT JOIN assets a ON a.asset_name = d.asset WHERE tx_index=:tx_index', {"tx_index":tx_index}) - - dispensers = cursor.fetchall() - + dispensers = get_dispenser_info(self.db, tx_index=tx_index) + if len(dispensers) == 1: dispenser = dispensers[0] oracle_price = "" @@ -925,16 +972,16 @@ def get_dispenser_info(tx_hash=None, tx_index=None): fiat_price = "" oracle_price_last_updated = "" oracle_fiat_label = "" - + if dispenser["oracle_address"] != None: fiat_price = util.satoshirate_to_fiat(dispenser["satoshirate"]) - oracle_price, oracle_fee, oracle_fiat_label, oracle_price_last_updated = util.get_oracle_last_price(self.db, dispenser["oracle_address"], util.CURRENT_BLOCK_INDEX) - + oracle_price, oracle_fee, oracle_fiat_label, oracle_price_last_updated = ledger.get_oracle_last_price(self.db, dispenser["oracle_address"], ledger.CURRENT_BLOCK_INDEX) + if (oracle_price > 0): satoshi_price = math.ceil((fiat_price/oracle_price) * config.UNIT) else: raise APIError("Last oracle price is zero") - + return { "tx_index": dispenser["tx_index"], "tx_hash": dispenser["tx_hash"], @@ -954,10 +1001,8 @@ def get_dispenser_info(tx_hash=None, tx_index=None): "oracle_price_last_updated": oracle_price_last_updated, "asset_longname": dispenser["asset_longname"] } - - return {} - + return {} def _set_cors_headers(response): if not config.RPC_NO_ALLOW_CORS: @@ -969,8 +1014,8 @@ def _set_cors_headers(response): def handle_healthz(): msg, code = 'Healthy', 200 try: - latestBlockIndex = backend.getblockcount() - check_database_state(self.db, latestBlockIndex) + latest_block_index = backend.getblockcount() + check_database_state(self.db, latest_block_index) except DatabaseError: msg, code = 'Unhealthy', 503 return flask.Response(msg, code, mimetype='text/plain') @@ -1033,8 +1078,8 @@ def handle_rpc_post(request_json): return flask.Response(obj_error.json.encode(), 400, mimetype='application/json') # Return an error if the API Status Poller checks fail. - if not config.FORCE and current_api_status_code: - return flask.Response(current_api_status_response_json, 503, mimetype='application/json') + if not config.FORCE and CURRENT_API_STATUS_CODE: + return flask.Response(CURRENT_API_STATUS_RESPONSE_JSON, 503, mimetype='application/json') # Answer request normally. # NOTE: `UnboundLocalError: local variable 'output' referenced before assignment` means the method doesn’t return anything. @@ -1054,7 +1099,7 @@ def handle_rest(path_args, flask_request): elif url_action == 'get': compose = False else: - error = 'Invalid action "%s".' % url_action + error = f'Invalid action "{url_action}".' return flask.Response(error, 400, mimetype='application/json') # Get all arguments passed via URL. @@ -1067,7 +1112,7 @@ def handle_rest(path_args, flask_request): # Check if message type or table name are valid. if (compose and query_type not in API_TRANSACTIONS) or \ (not compose and query_type not in API_TABLES): - error = 'No such query type in supported queries: "%s".' % query_type + error = f'No such query type in supported queries: "{query_type}".' return flask.Response(error, 400, mimetype='application/json') # Parse the additional arguments. @@ -1103,8 +1148,7 @@ def handle_rest(path_args, flask_request): try: query_data = compose_transaction(self.db, name=query_type, params=transaction_args, **common_args) except (script.AddressError, exceptions.ComposeError, exceptions.TransactionError, exceptions.BalanceError) as error: - error_msg = logging.warning("{} -- error composing {} transaction via API: {}".format( - str(error.__class__.__name__), query_type, str(error))) + error_msg = logging.warning(f"{error.__class__.__name__} -- error composing {query_type} transaction via API: {error}") return flask.Response(error_msg, 400, mimetype='application/json') else: # Need to de-generate extra_args to pass it through. @@ -1117,7 +1161,7 @@ def handle_rest(path_args, flask_request): try: query_data = get_rows(self.db, table=query_type, filters=data_filter, filterop=operator) except APIError as error: - return flask.Response(str(error), 400, mimetype='application/json') + return flask.Response('API Error', 400, mimetype='application/json') # See which encoding to choose from. file_format = flask_request.headers['Accept'] @@ -1129,7 +1173,7 @@ def handle_rest(path_args, flask_request): # Hence we end up with multiple query_type roots. To combat this we put it in a separate item dict. response_data = serialize_to_xml({query_type: {'item': query_data}}) else: - error = 'Invalid file format: "%s".' % file_format + error = f'Invalid file format: "{file_format}".' return flask.Response(error, 400, mimetype='application/json') response = flask.Response(response_data, 200, mimetype=file_format) diff --git a/counterpartylib/lib/arc4.py b/counterparty-lib/counterpartylib/lib/arc4.py similarity index 65% rename from counterpartylib/lib/arc4.py rename to counterparty-lib/counterpartylib/lib/arc4.py index 6d29e0ded8..d559201494 100644 --- a/counterpartylib/lib/arc4.py +++ b/counterparty-lib/counterpartylib/lib/arc4.py @@ -1,7 +1,7 @@ import binascii -from Crypto.Cipher import ARC4 +from arc4 import ARC4 def init_arc4(seed): if isinstance(seed, str): seed = binascii.unhexlify(seed) - return ARC4.new(seed) + return ARC4(seed) diff --git a/counterpartylib/lib/backend/__init__.py b/counterparty-lib/counterpartylib/lib/backend/__init__.py similarity index 79% rename from counterpartylib/lib/backend/__init__.py rename to counterparty-lib/counterpartylib/lib/backend/__init__.py index 50d558fade..cd1e4e2a3c 100644 --- a/counterpartylib/lib/backend/__init__.py +++ b/counterparty-lib/counterpartylib/lib/backend/__init__.py @@ -1,9 +1,6 @@ -import getpass import binascii import logging -logger = logging.getLogger(__name__) import sys -import json import time from decimal import Decimal as D @@ -15,10 +12,15 @@ from counterpartylib.lib import script from counterpartylib.lib import config from counterpartylib.lib import exceptions +from counterpartylib.lib import prefetcher +from counterpartylib.lib import ledger from counterpartylib.lib.backend import addrindexrs +logger = logging.getLogger(config.LOGGER_NAME) + MEMPOOL_CACHE_INITIALIZED = False +INITIALIZED = False PRETX_CACHE = {} @@ -30,29 +32,32 @@ def sortkeypicker(keynames): keynames[i] = k[1:] negate.add(k[1:]) def getit(adict): - composite = [adict[k] for k in keynames] - for i, (k, v) in enumerate(zip(keynames, composite)): - if k in negate: - composite[i] = -v - return composite + composite = [adict[k] for k in keynames] + for i, (k, v) in enumerate(zip(keynames, composite)): + if k in negate: + composite[i] = -v + return composite return getit -def BACKEND(): - mdl = sys.modules['counterpartylib.lib.backend.{}'.format(config.BACKEND_NAME)] - mdl.init() +def backend(): + mdl = sys.modules[f'counterpartylib.lib.backend.{config.BACKEND_NAME}'] + global INITIALIZED + if not INITIALIZED: + mdl.init() + INITIALIZED = True return mdl def stop(): - BACKEND().stop() + backend().stop() def getblockcount(): - return BACKEND().getblockcount() + return backend().getblockcount() def getblockhash(blockcount): - return BACKEND().getblockhash(blockcount) + return backend().getblockhash(blockcount) def getblock(block_hash): - block_hex = BACKEND().getblock(block_hash) + block_hex = backend().getblock(block_hash) return CBlock.deserialize(util.unhexlify(block_hex)) def cache_pretx(txid, rawtx): @@ -61,26 +66,30 @@ def cache_pretx(txid, rawtx): def clear_pretx(txid): del PRETX_CACHE[binascii.hexlify(txid).decode('utf8')] -def getrawtransaction(tx_hash, verbose=False, skip_missing=False): +def getrawtransaction(tx_hash, verbose=False, skip_missing=False, block_index=None): + if block_index and block_index in prefetcher.BLOCKCHAIN_CACHE: + return prefetcher.BLOCKCHAIN_CACHE[block_index]['raw_transactions'][tx_hash] + if tx_hash in PRETX_CACHE: return PRETX_CACHE[tx_hash] - else: - return BACKEND().getrawtransaction(tx_hash, verbose=verbose, skip_missing=skip_missing) + + # There's a separate LRU cache on the backend here, fwiw. + return backend().getrawtransaction(tx_hash, verbose=verbose, skip_missing=skip_missing) def getrawtransaction_batch(txhash_list, verbose=False, skip_missing=False): - return BACKEND().getrawtransaction_batch(txhash_list, verbose=verbose, skip_missing=skip_missing) + return backend().getrawtransaction_batch(txhash_list, verbose=verbose, skip_missing=skip_missing) def sendrawtransaction(tx_hex): - return BACKEND().sendrawtransaction(tx_hex) + return backend().sendrawtransaction(tx_hex) def getrawmempool(): - return BACKEND().getrawmempool() + return backend().getrawmempool() def getindexblocksbehind(): - return BACKEND().getindexblocksbehind() + return backend().getindexblocksbehind() def extract_addresses(txhash_list): - return BACKEND().extract_addresses(txhash_list) + return backend().extract_addresses(txhash_list) def ensure_script_pub_key_for_inputs(coins): txhash_set = set() @@ -89,7 +98,7 @@ def ensure_script_pub_key_for_inputs(coins): txhash_set.add(coin['txid']) if len(txhash_set) > 0: - txs = BACKEND().getrawtransaction_batch(list(txhash_set), verbose=True, skip_missing=False) + txs = backend().getrawtransaction_batch(list(txhash_set), verbose=True, skip_missing=False) for coin in coins: if 'scriptPubKey' not in coin: # get the scriptPubKey @@ -108,7 +117,7 @@ def fee_per_kb(conf_target, mode, nblocks=None): :return: fee_per_kb in satoshis, or None when unable to determine """ - return BACKEND().fee_per_kb(conf_target, mode, nblocks=nblocks) + return backend().fee_per_kb(conf_target, mode, nblocks=nblocks) def deserialize(tx_hex): @@ -127,12 +136,12 @@ def is_valid(address): def get_txhash_list(block): return [bitcoinlib.core.b2lx(ctx.GetHash()) for ctx in block.vtx] -def get_tx_list(block): +def get_tx_list(block, block_index=None): raw_transactions = {} tx_hash_list = [] for ctx in block.vtx: - if util.enabled('correct_segwit_txids'): + if ledger.enabled('correct_segwit_txids', block_index=block_index): hsh = ctx.GetTxid() else: hsh = ctx.GetHash() @@ -158,7 +167,7 @@ def sort_unspent_txouts(unspent, unconfirmed=False, dust_size=config.DEFAULT_REG return unspent def get_btc_supply(normalize=False): - """returns the total supply of {} (based on what Bitcoin Core says the current block height is)""".format(config.BTC) + f"""returns the total supply of {config.BTC} (based on what Bitcoin Core says the current block height is)""" block_count = getblockcount() blocks_remaining = block_count total_supply = 0 @@ -181,7 +190,7 @@ def get_unspent_txouts(source, unconfirmed=False, unspent_tx_hash=None): @return: A list of dicts, with each entry in the dict having the following keys: """ - unspent = BACKEND().get_unspent_txouts(source) + unspent = backend().get_unspent_txouts(source) # filter by unspent_tx_hash if unspent_tx_hash is not None: @@ -201,10 +210,10 @@ def get_unspent_txouts(source, unconfirmed=False, unspent_tx_hash=None): return unspent def search_raw_transactions(address, unconfirmed=True, only_tx_hashes=False): - return BACKEND().search_raw_transactions(address, unconfirmed, only_tx_hashes) + return backend().search_raw_transactions(address, unconfirmed, only_tx_hashes) -def get_oldest_tx(address): - return BACKEND().get_oldest_tx(address) +def get_oldest_tx(address, block_index=None): + return backend().get_oldest_tx(address, block_index=block_index) class UnknownPubKeyError(Exception): pass @@ -266,7 +275,7 @@ def init_mempool_cache(): #with this function, don't try to load in more than BACKEND_RAW_TRANSACTIONS_CACHE_SIZE entries num_tx = min(len(mempool_txhash_list), config.BACKEND_RAW_TRANSACTIONS_CACHE_SIZE) - mempool_tx = BACKEND().getrawtransaction_batch(mempool_txhash_list[:num_tx], skip_missing=True, verbose=True) + mempool_tx = backend().getrawtransaction_batch(mempool_txhash_list[:num_tx], skip_missing=True, verbose=True) vin_txhash_list = [] max_remaining_num_tx = config.BACKEND_RAW_TRANSACTIONS_CACHE_SIZE - num_tx @@ -275,10 +284,10 @@ def init_mempool_cache(): tx = mempool_tx[txid] if not(tx is None): vin_txhash_list += [vin['txid'] for vin in tx['vin']] - BACKEND().getrawtransaction_batch(vin_txhash_list[:max_remaining_num_tx], skip_missing=True, verbose=True) + backend().getrawtransaction_batch(vin_txhash_list[:max_remaining_num_tx], skip_missing=True, verbose=True) MEMPOOL_CACHE_INITIALIZED = True - logger.info('Mempool cache initialized: {:.2f}s for {:,} transactions'.format(time.time() - start, num_tx + min(max_remaining_num_tx, len(vin_txhash_list)))) + logger.info(f'Mempool cache initialized: {time.time() - start:.2f}s for {num_tx + min(max_remaining_num_tx, len(vin_txhash_list)):,} transactions') # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/backend/addrindexrs.py b/counterparty-lib/counterpartylib/lib/backend/addrindexrs.py similarity index 53% rename from counterpartylib/lib/backend/addrindexrs.py rename to counterparty-lib/counterpartylib/lib/backend/addrindexrs.py index 55cf70e366..6641c2f2c3 100644 --- a/counterpartylib/lib/backend/addrindexrs.py +++ b/counterparty-lib/counterpartylib/lib/backend/addrindexrs.py @@ -1,5 +1,4 @@ import logging -logger = logging.getLogger(__name__) import sys import os import json @@ -13,15 +12,22 @@ import binascii import hashlib import signal +import functools import bitcoin.wallet from pkg_resources import parse_version -from counterpartylib.lib import config, util, address +from counterpartylib.lib import config, util, ledger, exceptions + +logger = logging.getLogger(config.LOGGER_NAME) READ_BUF_SIZE = 65536 SOCKET_TIMEOUT = 5.0 BACKEND_PING_TIME = 30.0 +BACKOFF_START = 1 +BACKOFF_MAX = 8 +BACKOFF_FACTOR = 2 +INDEXER_THREAD = None raw_transactions_cache = util.DictCache(size=config.BACKEND_RAW_TRANSACTIONS_CACHE_SIZE) # used in getrawtransaction_batch() class BackendRPCError(Exception): @@ -34,37 +40,41 @@ def rpc_call(payload): """Calls to bitcoin core and returns the response""" url = config.BACKEND_URL response = None - TRIES = 12 - for i in range(TRIES): + tries = 0 + while True: try: + tries += 1 response = requests.post(url, data=json.dumps(payload), headers={'content-type': 'application/json'}, verify=(not config.BACKEND_SSL_NO_VERIFY), timeout=config.REQUESTS_TIMEOUT) - if i > 0: - logger.debug('Successfully connected.') - break + + if response == None: + if config.TESTNET: + network = 'testnet' + elif config.REGTEST: + network = 'regtest' + else: + network = 'mainnet' + raise BackendRPCError(f'Cannot communicate with backend at `{util.clean_url_for_log(url)}`. (server is set to run on {network}, is backend?)') + elif response.status_code in (401,): + raise BackendRPCError(f'Authorization error connecting to {util.clean_url_for_log(url)}: {response.status_code} {response.reason}') + elif response.status_code not in (200, 500): + raise BackendRPCError(str(response.status_code) + ' ' + response.reason) + + else: + break + except KeyboardInterrupt: + logger.warning('Interrupted by user') + exit(0) except (Timeout, ReadTimeout, ConnectionError): - logger.debug('Could not connect to backend at `{}`. (Try {}/{})'.format(util.clean_url_for_log(url), i+1, TRIES)) + logger.debug(f'Could not connect to backend at `{util.clean_url_for_log(url)}`. (Try {tries})') time.sleep(5) - if response == None: - if config.TESTNET: - network = 'testnet' - elif config.REGTEST: - network = 'regtest' - else: - network = 'mainnet' - raise BackendRPCError('Cannot communicate with backend at `{}`. (server is set to run on {}, is backend?)'.format(util.clean_url_for_log(url), network)) - elif response.status_code in (401,): - raise BackendRPCError('Authorization error connecting to {}: {} {}'.format(util.clean_url_for_log(url), response.status_code, response.reason)) - elif response.status_code not in (200, 500): - raise BackendRPCError(str(response.status_code) + ' ' + response.reason) - # Handle json decode errors try: response_json = response.json() except json.decoder.JSONDecodeError as e: - raise BackendRPCError('Received invalid JSON from backend with a response of {}'.format(str(response.status_code) + ' ' + response.reason)) + raise BackendRPCError(f"Received invalid JSON from backend with a response of {str(response.status_code) + ' ' + response.reason}") # Batch query returns a list if isinstance(response_json, list): @@ -72,7 +82,7 @@ def rpc_call(payload): if 'error' not in response_json.keys() or response_json['error'] == None: return response_json['result'] elif response_json['error']['code'] == -5: # RPC_INVALID_ADDRESS_OR_KEY - raise BackendRPCError('{} Is `txindex` enabled in {} Core?'.format(response_json['error'], config.BTC_NAME)) + raise BackendRPCError(f"{response_json['error']} Is `txindex` enabled in {config.BTC_NAME} Core?") elif response_json['error']['code'] in [-28, -8, -2]: # “Verifying blocks...” or “Block height out of range” or “The network does not appear to fully agree!“ logger.debug('Backend not ready. Sleeping for ten seconds.') @@ -81,7 +91,7 @@ def rpc_call(payload): time.sleep(10) return rpc_call(payload) else: - raise BackendRPCError('Error connecting to {}: {}'.format(util.clean_url_for_log(url), response_json['error'])) + raise BackendRPCError(f"Error connecting to {util.clean_url_for_log(url)}: {response_json['error']}") def rpc(method, params): payload = { @@ -108,7 +118,7 @@ def make_call(chunk): return list(responses) def extract_addresses(txhash_list): - logger.debug('extract_addresses, txs: %d' % (len(txhash_list), )) + logger.debug(f'extract_addresses, txs: {len(txhash_list)}') tx_hashes_tx = getrawtransaction_batch(txhash_list, verbose=True) return extract_addresses_from_txlist(tx_hashes_tx, getrawtransaction_batch) @@ -118,7 +128,7 @@ def extract_addresses_from_txlist(tx_hashes_tx, _getrawtransaction_batch): helper for extract_addresses, seperated so we can pass in a mocked _getrawtransaction_batch for test purposes """ - logger.debug('extract_addresses_from_txlist, txs: %d' % (len(tx_hashes_tx.keys()), )) + logger.debug(f'extract_addresses_from_txlist, txs: {len(tx_hashes_tx.keys())}') tx_hashes_addresses = {} tx_inputs_hashes = set() # use set to avoid duplicates @@ -130,7 +140,7 @@ def extract_addresses_from_txlist(tx_hashes_tx, _getrawtransaction_batch): tx_inputs_hashes.update([vin['txid'] for vin in tx['vin']]) - logger.debug('extract_addresses, input TXs: %d' % (len(tx_inputs_hashes), )) + logger.debug(f'extract_addresses, input TXs: {len(tx_inputs_hashes)}') # chunk txs to avoid huge memory spikes for tx_inputs_hashes_chunk in util.chunkify(list(tx_inputs_hashes), config.BACKEND_RAW_TRANSACTIONS_CACHE_SIZE): @@ -157,7 +167,9 @@ def getblockhash(blockcount): def getblock(block_hash): return rpc('getblock', [block_hash, False]) +@functools.lru_cache def getrawtransaction(tx_hash, verbose=False, skip_missing=False): + logger.debug(f'Cache miss on transaction {tx_hash}!') return getrawtransaction_batch([tx_hash], verbose=verbose, skip_missing=skip_missing)[tx_hash] def getrawmempool(): @@ -182,8 +194,9 @@ def fee_per_kb(conf_target, mode, nblocks=None): def sendrawtransaction(tx_hex): return rpc('sendrawtransaction', [tx_hex]) + GETRAWTRANSACTION_MAX_RETRIES=2 -monotonic_call_id = 0 +MONOTONIC_CALL_ID = 0 def getrawtransaction_batch(txhash_list, verbose=False, skip_missing=False, _retry=0): _logger = logger.getChild("getrawtransaction_batch") @@ -205,9 +218,9 @@ def getrawtransaction_batch(txhash_list, verbose=False, skip_missing=False, _ret for tx_hash in txhash_list: if tx_hash not in raw_transactions_cache: #call_id = binascii.hexlify(os.urandom(5)).decode('utf8') # Don't drain urandom - global monotonic_call_id - monotonic_call_id = monotonic_call_id + 1 - call_id = "{}".format(monotonic_call_id) + global MONOTONIC_CALL_ID + MONOTONIC_CALL_ID = MONOTONIC_CALL_ID + 1 + call_id = f"{MONOTONIC_CALL_ID}" payload.append({ "method": 'getrawtransaction', "params": [tx_hash, 1], @@ -222,8 +235,7 @@ def getrawtransaction_batch(txhash_list, verbose=False, skip_missing=False, _ret for tx_hash in txhash_list.difference(noncached_txhashes): raw_transactions_cache.refresh(tx_hash) - _logger.debug("getrawtransaction_batch: txhash_list size: {} / raw_transactions_cache size: {} / # getrawtransaction calls: {}".format( - len(txhash_list), len(raw_transactions_cache), len(payload))) + _logger.debug(f"getrawtransaction_batch: txhash_list size: {len(txhash_list)} / raw_transactions_cache size: {len(raw_transactions_cache)} / # getrawtransaction calls: {len(payload)}") # populate cache if len(payload) > 0: @@ -235,11 +247,11 @@ def getrawtransaction_batch(txhash_list, verbose=False, skip_missing=False, _ret raw_transactions_cache[tx_hash] = tx_hex elif skip_missing and 'error' in response and response['error']['code'] == -5: raw_transactions_cache[tx_hash] = None - logging.debug('Missing TX with no raw info skipped (txhash: {}): {}'.format( - tx_hash_call_id.get(response.get('id', '??'), '??'), response['error'])) + missing_tx_hash = tx_hash_call_id.get(response.get('id', '??'), '??') + logger.debug(f"Missing TX with no raw info skipped (txhash: {missing_tx_hash}): {response['error']}") else: #TODO: this seems to happen for bogus transactions? Maybe handle it more gracefully than just erroring out? - raise BackendRPCError('{} (txhash:: {})'.format(response['error'], tx_hash_call_id.get(response.get('id', '??'), '??'))) + raise BackendRPCError(f"{response['error']} (txhash:: {tx_hash_call_id.get(response.get('id', '??'), '??')})") # get transactions from cache result = {} @@ -250,10 +262,10 @@ def getrawtransaction_batch(txhash_list, verbose=False, skip_missing=False, _ret else: result[tx_hash] = raw_transactions_cache[tx_hash]['hex'] if raw_transactions_cache[tx_hash] is not None else None except KeyError as e: #shows up most likely due to finickyness with addrindex not always returning results that we need... - print("Key error in addrindexrs still exists!!!!!") - _logger.warning("tx missing in rawtx cache: {} -- txhash_list size: {}, hash: {} / raw_transactions_cache size: {} / # rpc_batch calls: {} / txhash in noncached_txhashes: {} / txhash in txhash_list: {} -- list {}".format( - e, len(txhash_list), hashlib.md5(json.dumps(list(txhash_list)).encode()).hexdigest(), len(raw_transactions_cache), len(payload), - tx_hash in noncached_txhashes, tx_hash in txhash_list, list(txhash_list.difference(noncached_txhashes)) )) + logger.error("Key error in addrindexrs still exists!!!!!") + _hash = hashlib.md5(json.dumps(list(txhash_list)).encode(), usedforsecurity=False).hexdigest() + _list = list(txhash_list.difference(noncached_txhashes)) + _logger.warning(f"tx missing in rawtx cache: {e} -- txhash_list size: {len(txhash_list)}, hash: {_hash} / raw_transactions_cache size: {len(raw_transactions_cache)} / # rpc_batch calls: {len(payload)} / txhash in noncached_txhashes: {tx_hash in noncached_txhashes} / txhash in txhash_list: {tx_hash in txhash_list} -- list {_list}") if _retry < GETRAWTRANSACTION_MAX_RETRIES: #try again time.sleep(0.05 * (_retry + 1)) # Wait a bit, hitting the index non-stop may cause it to just break down... TODO: Better handling r = getrawtransaction_batch([tx_hash], verbose=verbose, skip_missing=skip_missing, _retry=_retry+1) @@ -269,28 +281,33 @@ def __init__(self, host, port): self.host = host self.port = port self.sock = None - self.lastId = 0 + self.last_id = 0 self.message_to_send = None self.message_result = None self.is_killed = False + self.backoff = BACKOFF_START def stop(self): - logging.debug('AddrIndexRs thread closing') + logger.warn('Killing address indexer connection thread.') self.send({"kill": True}) def connect(self): - self.lastId = 0 + self.last_id = 0 while True: - logging.info('AddrIndexRs connecting...') self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.settimeout(SOCKET_TIMEOUT) try: + logger.debug(f'Opening socket to address indexer at `{self.host}:{self.port}`') self.sock.connect((self.host, self.port)) - except: - logging.info('Error connecting to AddrIndexRs! Retrying in a few seconds') - time.sleep(5.0) + self.backoff = BACKOFF_START + except ConnectionRefusedError as e: + logger.debug(f'Connection refused by addrindexrs. Trying again in {self.backoff:d} seconds.') + time.sleep(self.backoff) + self.backoff = min(self.backoff * BACKOFF_FACTOR, BACKOFF_MAX) + except Exception as e: + logger.exception('Unknown error when attempting to connect to address indexer.') + sys.exit(1) else: - logging.info('Connected to AddrIndexRs!') break def run(self): @@ -298,97 +315,99 @@ def run(self): self.locker.acquire() self.connect() while self.locker.wait(): - if not(self.is_killed) and self.message_to_send != None: - msg = self.message_to_send - self.message_to_send = None - retry_count = 15 - while retry_count > 0: - has_sent = False - while not(has_sent) and msg: - try: - logging.debug('AddrIndexRs sending') - self.sock.send(msg) - has_sent = True - except Exception as e: - #try: - logging.debug('AddrIndexRs error:' + e) - self.connect() - #except Exception as e2: - #logging.debug('AddrIndexRs fatal error:' + e2) - - self.message_to_send = None - data = b"" - parsed = False - while not(parsed): - try: - data = data + self.sock.recv(READ_BUF_SIZE) - self.message_result = json.loads(data.decode('utf-8')) - retry_count = 0 - parsed = True - logging.debug('AddrIndexRs Recv complete!') - except socket.timeout: - logging.debug('AddrIndexRs Recv timeout error sending: '+str(msg)) - if retry_count <= 0: - self.connect() - self.message_result = None - retry_count -= -1 - except socket.error as e: - logging.debug('AddrIndexRs Recv error:' + str(e)+' with msg '+str(msg)) - self.connect() - except Exception as e: - logging.debug('AddrIndexRs Recv error:' + str(e)+' with msg '+str(msg)) - if retry_count <= 0: - raise e - self.message_result = None - retry_count -= 1 - finally: - self.locker.notify() + if self.message_to_send and not self.is_killed: + self.message_result = None + + # Send message over socket. + has_sent = False + while not has_sent: + try: + logger.debug(f'Sending message to address indexer: {self.message_to_send}') + self.sock.send(self.message_to_send) + has_sent = True + self.backoff = BACKOFF_START + except Exception as e: + logger.exception(f'Unknown error sending message to address indexer: {self.message_to_send}') + sys.exit(1) + + # Receive message over socket. + parsed = False + while has_sent and not parsed: + try: + + # Keep reading data until we have a complete message + data = b"" + while True: + chunk = self.sock.recv(READ_BUF_SIZE) + if chunk: + data = data + chunk + try: + self.message_result = json.loads(data.decode('utf-8')) + except json.decoder.JSONDecodeError as e: + # Incomplete message + pass + else: + # Complete message + self.message_to_send = None + parsed = True + self.backoff = BACKOFF_START + break + else: + logger.debug(f'Empty response from address indexer. Trying again in {self.backoff:d} seconds.') + time.sleep(self.backoff) + self.backoff = min(self.backoff * BACKOFF_FACTOR, BACKOFF_MAX) + + except (socket.timeout, socket.error, ConnectionResetError) as e: + logger.debug(f'Error in connection to address indexer: {e}. Trying again in {self.backoff:d} seconds.') + has_sent = False # TODO: Retry send?! + time.sleep(self.backoff) + self.backoff = min(self.backoff * BACKOFF_FACTOR, BACKOFF_MAX) + except Exception as e: + logger.exception('Unknown error when connecting to address indexer.') + self.locker.notify() + sys.exit(1) # TODO + finally: + self.locker.notify() + else: self.locker.notify() + self.sock.close() - logging.debug('AddrIndexRs socket closed normally') + logger.debug('Closed socket to address indexer.') def send(self, msg): self.locker.acquire() if not("kill" in msg): - msg["id"] = self.lastId - self.lastId += 1 + msg["id"] = self.last_id + self.last_id += 1 self.message_to_send = (json.dumps(msg) + "\n").encode('utf8') - self.locker.notify() - self.locker.wait() + self.locker.notify() + self.locker.wait() + else: + self.is_killed = True self.locker.release() return self.message_result +def indexer_check_version(): + logger.debug('Checking version of address indexer.') + addrindexrs_version = INDEXER_THREAD.send({ + "method": "server.version", + "params": [] + }) -_backend = None + try: + addrindexrs_version_label = addrindexrs_version["result"][0][12:] #12 is the length of "addrindexrs " + except TypeError as e: + logger.exception(f'Error when checking address indexer version: {addrindexrs_version}') + sys.exit(1) -def ensure_addrindexrs_connected(): - global _backend - backoff = 500 - max_backoff = 5000 - while _backend == None: - try: - _backend = AddrIndexRsThread(config.INDEXD_CONNECT, config.INDEXD_PORT) - _backend.daemon = True - _backend.start() + if addrindexrs_version_label != config.ADDRINDEXRS_VERSION: + message = f"Wrong addrindexrs version: {config.ADDRINDEXRS_VERSION} is needed but {addrindexrs_version_label} was found" + #logger.error(message) + INDEXER_THREAD.stop() + raise exceptions.InvalidVersion(message) - addrindexrs_version = _backend.send({ - "method": "server.version", - "params": [] - }) - - addrindexrs_version_label = addrindexrs_version["result"][0][12:] #12 is the length of "addrindexrs " - addrindexrs_version_needed = util.get_value_by_block_index("addrindexrs_required_version") - - if parse_version(addrindexrs_version_needed) > parse_version(addrindexrs_version_label): - logger.info("Wrong addrindexrs version: "+addrindexrs_version_needed+" is needed but "+addrindexrs_version_label+" was found") - _backend.stop() - sys.exit(config.EXITCODE_UPDATE_REQUIRED) - - except Exception as e: - logger.debug(e) - time.sleep(backoff) - backoff = min(backoff * 1.5, max_backoff) + logger.debug(f'Version check of address indexer passed ({config.ADDRINDEXRS_VERSION} == {addrindexrs_version_label}).') def _script_pubkey_to_hash(spk): return hashlib.sha256(spk).digest()[::-1].hex() @@ -431,10 +450,8 @@ def unpack_vout(outpoint, tx, block_count): } def get_unspent_txouts(source): - ensure_addrindexrs_connected() - block_count = getblockcount() - result = _backend.send({ + result = INDEXER_THREAD.send({ "method": "blockchain.scripthash.get_utxos", "params": [_address_to_hash(source)] }) @@ -496,17 +513,15 @@ def get_unspent_txouts(source): # # } def search_raw_transactions(address, unconfirmed=True, only_tx_hashes=False): - ensure_addrindexrs_connected() - hsh = _address_to_hash(address) - txs = _backend.send({ + txs = INDEXER_THREAD.send({ "method": "blockchain.scripthash.get_history", "params": [hsh] })["result"] if only_tx_hashes: return txs - else: + else: batch = getrawtransaction_batch([x["tx_hash"] for x in txs], verbose=True) if not(unconfirmed): @@ -514,19 +529,17 @@ def search_raw_transactions(address, unconfirmed=True, only_tx_hashes=False): return batch -def get_oldest_tx(address): - ensure_addrindexrs_connected() - +def get_oldest_tx_legacy(address): hsh = _address_to_hash(address) - call_result = _backend.send({ + call_result = INDEXER_THREAD.send({ "method": "blockchain.scripthash.get_oldest_tx", "params": [hsh] }) - - if not ("error" in call_result): + + if call_result is not None and not ("error" in call_result): txs = call_result["result"] return txs - + return {} # Returns the number of blocks the backend is behind the node @@ -535,8 +548,100 @@ def getindexblocksbehind(): return 0 def init(): - ensure_addrindexrs_connected() + global INDEXER_THREAD + INDEXER_THREAD = AddrIndexRsThread(config.INDEXD_CONNECT, config.INDEXD_PORT) + INDEXER_THREAD.daemon = True + INDEXER_THREAD.start() + logger.info('Connecting to address indexer.') + indexer_check_version() def stop(): - if '_backend' in globals(): - _backend.stop() + if 'INDEXER_THREAD' in globals(): + INDEXER_THREAD.stop() + + +# Basic class to communicate with addrindexrs. +# No locking thread. +# Assume only one instance of this class is used at a time and not concurrently. +# This class does not handle most of the errors, it's up to the caller to do so. +# This class does not check ID in the response. +# This class assumes response are always not longer than READ_BUF_SIZE (65536 bytes). +class AddrindexrsSocket: + + def __init__(self): + self.next_message_id = 0 + self.connect() + + def connect(self): + self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.sock.settimeout(SOCKET_TIMEOUT) + self.sock.connect((config.INDEXD_CONNECT, config.INDEXD_PORT)) + + def _send(self, query, timeout=SOCKET_TIMEOUT): + query["id"] = self.next_message_id + + message = (json.dumps(query) + "\n").encode('utf8') + + self.sock.send(message) + + self.next_message_id += 1 + + start_time = time.time() + while True: + try: + data = self.sock.recv(READ_BUF_SIZE) + except (TimeoutError, ConnectionResetError) as e: + return {} + if data: + try: + response = json.loads(data.decode('utf-8')) + except json.decoder.JSONDecodeError: + return {} + if not response: + return {} + if "error" in response: + return {} + if "result" not in response: + return {} + return response["result"] + + duration = time.time() - start_time + if duration > timeout: + return {} + + def send(self, query, timeout=SOCKET_TIMEOUT, retry=0): + try: + return self._send(query, timeout=timeout) + except BrokenPipeError: + if retry > 3: + raise Exception("Too many retries, please check addrindexrs") + self.sock.close() + self.connect() + return self.send(query, timeout=timeout, retry=retry + 1) + + def get_oldest_tx(self, address, timeout=SOCKET_TIMEOUT, block_index=None): + hsh = _address_to_hash(address) + query = { + "method": "blockchain.scripthash.get_oldest_tx", + "params": [hsh, block_index or ledger.CURRENT_BLOCK_INDEX] + } + return self.send(query, timeout=timeout) + + +# We hardcoded certain addresses to reproduce an `addrindexrs` bug. +# In comments the real result that `addrindexrs` should have returned. +GET_OLDEST_TX_HARDCODED = { + "825096-bc1q66u8n4q0ld3furqugr0xzakpedrc00wv8fagmf": {} # {'block_index': 820886, 'tx_hash': 'e5d130a583983e5d9a9a9175703300f7597eadb6b54fe775055110907b4079ed'} +} +ADDRINDEXRS_CLIENT = None + +def get_oldest_tx(address, block_index=None): + current_block_index = block_index or ledger.CURRENT_BLOCK_INDEX + hardcoded_key = f"{current_block_index}-{address}" + if hardcoded_key in GET_OLDEST_TX_HARDCODED: + return GET_OLDEST_TX_HARDCODED[hardcoded_key] + + global ADDRINDEXRS_CLIENT + if ADDRINDEXRS_CLIENT is None: + ADDRINDEXRS_CLIENT = AddrindexrsSocket() + return ADDRINDEXRS_CLIENT.get_oldest_tx(address, block_index=current_block_index) diff --git a/counterpartylib/lib/backend/indexd.py b/counterparty-lib/counterpartylib/lib/backend/indexd.py similarity index 79% rename from counterpartylib/lib/backend/indexd.py rename to counterparty-lib/counterpartylib/lib/backend/indexd.py index 0fd81e316e..5b6d22183a 100644 --- a/counterpartylib/lib/backend/indexd.py +++ b/counterparty-lib/counterpartylib/lib/backend/indexd.py @@ -1,5 +1,4 @@ import logging -logger = logging.getLogger(__name__) import sys import os import json @@ -14,6 +13,8 @@ from counterpartylib.lib import config, util +logger = logging.getLogger(config.LOGGER_NAME) + raw_transactions_cache = util.DictCache(size=config.BACKEND_RAW_TRANSACTIONS_CACHE_SIZE) # used in getrawtransaction_batch() @@ -28,9 +29,9 @@ def rpc_call(payload): """Calls to bitcoin core and returns the response""" url = config.BACKEND_URL response = None - TRIES = 12 + tries = 12 - for i in range(TRIES): + for i in range(tries): try: response = requests.post(url, data=json.dumps(payload), headers={'content-type': 'application/json'}, verify=(not config.BACKEND_SSL_NO_VERIFY), timeout=config.REQUESTS_TIMEOUT) @@ -38,7 +39,7 @@ def rpc_call(payload): logger.debug('Successfully connected.') break except (Timeout, ReadTimeout, ConnectionError): - logger.debug('Could not connect to backend at `{}`. (Try {}/{})'.format(util.clean_url_for_log(url), i+1, TRIES)) + logger.debug(f'Could not connect to backend at `{util.clean_url_for_log(url)}`. (Try {i + 1}/{tries})') time.sleep(5) if response == None: @@ -48,9 +49,9 @@ def rpc_call(payload): network = 'regtest' else: network = 'mainnet' - raise BackendRPCError('Cannot communicate with backend at `{}`. (server is set to run on {}, is backend?)'.format(util.clean_url_for_log(url), network)) + raise BackendRPCError(f'Cannot communicate with backend at `{util.clean_url_for_log(url)}`. (server is set to run on {network}, is backend?)') elif response.status_code in (401,): - raise BackendRPCError('Authorization error connecting to {}: {} {}'.format(util.clean_url_for_log(url), response.status_code, response.reason)) + raise BackendRPCError(f'Authorization error connecting to {util.clean_url_for_log(url)}: {response.status_code} {response.reason}') elif response.status_code not in (200, 500): raise BackendRPCError(str(response.status_code) + ' ' + response.reason) @@ -58,7 +59,7 @@ def rpc_call(payload): try: response_json = response.json() except json.decoder.JSONDecodeError as e: - raise BackendRPCError('Received invalid JSON from backend with a response of {}'.format(str(response.status_code) + ' ' + response.reason)) + raise BackendRPCError(f"Received invalid JSON from backend with a response of {str(response.status_code) + ' ' + response.reason}") # Batch query returns a list if isinstance(response_json, list): @@ -66,7 +67,7 @@ def rpc_call(payload): if 'error' not in response_json.keys() or response_json['error'] == None: return response_json['result'] elif response_json['error']['code'] == -5: # RPC_INVALID_ADDRESS_OR_KEY - raise BackendRPCError('{} Is `txindex` enabled in {} Core?'.format(response_json['error'], config.BTC_NAME)) + raise BackendRPCError(f"{response_json['error']} Is `txindex` enabled in {config.BTC_NAME} Core?") elif response_json['error']['code'] in [-28, -8, -2]: # “Verifying blocks...” or “Block height out of range” or “The network does not appear to fully agree!“ logger.debug('Backend not ready. Sleeping for ten seconds.') @@ -75,7 +76,7 @@ def rpc_call(payload): time.sleep(10) return rpc_call(payload) else: - raise BackendRPCError('Error connecting to {}: {}'.format(util.clean_url_for_log(url), response_json['error'])) + raise BackendRPCError(f"Error connecting to {util.clean_url_for_log(url)}: {response_json['error']}") def rpc(method, params): payload = { @@ -103,7 +104,7 @@ def make_call(chunk): def extract_addresses(txhash_list): - logger.debug('extract_addresses, txs: %d' % (len(txhash_list), )) + logger.debug(f'extract_addresses, txs: {len(txhash_list)}') tx_hashes_tx = getrawtransaction_batch(txhash_list, verbose=True) return extract_addresses_from_txlist(tx_hashes_tx, getrawtransaction_batch) @@ -114,7 +115,7 @@ def extract_addresses_from_txlist(tx_hashes_tx, _getrawtransaction_batch): helper for extract_addresses, seperated so we can pass in a mocked _getrawtransaction_batch for test purposes """ - logger.debug('extract_addresses_from_txlist, txs: %d' % (len(tx_hashes_tx.keys()), )) + logger.debug(f'extract_addresses_from_txlist, txs: {len(tx_hashes_tx.keys())}') tx_hashes_addresses = {} tx_inputs_hashes = set() # use set to avoid duplicates @@ -126,7 +127,7 @@ def extract_addresses_from_txlist(tx_hashes_tx, _getrawtransaction_batch): tx_inputs_hashes.update([vin['txid'] for vin in tx['vin']]) - logger.debug('extract_addresses, input TXs: %d' % (len(tx_inputs_hashes), )) + logger.debug(f'extract_addresses, input TXs: {len(tx_inputs_hashes)}') # chunk txs to avoid huge memory spikes for tx_inputs_hashes_chunk in util.chunkify(list(tx_inputs_hashes), config.BACKEND_RAW_TRANSACTIONS_CACHE_SIZE): @@ -178,7 +179,8 @@ def fee_per_kb(conf_target, mode, nblocks=None): def sendrawtransaction(tx_hex): return rpc('sendrawtransaction', [tx_hex]) -GETRAWTRANSACTION_MAX_RETRIES=2 + +GETRAWTRANSACTION_MAX_RE=2 def getrawtransaction_batch(txhash_list, verbose=False, skip_missing=False, _retry=0): _logger = logger.getChild("getrawtransaction_batch") @@ -214,8 +216,7 @@ def getrawtransaction_batch(txhash_list, verbose=False, skip_missing=False, _ret for tx_hash in txhash_list.difference(noncached_txhashes): raw_transactions_cache.refresh(tx_hash) - _logger.debug("getrawtransaction_batch: txhash_list size: {} / raw_transactions_cache size: {} / # getrawtransaction calls: {}".format( - len(txhash_list), len(raw_transactions_cache), len(payload))) + _logger.debug(f"getrawtransaction_batch: txhash_list size: {len(txhash_list)} / raw_transactions_cache size: {len(raw_transactions_cache)} / # getrawtransaction calls: {len(payload)}") # populate cache if len(payload) > 0: @@ -227,11 +228,11 @@ def getrawtransaction_batch(txhash_list, verbose=False, skip_missing=False, _ret raw_transactions_cache[tx_hash] = tx_hex elif skip_missing and 'error' in response and response['error']['code'] == -5: raw_transactions_cache[tx_hash] = None - logging.debug('Missing TX with no raw info skipped (txhash: {}): {}'.format( - tx_hash_call_id.get(response.get('id', '??'), '??'), response['error'])) + _hash = tx_hash_call_id.get(response.get('id', '??'), '??'), + logging.debug(f"Missing TX with no raw info skipped (txhash: {_hash}): {response['error']}") else: #TODO: this seems to happen for bogus transactions? Maybe handle it more gracefully than just erroring out? - raise BackendRPCError('{} (txhash:: {})'.format(response['error'], tx_hash_call_id.get(response.get('id', '??'), '??'))) + raise BackendRPCError(f"{response['error']} (txhash:: {tx_hash_call_id.get(response.get('id', '??'), '??')})") # get transactions from cache result = {} @@ -242,9 +243,9 @@ def getrawtransaction_batch(txhash_list, verbose=False, skip_missing=False, _ret else: result[tx_hash] = raw_transactions_cache[tx_hash]['hex'] if raw_transactions_cache[tx_hash] is not None else None except KeyError as e: #shows up most likely due to finickyness with addrindex not always returning results that we need... - _logger.warning("tx missing in rawtx cache: {} -- txhash_list size: {}, hash: {} / raw_transactions_cache size: {} / # rpc_batch calls: {} / txhash in noncached_txhashes: {} / txhash in txhash_list: {} -- list {}".format( - e, len(txhash_list), hashlib.md5(json.dumps(list(txhash_list)).encode()).hexdigest(), len(raw_transactions_cache), len(payload), - tx_hash in noncached_txhashes, tx_hash in txhash_list, list(txhash_list.difference(noncached_txhashes)) )) + _hash = hashlib.md5(json.dumps(list(txhash_list)).encode(), usedforsecurity=False).hexdigest() + _list = list(txhash_list.difference(noncached_txhashes)) + _logger.warning(f"tx missing in rawtx cache: {e} -- txhash_list size: {len(txhash_list)}, hash: {_hash} / raw_transactions_cache size: {len(raw_transactions_cache)} / # rpc_batch calls: {len(payload)} / txhash in noncached_txhashes: {tx_hash in noncached_txhashes} / txhash in txhash_list: {tx_hash in txhash_list} -- list {_list}") if _retry < GETRAWTRANSACTION_MAX_RETRIES: #try again time.sleep(0.05 * (_retry + 1)) # Wait a bit, hitting the index non-stop may cause it to just break down... TODO: Better handling r = getrawtransaction_batch([tx_hash], verbose=verbose, skip_missing=skip_missing, _retry=_retry+1) @@ -268,7 +269,6 @@ def search_raw_transactions(address, unconfirmed=True): return confirmed_transactions - def getindexblocksbehind(): status = indexd_rpc_call('/status') if status['ready']: @@ -285,7 +285,7 @@ def indexd_rpc_call(path): response = requests.get(url, headers={'content-type': 'application/json'}, timeout=config.REQUESTS_TIMEOUT) except (Timeout, ReadTimeout, ConnectionError): - logger.debug('Could not connect to backend at `{}`.'.format(util.clean_url_for_log(url),)) + logger.debug(f'Could not connect to backend at `{util.clean_url_for_log(url)}`.') if response == None: if config.TESTNET: @@ -294,17 +294,17 @@ def indexd_rpc_call(path): network = 'regtest' else: network = 'mainnet' - raise IndexdRPCError('Cannot communicate with {} indexd server at `{}`.'.format(network, util.clean_url_for_log(url))) + raise IndexdRPCError(f'Cannot communicate with {network} indexd server at `{util.clean_url_for_log(url)}`.') elif response.status_code == 400: - raise IndexdRPCError('Indexd returned error: {} {} {}'.format(response.status_code, response.reason, response.text)) + raise IndexdRPCError(f'Indexd returned error: {response.status_code} {response.reason} {response.text}') elif response.status_code not in (200, 500): - raise IndexdRPCError("Bad response from {}: {} {}".format(util.clean_url_for_log(url), response.status_code, response.reason)) + raise IndexdRPCError(f"Bad response from {util.clean_url_for_log(url)}: {response.status_code} {response.reason}") # Return result, with error handling. response_json = response.json() if isinstance(response_json, (list, tuple)) or 'error' not in response_json.keys() or response_json['error'] == None: return response_json else: - raise IndexdRPCError('{}'.format(response_json['error'])) + raise IndexdRPCError(f"{response_json['error']}") # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterparty-lib/counterpartylib/lib/blocks.py b/counterparty-lib/counterpartylib/lib/blocks.py new file mode 100644 index 0000000000..700816fc55 --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/blocks.py @@ -0,0 +1,996 @@ +""" +Initialise database. + +Sieve blockchain for Counterparty transactions, and add them to the database. +""" +from datetime import timedelta +import os +import time +import binascii +import struct +import decimal +D = decimal.Decimal +import logging +import collections +import platform +import csv +import copy +import http + + +import apsw + +import bitcoin as bitcoinlib +from bitcoin.core.script import CScriptInvalidError + +from halo import Halo +from termcolor import colored + +from counterpartylib import server +from counterpartylib.lib import config +from counterpartylib.lib import exceptions +from counterpartylib.lib import util +from counterpartylib.lib import check +from counterpartylib.lib import script +from counterpartylib.lib import backend +from counterpartylib.lib import log +from counterpartylib.lib import database +from counterpartylib.lib import message_type +from counterpartylib.lib import arc4 +from counterpartylib.lib import ledger +from counterpartylib import server +from counterpartylib.lib.transaction_helper import p2sh_encoding +from counterpartylib.lib.gettxinfo import get_tx_info +from counterpartylib.lib.kickstart.blocks_parser import BlockchainParser + +from .messages import (send, order, btcpay, issuance, broadcast, bet, dividend, burn, cancel, rps, rpsresolve, destroy, sweep, dispenser) +from .messages.versions import enhanced_send, mpma + +from .kickstart.utils import ib2h + +from .exceptions import DecodeError, BTCOnlyError + +from counterpartylib.lib import prefetcher + +logger = logging.getLogger(config.LOGGER_NAME) + +NUM_PREFETCHER_THREADS = 3 + +# Order matters for FOREIGN KEY constraints. +TABLES = ['balances', 'credits', 'debits', 'messages'] + \ + ['order_match_expirations', 'order_matches', 'order_expirations', 'orders', + 'bet_match_expirations', 'bet_matches', 'bet_match_resolutions', + 'bet_expirations', 'bets', 'broadcasts', 'btcpays', 'burns', + 'cancels', 'dividends', 'issuances', 'sends', + 'rps_match_expirations', 'rps_expirations', 'rpsresolves', + 'rps_matches', 'rps', + 'destructions', 'assets', 'addresses', 'sweeps', 'dispensers', 'dispenses', + 'dispenser_refills'] + +MAINNET_BURNS = {} +CURR_DIR = os.path.dirname(os.path.realpath(__file__)) +with open(CURR_DIR + '/../mainnet_burns.csv', 'r') as f: + mainnet_burns_reader = csv.DictReader(f) + for line in mainnet_burns_reader: + MAINNET_BURNS[line['tx_hash']] = line + +OK_GREEN = colored("[OK]", "green") +SPINNER_STYLE = "bouncingBar" + +def parse_tx(db, tx): + """Parse the transaction, return True for success.""" + cursor = db.cursor() + + try: + with db: + # Only one source and one destination allowed for now. + if len(tx['source'].split('-')) > 1: + return + if tx['destination']: + if len(tx['destination'].split('-')) > 1: + return + + # Burns. + if tx['destination'] == config.UNSPENDABLE: + burn.parse(db, tx, MAINNET_BURNS) + return + + if len(tx['data']) > 1: + try: + message_type_id, message = message_type.unpack(tx['data'], tx['block_index']) + except struct.error: # Deterministically raised. + message_type_id = None + message = None + else: + message_type_id = None + message = None + + # Protocol change. + rps_enabled = tx['block_index'] >= 308500 or config.TESTNET or config.REGTEST + + if message_type_id == send.ID: + send.parse(db, tx, message) + elif message_type_id == enhanced_send.ID and ledger.enabled('enhanced_sends', block_index=tx['block_index']): + enhanced_send.parse(db, tx, message) + elif message_type_id == mpma.ID and ledger.enabled('mpma_sends', block_index=tx['block_index']): + mpma.parse(db, tx, message) + elif message_type_id == order.ID: + order.parse(db, tx, message) + elif message_type_id == btcpay.ID: + btcpay.parse(db, tx, message) + elif message_type_id == issuance.ID or (ledger.enabled("issuance_backwards_compatibility", block_index=tx['block_index']) and message_type_id == issuance.LR_ISSUANCE_ID): + issuance.parse(db, tx, message, message_type_id) + elif (message_type_id == issuance.SUBASSET_ID and ledger.enabled('subassets', block_index=tx['block_index'])) or (ledger.enabled("issuance_backwards_compatibility", block_index=tx['block_index']) and message_type_id == issuance.LR_SUBASSET_ID): + issuance.parse(db, tx, message, message_type_id) + elif message_type_id == broadcast.ID: + broadcast.parse(db, tx, message) + elif message_type_id == bet.ID: + bet.parse(db, tx, message) + elif message_type_id == dividend.ID: + dividend.parse(db, tx, message) + elif message_type_id == cancel.ID: + cancel.parse(db, tx, message) + elif message_type_id == rps.ID and rps_enabled: + rps.parse(db, tx, message) + elif message_type_id == rpsresolve.ID and rps_enabled: + rpsresolve.parse(db, tx, message) + elif message_type_id == destroy.ID and ledger.enabled('destroy_reactivated', block_index=tx['block_index']): + destroy.parse(db, tx, message) + elif message_type_id == sweep.ID and ledger.enabled('sweep_send', block_index=tx['block_index']): + sweep.parse(db, tx, message) + elif message_type_id == dispenser.ID and ledger.enabled('dispensers', block_index=tx['block_index']): + dispenser.parse(db, tx, message) + elif message_type_id == dispenser.DISPENSE_ID and ledger.enabled('dispensers', block_index=tx['block_index']): + dispenser.dispense(db, tx) + else: + cursor.execute('''UPDATE transactions \ + SET supported=$supported \ + WHERE tx_hash=$tx_hash''', + {'supported': False, 'tx_hash': tx['tx_hash']}) + if tx['block_index'] != config.MEMPOOL_BLOCK_INDEX: + logger.info(f"Unsupported transaction: hash {tx['tx_hash']}; data {tx['data']}") + cursor.close() + return False + + # NOTE: for debugging (check asset conservation after every `N` transactions). + # if not tx['tx_index'] % N: + # check.asset_conservation(db) + + return True + except Exception as e: + raise exceptions.ParseTransactionError(f"{e}") + finally: + cursor.close() + + +def parse_block(db, block_index, block_time, + previous_ledger_hash=None, ledger_hash=None, + previous_txlist_hash=None, txlist_hash=None, + previous_messages_hash=None): + """Parse the block, return hash of new ledger, txlist and messages. + + The unused arguments `ledger_hash` and `txlist_hash` are for the test suite. + """ + + ledger.BLOCK_LEDGER = [] + database.BLOCK_MESSAGES = [] + + assert block_index == ledger.CURRENT_BLOCK_INDEX + + # Expire orders, bets and rps. + order.expire(db, block_index) + bet.expire(db, block_index, block_time) + rps.expire(db, block_index) + + # Close dispensers + dispenser.close_pending(db, block_index) + + # Parse transactions, sorting them by type. + cursor = db.cursor() + cursor.execute('''SELECT * FROM transactions \ + WHERE block_index=$block_index ORDER BY tx_index''', + {'block_index': block_index}) + txlist = [] + for tx in list(cursor): + try: + parse_tx(db, tx) + txlist.append(f"{tx['tx_hash']}{tx['source']}{tx['destination']}{tx['btc_amount']}{tx['fee']}{binascii.hexlify(tx['data']).decode('UTF-8')}") + except exceptions.ParseTransactionError as e: + logger.warning(f"ParseTransactionError for tx {tx['tx_hash']}: {e}") + raise e + #pass + + cursor.close() + + # Calculate consensus hashes. + new_txlist_hash, found_txlist_hash = check.consensus_hash(db, 'txlist_hash', previous_txlist_hash, txlist) + new_ledger_hash, found_ledger_hash = check.consensus_hash(db, 'ledger_hash', previous_ledger_hash, ledger.BLOCK_LEDGER) + new_messages_hash, found_messages_hash = check.consensus_hash(db, 'messages_hash', previous_messages_hash, database.BLOCK_MESSAGES) + + return new_ledger_hash, new_txlist_hash, new_messages_hash, found_messages_hash + + +def initialise(db): + """Initialise data, create and populate the database.""" + cursor = db.cursor() + + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'block_index_idx', + 'index_hash_idx', + 'tx_index_idx', + 'tx_hash_idx', + 'index_index_idx', + 'index_hash_index_idx', + 'address_idx', + 'asset_idx', + 'name_idx', + 'id_idx', + 'addresses_idx', + 'block_index_message_index_idx', + 'asset_longname_idx', + ]) + + # Blocks + cursor.execute('''CREATE TABLE IF NOT EXISTS blocks( + block_index INTEGER UNIQUE, + block_hash TEXT UNIQUE, + block_time INTEGER, + previous_block_hash TEXT UNIQUE, + difficulty INTEGER, + PRIMARY KEY (block_index, block_hash)) + ''') + + # SQLite can’t do `ALTER TABLE IF COLUMN NOT EXISTS`. + block_columns = [column['name'] for column in cursor.execute('''PRAGMA table_info(blocks)''')] + if 'ledger_hash' not in block_columns: + cursor.execute('''ALTER TABLE blocks ADD COLUMN ledger_hash TEXT''') + if 'txlist_hash' not in block_columns: + cursor.execute('''ALTER TABLE blocks ADD COLUMN txlist_hash TEXT''') + if 'messages_hash' not in block_columns: + cursor.execute('''ALTER TABLE blocks ADD COLUMN messages_hash TEXT''') + if 'previous_block_hash' not in block_columns: + cursor.execute('''ALTER TABLE blocks ADD COLUMN previous_block_hash TEXT''') + if 'difficulty' not in block_columns: + cursor.execute('''ALTER TABLE blocks ADD COLUMN difficulty TEXT''') + + database.create_indexes(cursor, 'blocks', [ + ['block_index'], + ['block_index', 'block_hash'], + ]) + + # Check that first block in DB is BLOCK_FIRST. + cursor.execute('''SELECT * from blocks ORDER BY block_index LIMIT 1''') + blocks = list(cursor) + if len(blocks): + if blocks[0]['block_index'] != config.BLOCK_FIRST: + raise exceptions.DatabaseError(f'First block in database is not block {config.BLOCK_FIRST}.') + + # Transactions + cursor.execute('''CREATE TABLE IF NOT EXISTS transactions( + tx_index INTEGER UNIQUE, + tx_hash TEXT UNIQUE, + block_index INTEGER, + block_hash TEXT, + block_time INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + fee INTEGER, + data BLOB, + supported BOOL DEFAULT 1, + FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), + PRIMARY KEY (tx_index, tx_hash, block_index)) + ''') + database.create_indexes(cursor, 'transactions', [ + ['block_index'], + ['tx_index'], + ['tx_hash'], + ['block_index', 'tx_index'], + ['tx_index', 'tx_hash', 'block_index'], + ]) + + # Purge database of blocks, transactions from before BLOCK_FIRST. + cursor.execute('''DELETE FROM blocks WHERE block_index < ?''', (config.BLOCK_FIRST,)) + cursor.execute('''DELETE FROM transactions WHERE block_index < ?''', (config.BLOCK_FIRST,)) + + # (Valid) debits + cursor.execute('''CREATE TABLE IF NOT EXISTS debits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + action TEXT, + event TEXT, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)) + ''') + + debits_columns = [column['name'] for column in cursor.execute('''PRAGMA table_info(debits)''')] + if 'tx_index' not in debits_columns: + cursor.execute('''ALTER TABLE debits ADD COLUMN tx_index INTEGER''') + + database.create_indexes(cursor, 'debits', [ + ['address'], + ['asset'], + ]) + + # (Valid) credits + cursor.execute('''CREATE TABLE IF NOT EXISTS credits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + calling_function TEXT, + event TEXT, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)) + ''') + + credits_columns = [column['name'] for column in cursor.execute('''PRAGMA table_info(credits)''')] + if 'tx_index' not in credits_columns: + cursor.execute('''ALTER TABLE credits ADD COLUMN tx_index INTEGER''') + + database.create_indexes(cursor, 'credits', [ + ['address'], + ['asset'], + ]) + + # Balances + cursor.execute('''CREATE TABLE IF NOT EXISTS balances( + address TEXT, + asset TEXT, + quantity INTEGER) + ''') + + balances_columns = [column['name'] for column in cursor.execute('''PRAGMA table_info(balances)''')] + # TODO: add foreign key constraint + if 'block_index' not in balances_columns: + cursor.execute('''ALTER TABLE balances ADD COLUMN block_index INTEGER''') + if 'tx_index' not in balances_columns: + cursor.execute('''ALTER TABLE balances ADD COLUMN tx_index INTEGER''') + + database.create_indexes(cursor, 'balances', [ + ['address', 'asset'], + ['address'], + ['asset'], + ['block_index'], + ]) + + # Assets + # TODO: Store more asset info here?! + cursor.execute('''CREATE TABLE IF NOT EXISTS assets( + asset_id TEXT UNIQUE, + asset_name TEXT UNIQUE, + block_index INTEGER, + asset_longname TEXT) + ''') + + database.create_indexes(cursor, 'assets', [ + ['asset_name'], + ['asset_id'], + ]) + + # Add asset_longname for sub-assets + # SQLite can’t do `ALTER TABLE IF COLUMN NOT EXISTS`. + columns = [column['name'] for column in cursor.execute('''PRAGMA table_info(assets)''')] + if 'asset_longname' not in columns: + cursor.execute('''ALTER TABLE assets ADD COLUMN asset_longname TEXT''') + + database.create_indexes(cursor, 'assets', [ + ['asset_longname'], + ], unique=True) + + cursor.execute('''SELECT * FROM assets WHERE asset_name = ?''', ('BTC',)) + if not list(cursor): + cursor.execute('''INSERT INTO assets VALUES (?,?,?,?)''', ('0', 'BTC', None, None)) + cursor.execute('''INSERT INTO assets VALUES (?,?,?,?)''', ('1', 'XCP', None, None)) + + # Addresses + # Leaving this here because in the future this could work for other things besides broadcast + cursor.execute('''CREATE TABLE IF NOT EXISTS addresses( + address TEXT UNIQUE, + options INTEGER, + block_index INTEGER) + ''') + + database.create_indexes(cursor, 'addresses', [ + ['address'], + ]) + + # Consolidated + send.initialise(db) + destroy.initialise(db) + order.initialise(db) + btcpay.initialise(db) + issuance.initialise(db) + broadcast.initialise(db) + bet.initialise(db) + dividend.initialise(db) + burn.initialise(db) + cancel.initialise(db) + rps.initialise(db) + rpsresolve.initialise(db) + sweep.initialise(db) + dispenser.initialise(db) + + # Messages + cursor.execute('''CREATE TABLE IF NOT EXISTS messages( + message_index INTEGER PRIMARY KEY, + block_index INTEGER, + command TEXT, + category TEXT, + bindings TEXT, + timestamp INTEGER) + ''') + # TODO: FOREIGN KEY (block_index) REFERENCES blocks(block_index) DEFERRABLE INITIALLY DEFERRED) + database.create_indexes(cursor, 'messages', [ + ['block_index'], + ['block_index', 'message_index'], + ]) + + cursor.execute('''CREATE TABLE IF NOT EXISTS transaction_outputs( + tx_index, + tx_hash TEXT, + block_index INTEGER, + out_index INTEGER, + destination TEXT, + btc_amount INTEGER, + PRIMARY KEY (tx_hash, out_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) + ''') + + # Mempool messages + # NOTE: `status`, 'block_index` are removed from bindings. + cursor.execute('''DROP TABLE IF EXISTS mempool''') + cursor.execute('''CREATE TABLE mempool( + tx_hash TEXT, + command TEXT, + category TEXT, + bindings TEXT, + timestamp INTEGER) + ''') + + # Lock UPDATE on all tables + for table in TABLES: + cursor.execute(f'''CREATE TRIGGER IF NOT EXISTS block_update_{table} + BEFORE UPDATE ON {table} BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + ''') + cursor.close() + + +def list_tx(db, block_hash, block_index, block_time, tx_hash, tx_index, tx_hex=None, decoded_tx=None, block_parser=None): + assert type(tx_hash) == str + cursor = db.cursor() + + # Edge case: confirmed tx_hash also in mempool + # TODO: This is dog-slow. + if block_parser is None: # skip on kickstart + cursor.execute('''SELECT * FROM transactions WHERE tx_hash = ?''', (tx_hash,)) + transactions = list(cursor) + if transactions: + return tx_index + + # Get the important details about each transaction. + if decoded_tx is None: + if tx_hex is None: + tx_hex = backend.getrawtransaction(tx_hash, block_index=block_index) + decoded_tx = BlockchainParser().deserialize_tx(tx_hex) + + source, destination, btc_amount, fee, data, dispensers_outs = get_tx_info( + db, + decoded_tx, + block_index, + block_parser=block_parser + ) + + # For mempool + if block_hash == None: + block_hash = config.MEMPOOL_BLOCK_HASH + block_index = config.MEMPOOL_BLOCK_INDEX + else: + assert block_index == ledger.CURRENT_BLOCK_INDEX + + if source and (data or destination == config.UNSPENDABLE or dispensers_outs): + logger.debug(f'Saving transaction: {tx_hash}') + cursor.execute('''INSERT INTO transactions( + tx_index, + tx_hash, + block_index, + block_hash, + block_time, + source, + destination, + btc_amount, + fee, + data) VALUES(?,?,?,?,?,?,?,?,?,?)''', + (tx_index, + tx_hash, + block_index, + block_hash, + block_time, + source, + destination, + btc_amount, + fee, + data) + ) + + for next_out in dispensers_outs: + cursor.execute('''INSERT INTO transaction_outputs( + tx_index, + tx_hash, + block_index, + out_index, + destination, + btc_amount) VALUES (?,?,?,?,?,?)''', + (tx_index, + tx_hash, + block_index, + next_out["out_index"], + next_out["destination"], + next_out["btc_amount"]) + ) + + cursor.close() + + return tx_index + 1 + else: + pass + + return tx_index + + +def clean_table_from(cursor, table, block_index): + logger.info(f'Rolling table `{table}` back to block {block_index}...') + # internal function, no sql injection here + cursor.execute(f'''DELETE FROM {table} WHERE block_index >= ?''', (block_index,)) # nosec B608 + + +def clean_messages_tables(cursor, block_index=0): + # clean all tables except assets' blocks', 'transaction_outputs' and 'transactions' + cursor.execute('''PRAGMA foreign_keys=OFF''') + for table in TABLES: + clean_table_from(cursor, table, block_index) + cursor.execute('''PRAGMA foreign_keys=ON''') + + +def clean_transactions_tables(cursor, block_index=0): + # clean all tables except assets' blocks', 'transaction_outputs' and 'transactions' + cursor.execute('''PRAGMA foreign_keys=OFF''') + for table in ['transaction_outputs', 'transactions', 'blocks']: + clean_table_from(cursor, table, block_index) + cursor.execute('''PRAGMA foreign_keys=ON''') + + +def rebuild_database(db): + cursor = db.cursor() + cursor.execute('''PRAGMA foreign_keys=OFF''') + for table in TABLES + ['transaction_outputs', 'transactions', 'blocks']: + cursor.execute(f'DROP TABLE {table}') # nosec B608 + cursor.execute('''PRAGMA foreign_keys=ON''') + initialise(db) + + +def rollback(db, block_index=0): + block_index = max(block_index, config.BLOCK_FIRST) + # clean all tables + start_time = time.time() + step = f"Rolling database back to block {block_index}..." + with Halo(text=step, spinner=SPINNER_STYLE): + if block_index == config.BLOCK_FIRST: + rebuild_database(db) + else: + cursor = db.cursor() + clean_messages_tables(cursor, block_index=block_index) + clean_transactions_tables(cursor, block_index=block_index) + cursor.close() + logger.info(f'Database rolled back to block_index {block_index}') + ledger.CURRENT_BLOCK_INDEX = block_index - 1 + print(f'{OK_GREEN} {step}') + print(f'Rollback done in {time.time() - start_time:.2f}s') + + +def generate_progression_message(block, start_time_block_parse, start_time_all_blocks_parse, block_parsed_count, block_count, tx_index=None): + block_parsing_duration = time.time() - start_time_block_parse + cumulated_duration = time.time() - start_time_all_blocks_parse + expected_duration = (cumulated_duration / block_parsed_count) * block_count + remaining_duration = expected_duration - cumulated_duration + current_block = f"Block {block['block_index']} parsed in {block_parsing_duration:.3f}s" + blocks_parsed = f"{block_parsed_count}/{block_count} blocks parsed" + txs_indexed = " - " + if tx_index is not None: + txs_indexed = f" - tx_index: {tx_index} - " + cumulated_duration = timedelta(seconds=int(cumulated_duration)) + expected_duration = timedelta(seconds=int(expected_duration)) + remaining_duration = timedelta(seconds=int(remaining_duration)) + duration = f"{cumulated_duration}/{expected_duration} ({remaining_duration})" + return f"{current_block} [{blocks_parsed}{txs_indexed}{duration}]" + + +def reparse(db, block_index=0): + server.connect_to_addrindexrs() + + cursor = db.cursor() + # clean all tables except assets' blocks', 'transaction_outputs' and 'transactions' + step = f"Rolling database back to block {block_index}..." + with Halo(text=step, spinner=SPINNER_STYLE): + clean_messages_tables(cursor, block_index=block_index) + print(f'{OK_GREEN} {step}') + + # reparse blocks + start_time_all_blocks_parse = time.time() + block_parsed_count = 0 + count_query = "SELECT COUNT(*) AS cnt FROM blocks WHERE block_index > ?" + block_count = cursor.execute(count_query, (block_index,)).fetchone()['cnt'] + step = f"Reparsing blocks from block {block_index}..." + with Halo(text=step, spinner=SPINNER_STYLE) as spinner: + cursor.execute('''SELECT * FROM blocks WHERE block_index > ? ORDER BY block_index''', (block_index,)) + for block in cursor: + start_time_block_parse = time.time() + ledger.CURRENT_BLOCK_INDEX = block['block_index'] + parse_block(db, block['block_index'], block['block_time']) + block_parsed_count += 1 + message = generate_progression_message( + block, + start_time_block_parse, start_time_all_blocks_parse, + block_parsed_count, block_count + ) + spinner.text = message + print(f'{OK_GREEN} {message}') + print(f'All blocks reparsed in {time.time() - start_time_all_blocks_parse:.2f}s') + + +def last_db_index(db): + cursor = db.cursor() + query = "SELECT name FROM sqlite_master WHERE type='table' AND name='blocks'" + if len(list(cursor.execute(query))) == 0: + return 0 + + query = "SELECT block_index FROM blocks ORDER BY block_index DESC LIMIT 1" + blocks = list(cursor.execute(query)) + if len(blocks) == 0: + return 0 + + return blocks[0]['block_index'] + + +def get_next_tx_index(db): + """Return index of next transaction.""" + cursor = db.cursor() + txes = list(cursor.execute('''SELECT * FROM transactions WHERE tx_index = (SELECT MAX(tx_index) from transactions)''')) + if txes: + assert len(txes) == 1 + tx_index = txes[0]['tx_index'] + 1 + else: + tx_index = 0 + cursor.close() + return tx_index + + +class MempoolError(Exception): + pass +def follow(db): + # Check software version. + check.software_version() + + # Initialise. + initialise(db) + + # Get index of last block. + if ledger.CURRENT_BLOCK_INDEX == 0: + logger.warning('New database.') + block_index = config.BLOCK_FIRST + database.update_version(db) + else: + block_index = ledger.CURRENT_BLOCK_INDEX + 1 + + # Check database version. + try: + check.database_version(db) + except check.DatabaseVersionError as e: + logger.info(str(e)) + # no need to rollback a new database + if block_index != config.BLOCK_FIRST: + if e.required_action == "rollback": + rollback(db, block_index=e.from_block_index) + block_index = e.from_block_index + elif e.required_action == "reparse": + reparse(db, block_index=e.from_block_index) + database.update_version(db) + + logger.info('Resuming parsing.') + + # If we're far behind, start Prefetcher. + block_count = backend.getblockcount() # TODO: Need retry logic + if block_index <= block_count - 2000: + prefetcher.start_all(NUM_PREFETCHER_THREADS) + + # Get index of last transaction. + tx_index = get_next_tx_index(db) + + not_supported = {} # No false positives. Use a dict to allow for O(1) lookups + not_supported_sorted = collections.deque() + # ^ Entries in form of (block_index, tx_hash), oldest first. Allows for easy removal of past, unncessary entries + cursor = db.cursor() + + # a reorg can happen without the block count increasing, or even for that + # matter, with the block count decreasing. This should only delay + # processing of the new blocks a bit. + while True: + start_time = time.time() + + # Get block count. + # If the backend is unreachable and `config.FORCE` is set, just sleep + # and try again repeatedly. + try: + block_count = backend.getblockcount() + except (ConnectionRefusedError, http.client.CannotSendRequest, backend.addrindexrs.BackendRPCError) as e: + if config.FORCE: + time.sleep(config.BACKEND_POLL_INTERVAL) + continue + else: + raise e + + # Stop Prefetcher thread as we get close to today. + if block_index >= block_count - 100: + prefetcher.stop_all() + + # Get new blocks. + if block_index <= block_count: + #mempool_spinner.stop() + #block_spinner = Halo(text=f"Parsing block {block_index}...", spinner=SPINNER_STYLE) + #block_spinner.start() + + # Backwards check for incorrect blocks due to chain reorganisation, and stop when a common parent is found. + current_index = block_index + requires_rollback = False + while True: + if current_index == config.BLOCK_FIRST: + break + + logger.debug(f'Checking that block {current_index} is not an orphan.') + # Backend parent hash. + current_hash = backend.getblockhash(current_index) + current_cblock = backend.getblock(current_hash) + backend_parent = bitcoinlib.core.b2lx(current_cblock.hashPrevBlock) + + # DB parent hash. + blocks = list(cursor.execute('''SELECT * FROM blocks + WHERE block_index = ?''', (current_index - 1,))) + if len(blocks) != 1: # For empty DB. + break + db_parent = blocks[0]['block_hash'] + + # Compare. + assert type(db_parent) == str + assert type(backend_parent) == str + if db_parent == backend_parent: + break + else: + current_index -= 1 + requires_rollback = True + + # Rollback for reorganisation. + if requires_rollback: + # Record reorganisation. + logger.warning(f'Blockchain reorganisation at block {current_index}.') + log.message(db, block_index, 'reorg', None, {'block_index': current_index}) + + # Rollback the DB. + rollback(db, block_index=current_index - 1) + block_index = current_index + tx_index = get_next_tx_index(db) + continue + + # Check version. (Don’t add any blocks to the database while + # running an out‐of‐date client!) + # TODO: check.software_version() # This is too much! + + # Get and parse transactions in this block (atomically). + # logger.debug(f'Blockchain cache size: {len(prefetcher.BLOCKCHAIN_CACHE)}') + if current_index in prefetcher.BLOCKCHAIN_CACHE: + # logger.debug(f'Blockchain cache hit! Block index: {current_index}') + block_hash = prefetcher.BLOCKCHAIN_CACHE[current_index]['block_hash'] + txhash_list = prefetcher.BLOCKCHAIN_CACHE[current_index]['txhash_list'] + raw_transactions = prefetcher.BLOCKCHAIN_CACHE[current_index]['raw_transactions'] + previous_block_hash= prefetcher.BLOCKCHAIN_CACHE[current_index]['previous_block_hash'] + block_time= prefetcher.BLOCKCHAIN_CACHE[current_index]['block_time'] + block_difficulty = prefetcher.BLOCKCHAIN_CACHE[current_index]['block_difficulty'] + del prefetcher.BLOCKCHAIN_CACHE[current_index] + else: + if block_index < block_count - 100: + logger.warning(f'Blockchain cache miss :/ Block index: {current_index}') + block_hash = backend.getblockhash(current_index) + block = backend.getblock(block_hash) + previous_block_hash = bitcoinlib.core.b2lx(block.hashPrevBlock) + block_time = block.nTime + txhash_list, raw_transactions = backend.get_tx_list(block) + block_difficulty = block.difficulty + + with db: + ledger.CURRENT_BLOCK_INDEX = block_index + + # List the block. + cursor.execute('''INSERT INTO blocks( + block_index, + block_hash, + block_time, + previous_block_hash, + difficulty) VALUES(?,?,?,?,?)''', + (block_index, + block_hash, + block_time, + previous_block_hash, + block_difficulty) + ) + + # List the transactions in the block. + for tx_hash in txhash_list: + tx_hex = raw_transactions[tx_hash] + tx_index = list_tx(db, block_hash, block_index, block_time, tx_hash, tx_index, tx_hex) + + # Parse the transactions in the block. + new_ledger_hash, new_txlist_hash, new_messages_hash, found_messages_hash = parse_block(db, block_index, block_time) + + # When newly caught up, check for conservation of assets. + if block_index == block_count: + if config.CHECK_ASSET_CONSERVATION: + check.asset_conservation(db) + + # Remove any non‐supported transactions older than ten blocks. + while len(not_supported_sorted) and not_supported_sorted[0][0] <= block_index - 10: + tx_h = not_supported_sorted.popleft()[1] + del not_supported[tx_h] + + duration = time.time() - start_time + overwrote_hash = found_messages_hash if found_messages_hash and found_messages_hash != new_messages_hash else '' + overwrote = f'[overwrote {overwrote_hash}]' if overwrote_hash else '' + logger.info(f'Block: {block_index} ({duration:.2f}, hashes: L:{new_ledger_hash[-5:]} / TX:{new_txlist_hash[-5:]} / M:{new_messages_hash[-5:]}{overwrote})') + + # Increment block index. + block_count = backend.getblockcount() + block_index += 1 + + else: + # TODO: add zeromq support here to await TXs and Blocks instead of constantly polling + # Get old mempool. + old_mempool = list(cursor.execute('''SELECT * FROM mempool''')) + old_mempool_hashes = [message['tx_hash'] for message in old_mempool] + + if backend.MEMPOOL_CACHE_INITIALIZED is False: + backend.init_mempool_cache() + logger.info("Ready for queries.") + + # Fake values for fake block. + curr_time = int(time.time()) + mempool_tx_index = tx_index + + xcp_mempool = [] + raw_mempool = backend.getrawmempool() + + # For each transaction in Bitcoin Core mempool, if it’s new, create + # a fake block, a fake transaction, capture the generated messages, + # and then save those messages. + # Every transaction in mempool is parsed independently. (DB is rolled back after each one.) + # We first filter out which transactions we've already parsed before so we can batch fetch their raw data + parse_txs = [] + for tx_hash in raw_mempool: + # If already in mempool, copy to new one. + if tx_hash in old_mempool_hashes: + for message in old_mempool: + if message['tx_hash'] == tx_hash: + xcp_mempool.append((tx_hash, message)) + + # If not a supported XCP transaction, skip. + elif tx_hash in not_supported: + pass + + # Else: list, parse and save it. + else: + parse_txs.append(tx_hash) + + # fetch raw for all transactions that need to be parsed + # Sometimes the transactions can’t be found: `{'code': -5, 'message': 'No information available about transaction'}` + # - is txindex enabled in Bitcoind? + # - or was there a block found while batch feting the raw txs + # - or was there a double spend for w/e reason accepted into the mempool (replace-by-fee?) + try: + raw_transactions = backend.getrawtransaction_batch(parse_txs, skip_missing=True) + except Exception as e: + logger.warning('Failed to fetch raw for mempool TXs, restarting loop; %s', (e, )) + continue # restart the follow loop + + parsed_txs_count = 0 + for tx_hash in parse_txs: + + # Get block count everytime we parse some mempool_txs. If there is a new block, we just interrupt this process + if parsed_txs_count % 100 == 0: + if len(parse_txs) > 1000: + logger.info(f"Mempool parsed txs count:{parsed_txs_count} from {len(parse_txs)}") + + try: + block_count = backend.getblockcount() + + if block_index <= block_count: + logger.info("Mempool parsing interrupted, there are blocks to parse") + break #Interrupt the process if there is a new block to parse + except (ConnectionRefusedError, http.client.CannotSendRequest, backend.addrindexrs.BackendRPCError) as e: + # Keep parsing what we have, anyway if there is a temporary problem with the server, + # normal parse won't work + pass + + try: + with db: + # List the fake block. + cursor.execute('''INSERT INTO blocks( + block_index, + block_hash, + block_time) VALUES(?,?,?)''', + (config.MEMPOOL_BLOCK_INDEX, + config.MEMPOOL_BLOCK_HASH, + curr_time) + ) + + tx_hex = raw_transactions[tx_hash] + if tx_hex is None: + logger.debug('tx_hash %s not found in backend. Not adding to mempool.', (tx_hash, )) + raise MempoolError + mempool_tx_index = list_tx(db, None, block_index, curr_time, tx_hash, tx_index=mempool_tx_index, tx_hex=tx_hex) + + # Parse transaction. + cursor.execute('''SELECT * FROM transactions WHERE tx_hash = ?''', (tx_hash,)) + transactions = list(cursor) + if transactions: + assert len(transactions) == 1 + transaction = transactions[0] + supported = parse_tx(db, transaction) + if not supported: + not_supported[tx_hash] = '' + not_supported_sorted.append((block_index, tx_hash)) + else: + # If a transaction hasn’t been added to the + # table `transactions`, then it’s not a + # Counterparty transaction. + not_supported[tx_hash] = '' + not_supported_sorted.append((block_index, tx_hash)) + raise MempoolError + + # Save transaction and side‐effects in memory. + cursor.execute('''SELECT * FROM messages WHERE block_index = ?''', (config.MEMPOOL_BLOCK_INDEX,)) + for message in list(cursor): + xcp_mempool.append((tx_hash, message)) + + # Rollback. + raise MempoolError + except exceptions.ParseTransactionError as e: + logger.warning(f'ParseTransactionError for tx {tx_hash}: {e}') + except MempoolError: + pass + + parsed_txs_count = parsed_txs_count + 1 + + if parsed_txs_count < len(parse_txs): + continue #if parse didn't finish is an interruption + else: + if len(parse_txs) > 1000: + logger.info("Mempool parsing finished") + + # Re‐write mempool messages to database. + with db: + cursor.execute('''DELETE FROM mempool''') + for message in xcp_mempool: + tx_hash, new_message = message + new_message['tx_hash'] = tx_hash + cursor.execute('''INSERT INTO mempool VALUES(:tx_hash, :command, :category, :bindings, :timestamp)''', new_message) + + elapsed_time = time.time() - start_time + sleep_time = config.BACKEND_POLL_INTERVAL - elapsed_time if elapsed_time <= config.BACKEND_POLL_INTERVAL else 0 + + logger.getChild('mempool').debug(f'Refresh mempool: {len(xcp_mempool)} XCP txs seen, out of {len(raw_mempool)} total entries (took {elapsed_time:.2f}, next refresh in {sleep_time:.2f})') + + # Wait + db.wal_checkpoint(mode=apsw.SQLITE_CHECKPOINT_PASSIVE) + time.sleep(sleep_time) + + cursor.close() diff --git a/counterparty-lib/counterpartylib/lib/check.py b/counterparty-lib/counterpartylib/lib/check.py new file mode 100644 index 0000000000..84eaa89dc8 --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/check.py @@ -0,0 +1,369 @@ +import json +import requests +import logging +import warnings +import time +import sys + +from counterpartylib.lib import config +from counterpartylib.lib import util +from counterpartylib.lib import exceptions +from counterpartylib.lib import ledger +from counterpartylib.lib import database + +logger = logging.getLogger(config.LOGGER_NAME) + +CONSENSUS_HASH_SEED = 'We can only see a short distance ahead, but we can see plenty there that needs to be done.' + +CONSENSUS_HASH_VERSION_MAINNET = 2 +CHECKPOINTS_MAINNET = { + config.BLOCK_FIRST_MAINNET: {'ledger_hash': '766ff0a9039521e3628a79fa669477ade241fc4c0ae541c3eae97f34b547b0b7', 'txlist_hash': '766ff0a9039521e3628a79fa669477ade241fc4c0ae541c3eae97f34b547b0b7'}, + 280000: {'ledger_hash': '265719e2770d5a6994f6fe49839069183cd842ee14f56c2b870e56641e8a8725', 'txlist_hash': 'a59b33b4633649db4f14586af47e258ed9b8884dbb7aa308fb1f49a653ee60f4'}, + 290000: {'ledger_hash': '4612ed7034474b4ff1727eb0e216d533ebe7ac755fb015e0f9a170c063f3e84c', 'txlist_hash': 'c15423c849fd360d38cbd6c6c3ea37a07fece723da92353f3056facc2676d9e7'}, + 300000: {'ledger_hash': '9a3dd4949780404d61e5ca1929f94a43f08eb0fa19ccb4b5d6a61cafd7943199', 'txlist_hash': 'efa02dbdcc4158a598e3b476ece5ba9cc8d26f3abc8ac3777ac6dde0f0afc7e6'}, + 310000: {'ledger_hash': '45e43d5cc77ea01129df01d7f55b0c89b2d4e18cd3d626fd92f30bfb37a85f4d', 'txlist_hash': '83cdcf75833d828ded09979b601fde87e2fdb0f5eb1cc6ab5d2042b7ec85f90e'}, + 320000: {'ledger_hash': '91c1d33626669e8098bc762b1a9e3f616884e4d1cadda4881062c92b0d3d3e98', 'txlist_hash': '761793042d8e7c80e14a16c15bb9d40e237c468a87c207a59730b616bdfde7d4'}, + 330000: {'ledger_hash': 'dd56aa97e5ca15841407f383ce1d7814536a594d7cfffcb4cf60bee8b362065a', 'txlist_hash': '3c45b4377a99e020550a198daa45c378c488a72ba199b53deb90b320d55a897b'}, + 334000: {'ledger_hash': '24c4fa4097106031267439eb9fbe8ce2a18560169c67726652b608908c1ca9bb', 'txlist_hash': '764ca9e8d3b9546d1c4ff441a39594548989f60daefc6f28e046996e76a273bf'}, + 335000: {'ledger_hash': 'e57c9d606a615e7e09bf99148596dd28e64b25cd8b081e226d535a64c1ed08d1', 'txlist_hash': '437d9507185b5e193627edf4998aad2264755af8d13dd3948ce119b32dd50ce2'}, + 336000: {'ledger_hash': '1329ff5b80d034b64f6ea3481b7c7176437a8837b2a7cb7b8a265fdd1397572d', 'txlist_hash': '33eb8cacd4c750f8132d81e8e43ca13bd565f1734d7d182346364847414da52f'}, + 337000: {'ledger_hash': '607e6a93e8d97cefea9bd55384898ee90c8477ded8a46017f2294feedbc83409', 'txlist_hash': '20b535a55abcc902ca70c19dd648cbe5149af8b4a4157b94f41b71fc422d428e'}, + 338000: {'ledger_hash': 'f043914c71e4b711abb1c1002767b9a4e7d605e249facaaf7a2046b0e9741204', 'txlist_hash': 'fa2c3f7f76345278271ed5ec391d582858e10b1f154d9b44e5a1f4896400ee46'}, + 339000: {'ledger_hash': '49f7240bc90ebc2f242dd599c7d2c427b9d2ac844992131e6e862b638ae4393a', 'txlist_hash': 'c1e3b497c054dcf67ddd0dc223e8b8a6e09a1a05bacb9fef5c03e48bd01e64e7'}, + 340000: {'ledger_hash': '255760e2abfb79fdd76b65759f1590f582c1747f3eeccc4b2ae37d23e30e0729', 'txlist_hash': '8502004bb63e699b243ac8af072d704c69b817905e74787c2031af971e8cd87c'}, + 341000: {'ledger_hash': '1369cba3909e564d2e725879a8b2cd987df075db121d1d421c8ce16b65f4bf04', 'txlist_hash': 'd217d0bed190cb27f58fcb96b255f8006bc4b9ed739e1bb08507201c49c426c8'}, + 342000: {'ledger_hash': '9e7e9b8620717189ccea697ff2f84fe71bc4ae8d991481ff235164d72a9e6e4f', 'txlist_hash': 'adf75d023760101b2b337f6359dd811b12521c83837eb3f7db3bbfd0b095aa54'}, + 343000: {'ledger_hash': 'aa47312ebe94b35504bec6c74713e404e5f36854e0836839344d13debe50558c', 'txlist_hash': '6bdbbc96364b3c92cea132fe66a0925f9445a249f7062326bdcc4ad4711f0c01'}, + 344000: {'ledger_hash': '40187263aa96d1362bf7b19c8ba0fff7f0c0f3eb132a40fc90601b5926c7e6e3', 'txlist_hash': '98da8efe705c4b54275bfd25f816a7e7a4ff1f67647e17d7a0aaa2a3fef8bda0'}, + 345000: {'ledger_hash': 'e4a1e1be4beea63d9740ca166b75bb4e3ffa2af33e1fe282e5b09c4952a7448c', 'txlist_hash': '777f163eaa5ad79dcb738871d4318a0699defec469d8afe91ab6277ff8d3e8b8'}, + 350000: {'ledger_hash': '6a67e9f2e9d07e7bb3277cf9c24f84c857ed1b8fff4a37e589cd56ade276dd95', 'txlist_hash': '96bcbdbce74b782a845d4fda699846d2d3744044c2870a413c018642b8c7c3bf'}, + 355000: {'ledger_hash': 'a84b17992217c7845e133a8597dac84eba1ee8c48bcc7f74bcf512837120f463', 'txlist_hash': '210d96b42644432b9e1a3433a29af9acb3bad212b67a7ae1dbc011a11b04bc24'}, + 360000: {'ledger_hash': 'ddca07ea43b336b703fb8ebab6c0dc30582eb360d6f0eb0446e1fe58b53dee0a', 'txlist_hash': '31d0ff3e3782cf9464081829c5595b3de5ac477290dc069d98672f3f552767f8'}, + 365000: {'ledger_hash': '2d55b126cca3eca15c07b5da683988f9e01d7346d2ca430e940fd7c07ce84fd7', 'txlist_hash': '7988a823cc1e3234953cc87d261d3c1fede8493d0a31b103357eb23cc7dc2eda'}, + 366000: {'ledger_hash': '64ce274df2784f9ca88a8d7071613ec6527e506ec31cd434eca64c6a3345a6b7', 'txlist_hash': '0d4374da6100e279b24f4ba4a2d6afbfc4fb0fc2d312330a515806e8c5f49404'}, + 370000: {'ledger_hash': 'fabb2a2e91fad3fe7734169d554cca396c1030243044cef42fcf65717cf0fa61', 'txlist_hash': '41d1732868c9ac25951ace5ca9f311a15d5eca9bf8d548e0d988c050bd2aff87'}, + 375000: {'ledger_hash': 'a7ac4e2948cea0c426c8fc201cf57d9c313027ea7bff2b32a25ed28d3dbaa581', 'txlist_hash': '96118a7aa2ca753488755b7419a0f44a7fbc371bc58dcc7ab083c70fc14ef8b3'}, + 380000: {'ledger_hash': '70453ba04c1c0198c4771e7964cffa25f9456c2f71456a8b05dfe935d5fcdc88', 'txlist_hash': '8bf2070103cca6f0bde507b7d20b0ba0630da6349beb560fa64c926d08dbcaef'}, + 385000: {'ledger_hash': '93eb0a6e820bee197e7591edbc5ead7bfa38f32c88aabf4785f080fd6ae96c4c', 'txlist_hash': '1f8f17fd5766382a8c10a2a0e995a7d5a5d1bcd5fc0220d1e2691b2a94dcc78f'}, + 390000: {'ledger_hash': '7d42b98eecbc910a67a5f4ac8dc7d6d9b6995ebc5bdf53663b414965fe7d2c5e', 'txlist_hash': 'b50efc4a4241bf3ec33a38c3b5f34756a9f305fe5fa9a80f7f9b70d5d7b2a780'}, + 395000: {'ledger_hash': '89f9ac390b35e69dd75d6c34854ba501dce2f662fc707aee63cad5822c7660f2', 'txlist_hash': '2151dd2f0aa14685f3d041727a689d5d242578072a049123b317724fc4f1100c'}, + 400000: {'ledger_hash': 'eb681a305125e04b6f044b36045e23ee248ce4eb68433cea2b36d15e7e74d5f1', 'txlist_hash': 'b48e9501e8d6f1f1b4127d868860885d3db76698c2c31a567777257df101cf61'}, + 405000: {'ledger_hash': '3725055b37a8958ade6ca1c277cf50fee6036b4a92befb8da2f7c32f0b210881', 'txlist_hash': '871b2adfd246e3fe69f0fe9098e3251045ed6e9712c4cf90ea8dfdd1eb330ed6'}, + 410000: {'ledger_hash': '1fa9a34f233695ebd7ebb08703bf8d99812fa099f297efc5d307d1ebef902ffd', 'txlist_hash': 'ee3bd84c728a37e2bbe061c1539c9ee6d71db18733b1ed53ee8d320481f55030'}, + 415000: {'ledger_hash': '6772a8a1c784db14c0bf111e415919c9da4e5ca142be0b9e323c82c1b13c74e0', 'txlist_hash': 'cfb81785cd48e9ba0e54fee4d62f49b347489da82139fd5e1555ae0bc11a33d5'}, + 420000: {'ledger_hash': '42167117e16943f44bb8117aa0a39bed2d863a454cd694d0bc5006a7aab23b06', 'txlist_hash': 'a1139870bef8eb9bbe60856029a4f01fce5432eb7aeacd088ba2e033757b86e3'}, + 500000: {'ledger_hash': '8f41812d620181c2d566f7c932e5686d645335e8d6df5c7fbb9dd5b5bba414f4', 'txlist_hash': 'ecd99b7d0fdfd7233a975c3c28127ce341cb24bec44d21f9a79c3db4aef5a771'}, + 600000: {'ledger_hash': 'ab9f9c1aafdfc816a19aa403775c56b0b63e4c977685427f8fcee85db449cb15', 'txlist_hash': 'c8c7b8c0a86d601274e047d7038d47cd20f7147d9245f0d22449102b4b0c6fbf'}, + 700000: {'ledger_hash': '4e84538d7bde57bbea518563f2a50f4245597bf5e5619fc4cbe9d981ab9d0adc', 'txlist_hash': 'abb48c10d692c159180a376b4a9002abcf582fab1b5652ba3ccdc73f4b5e0d8a'}, + 725000: {'ledger_hash': 'b4b44f2c87bc7fa59b442a0b81de23ad8bcf9b38c15f943934219c224e1ff51e', 'txlist_hash': '3c9a87bd4150368ed3af587764d67e0fa9c4cdd89aeb364ac60a57c122610464'}, + 750000: {'ledger_hash': 'a944441af4a3b4b40dd892f225d8d44236979f7f837fdb2bf10fb4097712f9a1', 'txlist_hash': '2466a57ab625ffc9a57bce0230f530bc9176406b62d30a43e761b2b92f175044'}, + 775000: {'ledger_hash': 'e8973858cf2aabf01264c5cde87676e657944fcdba7d6cd19fd9e2112f52b590', 'txlist_hash': '81970d14f86e76577dfd819bb5291f8caf71a3a44fb18e9c119cfd73169be053'}, + 775500: {'ledger_hash': '162bfd5c036fe2c6bb38f261578ce2df0b6d82e23d02f43375f92acd5f30c461', 'txlist_hash': '6d323ec8af4f5b1b0ba65028ce574b50d410f279234fe7d7de3d18621d97331a'}, + 776000: {'ledger_hash': '03c9d43c4e099a8dc6a77f86f34a62d76133af18c7f5c255f47fcfc87427bfff', 'txlist_hash': '59968551a22d2241dbf04bb8dca12ac34120313e32fe3ab2f5436853b499ec3e'}, + 776500: {'ledger_hash': '2e95c34487e252e3098b07e1d8d413c562a0995f6d58a46a0684598f7334882b', 'txlist_hash': '5344d9d86af82bcb5ec139d214dc97e012aba300f6f150f8c8b2a13f6c854923'}, + 777000: {'ledger_hash': '3c12194549f2a7ca0de57a211522c2c02d03c792982d887017881e0b50da1c01', 'txlist_hash': '3c52bc42e685ce050418fdb1c4c907161f7ecc6669b1b7585cb74e2cfed3ea17'}, + 777500: {'ledger_hash': '0ee8b7cd915b632891e380c23e278cb231be0eb2e8ee265a636f0cf16c15d5dc', 'txlist_hash': '61073b558c84d51cbf45d0c9983486c030f5aae3fd27a77eae436e52f9479c0b'}, + 778000: {'ledger_hash': '4a82415ba2d4d1c882fe1e7779773434926b277d6526030f3f5a4099f3c8d33e', 'txlist_hash': '31c4f80ff660b2e5c14a8e6aef89412da2d9ce4a0406601bb07efdd2aa05a0d4'}, + 778500: {'ledger_hash': '63410eefef4a136f57da84c391b052c46ccad7df1dbc3af853a24f0a8fbab60f', 'txlist_hash': '64bf65bc4ace9046556ada65c84e10e66d05d88bdfbc35327a49f221f18ba55a'}, + 779000: {'ledger_hash': '0bcf893450abe3e8ecd068c3881b27dd978db7dee89744644dfb179fc0e45a90', 'txlist_hash': '1b698bb19eade25020713a72e803833b231a5b335d0589c98b595980255d338b'}, + 779500: {'ledger_hash': '6b9b7c228ab69c67b0955d622365ec5680f8627d32b2a3b4a150e195d8d6cac2', 'txlist_hash': '47f8a9010b1761619e3c845bb81d53f04855c6e96c87fe75d8028669f837bc7c'}, + 780000: {'ledger_hash': 'c2b27ddb9a060f7f85ef9d6bc17ef4b093e6366b0c83254995279b5929157fb0', 'txlist_hash': 'c1d5c1860270b9ec0f8e8e801c252ac58b9251206773258e2abe207deeb1ddbf'}, + 780500: {'ledger_hash': '727d97d434036f5b7ab8f4d20271b73a7ffb1da00fa82e72dc8046936dffd2fa', 'txlist_hash': '79969f1bdd63c1f3ee7479ea6daa853212940f65775e5c23d143a7dea5b4673a'}, + 781000: {'ledger_hash': '1b94efb58db7d006bb8683262ab3b3f56a4f45b6c14fb1faf3f5d4b6a27031b0', 'txlist_hash': 'c9b74bbbb6218dda42f38dcedf845b35e15b7ab6ac929258d1bf5754c371a81b'}, + 781500: {'ledger_hash': 'eb0f62f5e603b71d74dc29c80cf65e60acc4b33f649131431bd6a94e13a6cac8', 'txlist_hash': '6315ffcc0e5d739f946f9d14e7d5847f4fed1a4de5c9240329db161613adaee4'}, + 782000: {'ledger_hash': '84bbe627a8b35bc8b4085745fa82f4064c3ded80243029f592f6be5c7762f03c', 'txlist_hash': 'f44bb1f2b5fd28deddeee59b7dfae8e9c252b87705dd11b1b2d6619498cd38e5'}, + 782500: {'ledger_hash': '0ae2344029eb70eb3caec435faaeb4c03926cc0c454d68e099b6e05f97e22021', 'txlist_hash': '9cca1b2034e84b8652a46c1fd2ac52e7ad32f8f5bd1dd9edde43411d6fb73373'}, + 783000: {'ledger_hash': '459543e0ecebd9ec37bb44e52a698fe3059be590f7f7de56ab0fa4c463a112fe', 'txlist_hash': 'd41dd8eb0f9143de848c8c52018df5362b842a506cbbdfb2b989333069ae59f2'}, + 783500: {'ledger_hash': '40b338562c78d186c6e028e557aed04e7cbcf90a50fde35004319767ad315c21', 'txlist_hash': '6769b94212aa3fba96a413d3aceb97ca6e254516ce9e60c75cc6b779fce29005'}, + 784000: {'ledger_hash': '7d073aa4e0cc5d348bb9fae60b333eb23c530c670b0aa3e58263eb255cd4cb8a', 'txlist_hash': 'a1bc1dc2bc502d7df6e33b08f420a6e92d4385eb5f1d085c521fe0b89128ad3f'}, + 784500: {'ledger_hash': '70ed9a534d1fc0277be1b17c90625faba6b4f26e02121cbd29bb4a7a9f58c127', 'txlist_hash': 'ba1711aae5e68b643f7721fe659e740d96c6af53b0847ea9126195a602472d18'}, + 785000: {'ledger_hash': '2e4488cf8afb3ec6100fc4b5aec68bbaf0358b93ae78871e626fee5fc6b78480', 'txlist_hash': '29f401d28aa5eec5d12a80c40e333c170aef3f8d21f1863dd98d566aba2bd78a'}, + 785500: {'ledger_hash': '3b2e715da336ba0d9c73896015287cdf8e595e8ad10044662b0d0a0f0cdc6c19', 'txlist_hash': '4baf4a10d0c932e663b24a6a100b11784eb5644602d00dbbe6b1f1c5dd71e10f'}, + 786000: {'ledger_hash': '0c0148fb6690794f0f9bbe5b189d7c828ee96482d94c270be6e9837192f9aeb2', 'txlist_hash': '92dceab6e95997867bd82149ef77ca93667df4400cdb487b201e579f8ad4e84e'}, + 786500: {'ledger_hash': '6145c920231e3fe2e5e72a9af8fe9ff0c6fd0a08deff55b2848815c7f1963814', 'txlist_hash': '7d50d881a87bf88803b8be2272c4cedc97bcca457e06e7c55dbc93522ebe2e06'}, + 787000: {'ledger_hash': '0964d4be96ab36f07973d994c76dda15ccf0bcdc20fcb95bd7f0c01b936e17ac', 'txlist_hash': '70c0139e3bcb9ae243d8c051ebfa7fbc56e84fb19f70b8246e6d7c451f3161de'}, + 787500: {'ledger_hash': 'b2eb368797c3118b73713a190e94e1a693e6022088b06e53dbb136f06b36eda1', 'txlist_hash': 'ade0c47cf7d75eef1dfeb7c3783fe0ffe187dcb2d31a56c16ff73cdc1f38efaf'}, + 788000: {'ledger_hash': '3ffd9a9e9613a5e8b57157bb02662f35126cf4eba6514ba51ef5b9bbc66e6601', 'txlist_hash': '1c84819804bf28a3d86ad01998123e05b1491277cbc3f6d660599ec217480f52'}, + 788500: {'ledger_hash': 'b4d47766c95e4af3e7a6c4771278f68c8e6a3d27097d80b3f6ce7f367bfe016a', 'txlist_hash': '2a46945783308df4521d1b46451942f5ac3c76ad3a10b4ba4cd72276c3719474'}, + 789000: {'ledger_hash': 'e68af5d0e4d8c41424f38306ab70177a42a8f877886df8bad5b9ef1d1c455e1d', 'txlist_hash': '7b2834a2d791530eb75d6f7323265bb6c55bb90b61aae2e44e1517019633652d'}, + 789500: {'ledger_hash': '44a6c0d9459ee441282f7bfd1b92f36a100a1126817bb2868d6337015bbbbc99', 'txlist_hash': '9edf514d577f89e2cc6eccfa272b903689b7c36b7ac4819f32c20dd86a62c557'}, + 790000: {'ledger_hash': 'f71ebb93ae284a09701fc3d5eec9d6b1815adab198881746467ddee23f0aeb98', 'txlist_hash': '0b50b95f056126fe0bbd57698a3a248e04071cb8f25dacfa8b29ca9fdef9e7ce'}, + 790500: {'ledger_hash': '262494d50ba0771dbd4238e20ef5c6fdc9c685134864f52c80ddda5dccc499d7', 'txlist_hash': 'a69bf7808cb6ee6061de42d7c7695f080716aabf233032790ba6d126b3ec694e'}, + 791000: {'ledger_hash': '1c642f7d07fa9dc017a2c5aec7abe906b10fd6a5306820323fab2f3b04f815a0', 'txlist_hash': '9c88afe6c076aad24a75cc1e18fc6bc1aff1701fb6aa667f17d3b3855e16788e'}, + 791500: {'ledger_hash': '753f85888a2d7fa4f4b48ea3a2c96b12fa6f5975092da27775b069f2b29fbabb', 'txlist_hash': 'c8afafbf958e64c745d3f6d9926b66a8d8ade167f6002b50793bdaa315c34986'}, + 792000: {'ledger_hash': 'c430e13020d7d0dd35cb3df9c42dd72ef0809bc9eab0f7a6b71385e4dc76e9da', 'txlist_hash': 'a41c578fdfb8bfc5175154f20eb2cda66cf284434ea25a40792f2663ae283017'}, + 792500: {'ledger_hash': 'fa73024f2e70f9b3ae64acdb811123ea5d1eaf87a080f60a6b071434980a25f0', 'txlist_hash': '159e80767cdeaf2195feaaad418266c144fdb1c23e43b5712711509b0450743e'}, + 793000: {'ledger_hash': '5b7e28a25e96e86128882ff040fa9abbd12b7bf2971c71a2aeb6e9aa3c34cf7b', 'txlist_hash': 'f25d1f410b2691990725169017e9c42e3982699646722c29a04156edc000a3e8'}, + 793500: {'ledger_hash': '4a693ab01726d8dbefae5cfaf4eba9021462215cfa63b7b638475d987f5cd1c8', 'txlist_hash': '9bb933573506c25df3ad1d5fd900590913a2313e20775174ad0d6d494e2b1d5d'}, + 794000: {'ledger_hash': 'e04a7aaa8a1c03a9402e820d6ad86709544a181e0ef8a70fe33bd1643b411e31', 'txlist_hash': 'bc1c163c8934af5f294036844ab37dbf9f9776d266bd5a2a15f21d7668bd6e23'}, + 794500: {'ledger_hash': '57c24c3bc6409b00367db331a95825908cfdf28decee8cd35645be082df126d5', 'txlist_hash': '6aa1c672994857640e30be8554d0d0b9796a8c607c7cbc639e7474c17c25bf27'}, + 795000: {'ledger_hash': 'de1e45661219ae5274922dfaa50276c8ae95f4ff8f36aeca33a551750483b1b2', 'txlist_hash': 'e56f7a5d219b95b3280a022736cbf2064a08093b6fcfc703ee2a26523de17d4b'}, + 795500: {'ledger_hash': '4cc36753d519722f2ded5b9c58f9d9d94b7f24883c90f41049906088d5e35d9b', 'txlist_hash': 'b4b7a89d7c0d223c3b173a5b70a4ce95be19527758e963ebf2b8b462449e8af6'}, + 796000: {'ledger_hash': '80a991d5db218e9a375733e5a9c74e24a5b9798e1cae71a9d680042d77c82456', 'txlist_hash': 'd9a64a6ad4c930f7ee1403ce42264732b8a2b43a302cf0afd86b3f6f86bdda2f'}, + 796500: {'ledger_hash': 'e71b5bcf23e90426c582a8678c608985d8b3d2785d867fedb63be320b1f58fe7', 'txlist_hash': '1fa9ce2cf898a049cbe5cf51db1e21751dfe9bc3622a150c6d40a48ae32277dd'}, + 797000: {'ledger_hash': '07d5ce46922f49315dc6921648389fb2342f181d8f4ce6864c937307bc57f78b', 'txlist_hash': 'b952cf5ef8943c4b064772961b76b3bdbdcca83adad448b99e83a88c99025fb1'}, + 797500: {'ledger_hash': 'fe757ce4945a78b98d236fca6faabf9ae57894d39cdc73c5529d80d993b22fba', 'txlist_hash': '5ef7b81a289718bf2803d07866f7a9f7af6a6e9585931a5cf7c20c953e442bdc'}, + 798000: {'ledger_hash': '3419c8588860bbed1e111afd3aa96f3ec7b72af3d9ea295a170d6629920f7c7e', 'txlist_hash': '2c4437ef523c307ab1c66f9a2f1ebb6c0b96e579da52b7d05598642e2b3e3cb3'}, + 798500: {'ledger_hash': '7b8c30444b232d524f77b5849ae6eecec3ceb316af41027ba82e58637d697e77', 'txlist_hash': '5e40bf1508dcc0c789c503e8c22dd9032508d1e617fb79675c9a65766720bd56'}, + 799000: {'ledger_hash': '530c774526e30d67d71b3ee415fd29a6a9a3063ec79210e759a77fbdd1dcd0d4', 'txlist_hash': '23a122876df0d21e4e2645ff51800fad1a749e22a0b580470cafb15592f2e4e1'}, + 799500: {'ledger_hash': '351f2685c82a3592159f5a287dc999a677233e14b24a4a597ecb25ec898a0bc8', 'txlist_hash': 'aaf997a519ca432700dbe87cb4c9d90f28dfd9fc103c4157c124b905ff782605'}, + 800000: {'ledger_hash': '608777958aa89f5465742ba28c82ab24c3aefd402bbb636745088bfb31cf67f4', 'txlist_hash': 'bfc49c705823f30ad63e8f81ec44a364eeb6d48a0e9b2f6374f0934767a3c948'}, + 800500: {'ledger_hash': '6074a03b294f571ae079a242e323a86428848349f928916ad44d9b20f469a5a8', 'txlist_hash': 'f747068f9cfab2e1a5ecda4da3b2320e2c4776089b1b0c60202fc02db2fd7f04'}, + 801000: {'ledger_hash': '7b8595f07982fe4cc62821c65d70b3e5b9d68feb8f5974f2e28ce1a1cfbbe596', 'txlist_hash': '02b2e3290bbb314bb3fa7dfc81c5cf4c18bf79b31a02529eb0043280fda34b22'}, + 801500: {'ledger_hash': '2542004f0ce0c195e61baa0ea7bc8c5aad76d8fbde069df3ae36c5f9a02baf3b', 'txlist_hash': '3a77b972e44507668ab570c7e4dd15610b4b5cb6a1c8ed3d7c7c31e853275311'}, + 802000: {'ledger_hash': '2146a998ac0d142b2518d6d94d63d38ba74a4e213196869111d7ea9952381733', 'txlist_hash': 'c9273e9360924ee0ef9e10585db442b5ec1d43d082a993ded9aa382f5e779015'}, + 802500: {'ledger_hash': '6a3e9b1ec8ee3bf15d075f9e378885d72087e0e00af359e52c53c957b5053cec', 'txlist_hash': 'f3f15331e612ec403515cafc6cbfc1791154eeda21fce46494ab5712a8184951'}, + 803000: {'ledger_hash': '5a8fdec7a30316e7a939b874a46e73760a8e7bed61e5377a8e9cce724e1df901', 'txlist_hash': '9a85ece61f4e56fcd2dda3029776cb9999ef683ceb0cbab7cd31139f2693f2c9'}, + 803500: {'ledger_hash': '3a7758a0c935ce2268da9e05a919ce67232804cd929f7e43860ed1572c475c1e', 'txlist_hash': '65403001f670456b8ce241e5fdab3345e09d42bd4777b6849f52b51e358973f9'}, + 804000: {'ledger_hash': '0695d792d6ecb357a4947f13fafc015238503f1a5de865c1f3510e016d23abec', 'txlist_hash': 'f12d8bebb4ad034b5d5eedc6b1c75cc9414fb8944d2007bcc3b700099cd40948'}, + 804500: {'ledger_hash': 'f150cab8a33c731116e0c8c63db6f4fef45bdb45f8e3af15a5e20e5cf41e08b7', 'txlist_hash': 'e6e760b79d928538692e0fdc5fe9a9c7ef3849485b20847b1084e72ace2f9a55'}, + 805000: {'ledger_hash': 'fb0cdf7c440a68876e8fa05b336c3b0d76503ec5c3a417ae06d96ef0226ddadd', 'txlist_hash': '313f3712ffee8ba4d5aa2b0205fcfdd776cc325aa7da5a321bb0567de1e49d15'}, + 805500: {'ledger_hash': 'f85ec5183c000fe1715c311cf281926b5593841cb69cfca0d19c9899c29fa7f9', 'txlist_hash': '21b00361b1b1c5206af1f0d2e3fa8a9de8aa65158b11f35d6ab88a1a22ead983'}, + 806000: {'ledger_hash': '7ae775019c80b3df133b093e241a0071c8242842458d801b35d618c344b4d10e', 'txlist_hash': 'efdd67a4ecced666b962adad8f0e88500eb6ed6652a2eb6fe774ea1506194590'}, + 806500: {'ledger_hash': 'e86bd9e5e694e11a47f915e6831dfeba3ae5d6957dea23f0fb585386fe15b1a2', 'txlist_hash': 'bbb095b066622e7297e849b3f2b5d8344dd2de276fbda1ee85483c0099d9a199'}, + 807000: {'ledger_hash': '18dabe46e3b9199ae8fc3edb20df391fd9607f2467a05eed0f589537f4466641', 'txlist_hash': 'cad5e5429ee8207be8a49c0199c07e25e6e87613e73e8aa79c1247be4c1a95be'}, + 807500: {'ledger_hash': '50c5c1b1d4fae539a1db29b95edf22f2393808f004ddcbcf1698e53c75e918dc', 'txlist_hash': '0b7fe21bcddcee8d8c08bd805409503b734c538034b63c9a7dde901779e97b22'}, + 808000: {'ledger_hash': 'fc59871f8d288740f513531337b6deaf22a7a83c076bd7481234386d44190bca', 'txlist_hash': 'f16c177e98fbef73c7628da37021a13791489e38f5bbaf52da9c5fff6a575cb6'}, + 808500: {'ledger_hash': 'a8fef253ae5880e4742203b3677459121c4c974dda8d46b395d075777c498f32', 'txlist_hash': '6b7a992be65c4d6b4f945a31c4702c564d0791b1c3e10f3cb119add9fbf13669'}, + 809000: {'ledger_hash': '95db90effb39eb7c41acfedf73c9c0966e01cda222fbc3395c554fddce5155ae', 'txlist_hash': 'c5999010c2d22a6b9fef30f2fcc1fe6e130e417c951ac942cf4e536d880fe4fa'}, + 809500: {'ledger_hash': 'ffa5ab8c793fde0e9e147af8d4f997ccbf4529e08fa9c397dd58e666d3068c23', 'txlist_hash': 'f90387ff18d8e94391c60af1a0b460b5d63f1c8a22b4fbad6a71a8b2c53fabb8'}, + 810000: {'ledger_hash': 'ff7d9defd96b4b1ca716f8e5b313762335f7eeb26dcf6b1b5b629befdd2cbbba', 'txlist_hash': '0432b1238760c9229f3b71621b2605999fdbaed9502c4536fcc105c4e58c516a'}, + 810500: {'ledger_hash': '8f1c68ba08920385286a911b9a984fcae53f562477f1bfd78069c86dae852106', 'txlist_hash': '5d3a57c573185dbf432e3dba9a862bbe3bcf44a0f0443e27b265520eedfc0710'}, + 811000: {'ledger_hash': 'b27de714230d60cf487c2f81cd8dbc00be37b8d481f370be351097e5fe981879', 'txlist_hash': '130c217aa4062bdfe0a58096cdef3b3500b4ee67fe5f32e801ed3d390258a846'}, + 811500: {'ledger_hash': 'cbce7ef28dac0f45652599e2ce695ed314a3600280166a76ee71186647d906d8', 'txlist_hash': '0a3a3d4cdedcc08f4b416c477c2b0c0139121fcbf17aa01ded4a7edc96570f90'}, + 812000: {'ledger_hash': 'adff6d34efb6eb8efef8032f5894399e8b21dab8da18e29a8ad229d60d6b3548', 'txlist_hash': 'a3593531bd6fac32c6be57f10f22e716c6057028b3645da8d5ff4d29db2b53bd'}, + 812500: {'ledger_hash': 'daeac2a78cd464b8e6a2e3306b2d91e7e747d760c2672246db666b4d914f1900', 'txlist_hash': 'f9c4b3c585987aac5d7fd97a5cc937404de6142e5592a36d28fcd22e3a5a8f74'}, + 813000: {'ledger_hash': '0eb4799faaf9e38ba3f225ad9dff690f5d519a4220bbfecc0b307602e7ef8c70', 'txlist_hash': '551ef3f97b4d928ccc261ab93afd70be7cd4d66df9f0fc134bd5267a0f0f031b'}, + 813500: {'ledger_hash': '717f77faf0e9e4c787587af50ed6e1b604e043e08a668a40a890a302cb0c89e2', 'txlist_hash': 'a9b488c54c1ba46eac7aecac3cde36bb2a918c40fe3e2e01aced2da44f67048b'}, + 814000: {'ledger_hash': '65a2f7eccb13df22e9ee1966f19ccfe392de42d3c976afdfa6920cd891bfe2d8', 'txlist_hash': 'dccb050fa6eb5b34fd32989af5a3a5b4805a9e96b14c53f0e55ee58b96fb1d9e'}, + 814500: {'ledger_hash': 'a427946132700a9d41f20edca086e6f3339bb144437f5be55afa9d6362dec454', 'txlist_hash': '63b2c1b603de93f79fdf8130befd3a5ae7cdac649d502525a7ed07aa15d86f5b'}, + 815000: {'ledger_hash': 'ac10892cd249931504091928cc043904ea4156c564236bc1c365834d2613b446', 'txlist_hash': '11304355f180fb6df6bdbb4c29dd5773571fbb895db005eed7eaadf801db60cd'}, + 815500: {'ledger_hash': '19e3eed1dc8ed3c9658d8fa192ee4ee93b26d73fe90a088cf4d981681d4af665', 'txlist_hash': '4d987a6c22f64ef88b5981cdbaeb1e6aa5c50414d092f9af8e473160a921203c'}, + 816000: {'ledger_hash': 'db5349986ffcad8de88c4775336df7b69aabe1e7eb6d8da59f19177a925fcf5a', 'txlist_hash': '813959903d405d88f335ca5c5584fef830928f644a4a0c9323d6a58e380e2c72'}, + 816500: {'ledger_hash': '6dc7e6b3448f0a81f9567ecb5bd677f40f9b3090f7d2bd1b45197b2f09341744', 'txlist_hash': '8e875380f228a058d1adbabf83c53f4bf336fab9feb338eb7c0d6fd6f0fa61ef'}, + 817000: {'ledger_hash': '583ba6a5bd70fd6a8991b2d4fb01256e6f88f53a08db4a1e31d777f40f112d61', 'txlist_hash': 'cd7e37a897dc03468321c41990f947f74de9d0df5dd28ef76b36252fff04df00'}, + 817500: {'ledger_hash': '13dbce4e7beae630c3d8bf6d9ea05d9802311e603e97c9eba2df6193944cba32', 'txlist_hash': 'c1e95697cd94a206eb8a88e686264982fa73066d58a14a3738f1788a244ad3f0'}, + 818000: {'ledger_hash': '36bb5b07c13d0646c6aed798c02d5013f837f35c8632749fa9b1fce88a112751', 'txlist_hash': '90400654cb90116f5c0d80c687bb85a81bacfc05ff835d2259f992d890e93ac7'}, + 818500: {'ledger_hash': '3fdecb9031a108b308eab7334ddf77f534c41c757837f821a23cffd5cc2eb70a', 'txlist_hash': '4b19e461f08062a3de1284f5f2901afecb48a74b4043efa2289260f60102fa28'}, + 819000: {'ledger_hash': '5f3baea09970bd53634728e4779d458c5049b95ddaea668f91defb7dd50d7a83', 'txlist_hash': 'de4fc83c68d3fcdfb36218136f7913b741163240f86b798aacfe0dc0a2be0747'}, + 819500: {'ledger_hash': 'd0a504dd3205594c711a8a2ff1c8e13631a32d522e3870ceb9abcd75d223bbb5', 'txlist_hash': 'a58eeb487b7cfefb1ba9a582005abe088fae36eaffcc8934e1958d64b76d0397'}, + 820000: {'ledger_hash': 'fa663ed80c1ac185162cb3d4101c9c5c0023e8b2ff3b4837b7378765b75bc472', 'txlist_hash': 'e9ddc32575d88d3db4bab405e93375a36ac94c7c4e0f517a05042030a910bd24'}, + 820500: {'ledger_hash': 'd68ab258478c3276cd46976e79b3db924800847055879ec3c7727836432a37ab', 'txlist_hash': '1d88f2d94977f0f8b48b4a33e8169597aad971c0951575fc74a48b97afb2080f'}, + 821000: {'ledger_hash': 'b32609efcf007d51e253a3f03c25f47941022493380c593a2c2477914cd4439c', 'txlist_hash': 'ee5640c80b46fb9641b94cf65cdbd293a417ce250183110088df1173926acad0'}, + 821500: {'ledger_hash': 'd5448768cbcc354da578c52658dfc2fc946cd7c15fb469bdd371187ab4a9141b', 'txlist_hash': '089c3ab0af5dd54abd5310d222772aac19bb78d99d26bd5308df75281762a59b'}, + 822000: {'ledger_hash': 'a4dd55cd4a838ca5a0b0e985b58813b63722770020942e12763acc94f6789178', 'txlist_hash': '1fad6af3b0661de06077bdbe8e33ac587891421c34860411842dabe25ba8b240'}, + 822500: {'ledger_hash': '62b3ef907776ea6fe8793b8d7ff343c2355b767fd192b11885fb7575597cd0b2', 'txlist_hash': '8738084248b99a68688d10c977de0a8e41016727098480e8b4a991b98f6e54c8'}, + 823000: {'ledger_hash': '48e8b707c1da708fec90068fadbdccb3add79842fbf6b4e0c58da2e1fef00821', 'txlist_hash': '53dd28b40d7ba794794458570fb880b108f9bc255f77721da128ac06f2e96e94'}, + 823500: {'ledger_hash': '472a198e035ac2c16c0037a9dd4390218673afb27fca333b566299ff610166b4', 'txlist_hash': '6ba608ca2d916ff04ff9e207b55a0dc683c90d5254594ca17d733894a2c3957c'}, + 824000: {'ledger_hash': '81e2a32544239f6666da01eef71c1731d9227eb18dfab906bd3b2ccc2513ab97', 'txlist_hash': '98b89c19185b6dea7942048efa40e995c51f9621c67a57d9a1d32061a5da0282'}, + 824500: {'ledger_hash': 'a9b6586bcc48db135fdb05fd723a9440116da83de8b150e0cc65201e8790a42a', 'txlist_hash': '2f14438fbf9174dfd0e92e8d8f20aa856b4fbdb0ab1051064e5edde10a228e29'}, + 825000: {'ledger_hash': '6215c84352544cb6f48033b98b10ed8d54dffda01572406b26e4be4654ebbcaf', 'txlist_hash': '543433ff913bf701b426cdd96ac472825b517c2b22973985bde6bc2dd3d7fc24'}, + 826000: {'ledger_hash': '07a2324c96f132f7479c9d7aa304e2cc8422bde146c49966b28c3e8080ee3c9a', 'txlist_hash': '6cb181cc35022b08a1cb43610c8eec6af5b0e05b5d600b3225a6108c00e2987d'}, + 827000: {'ledger_hash': '85d492ff08c659d0e7a5b32b05baac5be115a84190466dd8b5b715c61411207d', 'txlist_hash': '08173eda8b7189a29a33c83059e92f4968e78ac883c516b7be566d03f28ca75a'}, + 828000: {'ledger_hash': '82d59a5980543caf10d538e110bd78e391a6a7f906566b6a1db7ee485d0d0380', 'txlist_hash': '13c17d1cf50f75d7c09b4ae72861af3712239475a6e2b3bbf0aca6b339d46601'}, + 829000: {'ledger_hash': 'a19efdab4c157e82ef428051437c90621fa164278a7626f76cc85efe473e458b', 'txlist_hash': 'b326e64ec807702354ff0e1bb191893cbde2b73a03c7e2684a6602de2f994050'}, + 830000: {'ledger_hash': 'dd5d454d490cdb1b08bf4a6358065972bc9960f56fdbff43a00957373c1a39ae', 'txlist_hash': '92b7d7f0bc59e1e867e8d5e7c408f93d051288e6192c2a8fb204d80993c6ae57'}, + 831000: {'ledger_hash': 'cbba4f45cc4697c6d6b5c076e0ce8b4db6acb3667954f079fcb9feb907673e4c', 'txlist_hash': '68667fb10b61c713326e22142e26d1fa7b0b2924b8d790b0400e836dbfc8b100'}, + 832000: {'ledger_hash': '56607511952b91c76f13e3f4615d59aa17a8da4f96062b4c8ecf8e2200dd0c6e', 'txlist_hash': '65cab78d55fc5f7b8b03e7a4dcda9d764813d87b780066ef1f60ea243721337d'}, + 833000: {'ledger_hash': 'd3864ffc35caba41917e0caf49d1d30367837cb82cbf03eb97efa54a9879c42f', 'txlist_hash': '7b18037abeb8190d753f22682d5493f1de1c4b7c4ed6ef592f421b5a2b4d91e3'}, + 834000: {'ledger_hash': '3dd8b91827082d0143728ddff37d17e6ab91029f34836a2c316ad9ef5d494ecf', 'txlist_hash': '09f21ff2a847de4a1fe823c6161810c684702956d53cb2602d31d27bef47466b'}, + 834500: {'ledger_hash': '33737a3dc13d9e01e488869a951724f40b6e30e52966905434ee228d3d2cf0f3', 'txlist_hash': 'df88725c205fef2ab157c93ec3894d6b8ee96ecd8b442fa6faede4db9641ed47'}, +} + +CONSENSUS_HASH_VERSION_TESTNET = 7 +CHECKPOINTS_TESTNET = { + config.BLOCK_FIRST_TESTNET: {'ledger_hash': '63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223', 'txlist_hash': '63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'}, + 316000: {'ledger_hash': 'f645e6877da416b8b91670ac927df686c5ea6fc1158c150ae49d594222ed504c', 'txlist_hash': '3e29bcbf3873326097024cc26e9296f0164f552dd79c2ee7cfc344e6d64fa87d'}, + 319000: {'ledger_hash': '384ca28ac56976bc24a6ab7572b41bc61474e6b87fdee814135701d6a8f5c8a2', 'txlist_hash': '6c05c98418a6daa6de82dd59e000d3f3f5407c5432d4ab7d76047873a38e4d4b'}, + 322000: {'ledger_hash': 'f4015c37eb4f31ac42083fd0389cde4868acb5353d3f3abfe2f3a88aba8cae72', 'txlist_hash': '18f278154e9bc3bbcc39da905ab4ad3023742ab7723b55b0fd1c58c36cd3e9bf'}, + 325000: {'ledger_hash': 'd7f70a927f5aeed38e559ddc0bc4697601477ea43cde928ad228fefc195b02da', 'txlist_hash': '1a60e38664b39e0f501b3e5a60c6fc0bd4ed311b74872922c2dde4cb2267fd3e'}, + 329000: {'ledger_hash': '96637b4400cbe084c2c4f139f59b5bc16770815e96306423aaeb2b2677a9a657', 'txlist_hash': '79d577d8fbba0ad6ae67829dfa5824f758286ccd429d65b7d1d42989134d5b57'}, + 350000: {'ledger_hash': 'cae8fec787bba3d5c968a8f4b6fb22a54c96d5acbeadd0425f6b20c3a8813ea3', 'txlist_hash': '097df9c3079df4d96f59518df72492dfd7a79716462e3a4a30d62a37aec6fc16'}, + 400000: {'ledger_hash': '94abfd9c00c8462c155f64011e71af141b7d524e17de5aeda26b7469fe79b5f0', 'txlist_hash': 'a9fc42b69f80ec69f3f98e8a3cd81f4f946544fd0561a62a0891254c16970a87'}, + 450000: {'ledger_hash': '09eb9f2aa605ce77225362b4b556284acdd9f6d3bc273372dfae4a5be9e9b035', 'txlist_hash': '05af651c1de49d0728834991e50000fbf2286d7928961b71917f682a0f2b7171'}, + 500000: {'ledger_hash': '85f3bca8c88246ddfa1a5ec327e71f0696c182ed2a5fedf3712cd2e87e2661ac', 'txlist_hash': '663b34955116a96501e0c1c27f27d24bad7d45995913367553c5cfe4b8b9d0a9'}, + 550000: {'ledger_hash': 'c143026133af2d83bc49ef205b4623194466ca3e7c79f95da2ad565359ccb5ad', 'txlist_hash': '097b8bca7a243e0b9bdf089f34de15bd2dcd4727fb4e88aae7bfd96302250326'}, + 600000: {'ledger_hash': '82caf720967d0e43a1c49a6c75f255d9056ed1bffe3f96d962478faccdaba8ff', 'txlist_hash': '0d99f42184233426d70102d5ac3c80aaecf804d441a8a0d0ef26038d333ab7a7'}, + 650000: {'ledger_hash': 'bef100ae7d5027a8b3f32416c4f26e1f16b21cee2a986c57be1466a3ba338051', 'txlist_hash': '409ed86e4274b511193d187df92e433c734dcc890bf93496e7a7dee770e7035e'}, + 700000: {'ledger_hash': 'afe5e9c3f3a8c6f19c4f9feaf09df051c28202c6bae64f3563a09ffea9e79a6e', 'txlist_hash': '4f9765158855d24950c7e076615b0ad5b72738d4d579decfd3b93c998edf4fcb'}, + 750000: {'ledger_hash': 'e7c7969a6156facb193b77ef71b5e3fac49c6998e5a94ec3b90292be10ece9cc', 'txlist_hash': '6e511790656d3ffec0c912d697e5d1c2a4e401a1606203c77ab5a5855891bc2c'}, + 800000: {'ledger_hash': '42a7c679e51e5e8d38df26b67673b4850e8e6f72723aa19673b3219fcc02b77b', 'txlist_hash': '885ae1e6c21f5fb3645231aaa6bb6910fc21a0ae0ca5dbe9a4011f3b5295b3e7'}, + 850000: {'ledger_hash': '35b2a2ab4a8bfbc321d4545292887b4ccaea73415c7674f795aefa6e240890eb', 'txlist_hash': '72d5cfe1e729a22da9eacd4d7752c881c43a191904556b65a0fae82b770dcdf3'}, + 900000: {'ledger_hash': 'a5552b4998d2e5a516b9310d6592e7368771c1ad3b6e6330f6bc0baa3db31643', 'txlist_hash': '5a2e9fbd9b52ee32b8e8bfff993ed92dc22510aa7448277a704176cf01e55b04'}, + 950000: {'ledger_hash': '5a5e78b55ac294690229abff7ff8f74f390f3a47dc4d08a0bac40e2e89a5bed2', 'txlist_hash': 'f4fa9838fb38d3e5beffb760fae022dcc59c61c506dd28ac83ee48ba814d04b2'}, + 1000000: {'ledger_hash': 'eafca6700b9fd8f3992f8a18316e9ad59480ef74a4e7737793c101878aba8e1a', 'txlist_hash': '03deb626e031f30acd394bf49c35e11a487cb11e55dff5ba9a3f6d04b460c7de'}, + 1050000: {'ledger_hash': '8012ebaf4c6638173e88ecd3e7bb2242ab88a9bdf877fc32c42dbcd7d2d3bab1', 'txlist_hash': '896274fdba957961083b07b80634126bc9f0434b67d723ed1fa83157ce5cd9a7'}, + 1100000: {'ledger_hash': '76357f917235daa180c904cdf5c44366eef3e33539b7b0ba6a38f89582e82d22', 'txlist_hash': '36ecfd4b07f23176cd6960bc0adef97472c13793e53ac3df0eea0dd2e718a570'}, + 1150000: {'ledger_hash': '5924f004bfdc3be449401c764808ebced542d2e06ba30c5984830292d1a926aa', 'txlist_hash': '9ff139dacf4b04293074e962153b972d25fa16d862dae05f7f3acc15e83c4fe8'}, + 1200000: {'ledger_hash': 'a3d009bd2e0b838c185b8866233d7b4edaff87e5ec4cc4719578d1a8f9f8fe34', 'txlist_hash': '11dcf3a0ab714f05004a4e6c77fe425eb2a6427e4c98b7032412ab29363ffbb2'}, + 1250000: {'ledger_hash': '37244453b4eac67d1dbfc0f60116cac90dab7b814d756653ad3d9a072fbac61a', 'txlist_hash': 'c01ed3113f8fd3a6b54f5cefafd842ebf7c314ce82922e36236414d820c5277a'}, + 1300000: {'ledger_hash': 'a83c1cd582604130fd46f1304560caf0f4e3300f3ce7c3a89824b8901f13027f', 'txlist_hash': '67e663b75a80940941b8370ada4985be583edaa7ba454d49db9a864a7bb7979c'}, + 1350000: {'ledger_hash': 'f96e6aff578896a4568fb69f72aa0a8b52eb9ebffefca4bd7368790341cd821d', 'txlist_hash': '83e7d31217af274b13889bd8b9f8f61afcd7996c2c8913e9b53b1d575f54b7c1'}, + 1400000: {'ledger_hash': '85a23f6fee9ce9c80fa335729312183ff014920bbf297095ac77c4105fb67e17', 'txlist_hash': 'eee762f34a3f82e6332c58e0c256757d97ca308719323af78bf5924f08463e12'}, + 1600000: {'ledger_hash': 'f2d54a74ca0974e3d22d4499f10579bb9afbf761178a0a127832f59496c8c24a', 'txlist_hash': 'f720b44719e01a1dbcffe572947a88d943c4841365bea744debc7d26007611c9'}, + 1700000: {'ledger_hash': 'afb9f59bd6ffa51e847ec4495eedb182e449bac341b1bf2b9ccfacaec15ef4b6', 'txlist_hash': '473eab0cf9c07dd869d57839d886efca0b03769672cbb659dc542d748cf77711'}, + 1800000: {'ledger_hash': '09060e590d936f67e6248b60496d1bdd94143cfa935be6a16246d2edec59da9b', 'txlist_hash': 'bc26c44d4ce55be408b38fe14e4659fa655a8386e2d389fe3b7bfb25b4364bd3'}, + 1900000: {'ledger_hash': '357da2e773cab15472419cba2deec47462003a64bf416970ebf47e91b4fac85a', 'txlist_hash': '2b4d321495f04a3065bdd4f0987fd86a54669fb85426152eb1b4a1b8fd11d799'}, + 2000000: {'ledger_hash': 'a2575c20d58a4e69a1d19ceb2e1d615b3b1052e92d5a34c61b03bbab4cc4efc0', 'txlist_hash': '79249281e49719805533be84006c2c48be7ea0c3d14048c1205458c90e7b3158'}, + 2200000: {'ledger_hash': 'c74b27600be79479bf4be3f4499e05283381a6996f3151db69bff10b29b95a10', 'txlist_hash': '8f4ffacc471fd80c8327d163ebe7ff26a0d00ec03672acaff911d16eb37547fd'}, + 2400000: {'ledger_hash': '5c0606e2729d9b2a2181388231fd816ce3279c4183137bf62e9c699dbdc2f140', 'txlist_hash': '36bbd14c69e5fc17cb1e69303affcb808909757395d28e3e3da83394260bf0dd'}, + 2500000: {'ledger_hash': '76262b272c47b5a17f19ffa0ba72256617bd18e51fad4c3c5b3c776cb3a1037b', 'txlist_hash': '26567e5c45a59426b2bcdeb177167a92c5fc21e8fd2000ae9a24eb09e3945f70'}, + 2540000: {'ledger_hash': '6d3e77f1c059b062f4eb131cc8eb1d8355598de756905d83803df0009a514f48', 'txlist_hash': '45e134cb4196bc5cfb4ef9b356e02025f752a9bc0ae635bc9ced2c471ecfcb6c'}, +} + +CONSENSUS_HASH_VERSION_REGTEST = 1 +CHECKPOINTS_REGTEST = { + config.BLOCK_FIRST_REGTEST: {'ledger_hash': '33cf0669a0d309d7e6b1bf79494613b69262b58c0ea03c9c221d955eb4c84fe5', 'txlist_hash': '33cf0669a0d309d7e6b1bf79494613b69262b58c0ea03c9c221d955eb4c84fe5'}, +} + +class ConsensusError(Exception): + pass + +def consensus_hash(db, field, previous_consensus_hash, content): + assert field in ('ledger_hash', 'txlist_hash', 'messages_hash') + + cursor = db.cursor() + block_index = ledger.CURRENT_BLOCK_INDEX + + # Initialise previous hash on first block. + if block_index <= config.BLOCK_FIRST: + assert not previous_consensus_hash + previous_consensus_hash = util.dhash_string(CONSENSUS_HASH_SEED) + + # Get previous hash. + if not previous_consensus_hash: + try: + previous_consensus_hash = list(cursor.execute('''SELECT * FROM blocks WHERE block_index = ?''', (block_index - 1,)))[0][field] + except IndexError: + previous_consensus_hash = None + if not previous_consensus_hash: + raise ConsensusError(f'Empty previous {field} for block {block_index}. Please launch a `rollback`.') + + # Calculate current hash. + if config.TESTNET: + consensus_hash_version = CONSENSUS_HASH_VERSION_TESTNET + elif config.REGTEST: + consensus_hash_version = CONSENSUS_HASH_VERSION_REGTEST + else: + consensus_hash_version = CONSENSUS_HASH_VERSION_MAINNET + + calculated_hash = util.dhash_string(previous_consensus_hash + f"{consensus_hash_version}{''.join(content)}") + + # Verify hash (if already in database) or save hash (if not). + # NOTE: do not enforce this for messages_hashes, those are more informational (for now at least) + found_hash = list(cursor.execute('''SELECT * FROM blocks WHERE block_index = ?''', (block_index,)))[0][field] or None + if found_hash and field != 'messages_hash': + # Check against existing value. + if calculated_hash != found_hash: + raise ConsensusError(f'Inconsistent {field} for block {block_index} (calculated {calculated_hash}, vs {found_hash} in database).') + else: + # Save new hash. No sql injection here. + cursor.execute(f'''UPDATE blocks SET {field} = ? WHERE block_index = ?''', (calculated_hash, block_index)) # nosec B608 + + # Check against checkpoints. + if config.TESTNET: + checkpoints = CHECKPOINTS_TESTNET + elif config.REGTEST: + checkpoints = CHECKPOINTS_REGTEST + else: + checkpoints = CHECKPOINTS_MAINNET + + if field != 'messages_hash' and block_index in checkpoints and checkpoints[block_index][field] != calculated_hash: + error_message = f'Incorrect {field} hash for block {block_index}. Calculated {calculated_hash} but expected {checkpoints[block_index][field]}' + raise ConsensusError(error_message) + + return calculated_hash, found_hash + +class SanityError(Exception): + pass + + +def asset_conservation(db): + logger.debug('Checking for conservation of assets.') + supplies = ledger.supplies(db) + held = ledger.held(db) + for asset in supplies.keys(): + asset_issued = supplies[asset] + asset_held = held[asset] if asset in held and held[asset] != None else 0 + if asset_issued != asset_held: + raise SanityError('{} {} issued ≠ {} {} held'.format(ledger.value_out(db, asset_issued, asset), asset, ledger.value_out(db, asset_held, asset), asset)) + logger.debug('{} has been conserved ({} {} both issued and held)'.format(asset, ledger.value_out(db, asset_issued, asset), asset)) + logger.debug('All assets have been conserved.') + + +class VersionError(Exception): + pass +class VersionUpdateRequiredError(VersionError): + pass + +def check_change(protocol_change, change_name): + + # Check client version. + passed = True + if config.VERSION_MAJOR < protocol_change['minimum_version_major']: + passed = False + elif config.VERSION_MAJOR == protocol_change['minimum_version_major']: + if config.VERSION_MINOR < protocol_change['minimum_version_minor']: + passed = False + elif config.VERSION_MINOR == protocol_change['minimum_version_minor']: + if config.VERSION_REVISION < protocol_change['minimum_version_revision']: + passed = False + + if not passed: + explanation = f"Your version of {config.APP_NAME} is v{config.VERSION_STRING}, but, " + explanation += f"as of block {protocol_change['block_index']}, the minimum version is " + explanation += f"v{protocol_change['minimum_version_major']}.{protocol_change['minimum_version_minor']}.{protocol_change['minimum_version_revision']}. " + explanation += f"Reason: ‘{change_name}’. Please upgrade to the latest version and restart the server." + if ledger.CURRENT_BLOCK_INDEX >= protocol_change['block_index']: + raise VersionUpdateRequiredError(explanation) + else: + warnings.warn(explanation) + +def software_version(): + if config.FORCE: + return + logger.debug('Checking Counterparty version.') + + try: + response = requests.get(config.PROTOCOL_CHANGES_URL, headers={'cache-control': 'no-cache'}, timeout=10) + versions = json.loads(response.text) + except (requests.exceptions.ConnectionError, ConnectionRefusedError, ValueError) as e: + logger.warning('Unable to check version! ' + str(sys.exc_info()[1])) + return + + for change_name in versions: + protocol_change = versions[change_name] + try: + check_change(protocol_change, change_name) + except VersionUpdateRequiredError as e: + logger.error("Version Update Required", exc_info=sys.exc_info()) + sys.exit(config.EXITCODE_UPDATE_REQUIRED) + + logger.debug('Version check passed.') + + +class DatabaseVersionError(Exception): + def __init__(self, message, required_action, from_block_index): + super(DatabaseVersionError, self).__init__(message) + self.required_action = required_action + self.from_block_index = from_block_index + +def database_version(db): + if config.FORCE: + return + logger.debug('Checking database version.') + + version_major, version_minor = database.version(db) + if version_major != config.VERSION_MAJOR: + # Rollback database if major version has changed. + raise DatabaseVersionError( + message=f'Client major version number mismatch ({version_major} ≠ {config.VERSION_MAJOR}).', + required_action='rollback', + from_block_index=config.BLOCK_FIRST + ) + elif version_minor != config.VERSION_MINOR: + # Reparse transactions from the vesion block if minor version has changed. + raise DatabaseVersionError( + message=f'Client minor version number mismatch ({version_minor} ≠ {config.VERSION_MINOR}).', + required_action='reparse', + from_block_index=config.BLOCK_FIRST) diff --git a/counterpartylib/lib/config.py b/counterparty-lib/counterpartylib/lib/config.py similarity index 86% rename from counterpartylib/lib/config.py rename to counterparty-lib/counterpartylib/lib/config.py index 775b6327b1..6201f29ef1 100644 --- a/counterpartylib/lib/config.py +++ b/counterparty-lib/counterpartylib/lib/config.py @@ -6,11 +6,16 @@ UNIT = 100000000 # The same across assets. -# Versions -VERSION_MAJOR = 9 -VERSION_MINOR = 61 -VERSION_REVISION = 2 -VERSION_STRING = str(VERSION_MAJOR) + '.' + str(VERSION_MINOR) + '.' + str(VERSION_REVISION) +# Semantic Version +__version__ = "10.0.0-alpha" # for hatch +VERSION_STRING = __version__ +version = VERSION_STRING.split('-')[0].split('.') +VERSION_MAJOR = int(version[0]) +VERSION_MINOR = int(version[1]) +VERSION_REVISION = int(version[2]) +VERSION_PRE_RELEASE = '-'.join(VERSION_STRING.split('-')[1:]) + +ADDRINDEXRS_VERSION = "0.4.3" # Counterparty protocol @@ -39,6 +44,8 @@ BTC_NAME = 'Bitcoin' XCP_NAME = 'Counterparty' APP_NAME = XCP_NAME.lower() +FULL_APP_NAME = 'Counterparty Core' +LOGGER_NAME = APP_NAME DEFAULT_RPC_PORT_REGTEST = 24000 DEFAULT_RPC_PORT_TESTNET = 14000 @@ -124,8 +131,6 @@ BACKEND_RAW_TRANSACTIONS_CACHE_SIZE = 20000 BACKEND_RPC_BATCH_NUM_WORKERS = 6 -UNDOLOG_MAX_PAST_BLOCKS = 100 #the number of past blocks that we store undolog history - DEFAULT_UTXO_LOCKS_MAX_ADDRESSES = 1000 DEFAULT_UTXO_LOCKS_MAX_AGE = 3.0 #in seconds @@ -137,4 +142,9 @@ MPMA_LIMIT = 1000 +PROTOCOL_CHANGES_URL = "https://counterparty.io/protocol_changes.json" +BOOTSTRAP_URL_MAINNET = "https://bootstrap.counterparty.io/counterparty.latest.tar.gz" +BOOTSTRAP_URL_TESTNET = "https://bootstrap.counterparty.io/counterparty-testnet.latest.tar.gz" + + # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterparty-lib/counterpartylib/lib/database.py b/counterparty-lib/counterpartylib/lib/database.py new file mode 100644 index 0000000000..ed33355b06 --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/database.py @@ -0,0 +1,216 @@ +import apsw +import apsw.bestpractice +apsw.bestpractice.apply(apsw.bestpractice.recommended) # includes WAL mode +import logging +import time +import collections +import copy + +from counterpartylib.lib import config +from counterpartylib.lib import ledger +from counterpartylib.lib import exceptions +from counterpartylib.lib import log + +logger = logging.getLogger(config.LOGGER_NAME) + +BLOCK_MESSAGES = [] + +def rowtracer(cursor, sql): + """Converts fetched SQL data into dict-style""" + dictionary = {} + for index, (name, type_) in enumerate(cursor.getdescription()): + dictionary[name] = sql[index] + return dictionary + + +def exectracer(cursor, sql, bindings): + # This means that all changes to database must use a very simple syntax. + # TODO: Need sanity checks here. + sql = sql.lower() + + # Parse SQL. + array = sql.split('(')[0].split(' ') + command = array[0] + if 'insert' in sql: + category = array[2] + elif 'update' in sql: + category = array[1] + else: + #CREATE TABLE, etc + return True + + db = cursor.getconnection() + dictionary = {'command': command, 'category': category, 'bindings': bindings} + + skip_tables = [ + 'blocks', 'transactions', 'transaction_outputs', + 'balances', 'messages', 'mempool', 'assets', + 'new_sends', 'new_issuances' # interim table for CIP10 activation + ] + skip_tables_block_messages = copy.copy(skip_tables) + if command == 'update': + # List message manually. + skip_tables += ['orders', 'bets', 'rps', 'order_matches', 'bet_matches', 'rps_matches', 'dispensers'] + + # Record alteration in database. + if category not in skip_tables: + if bindings is not None: + if isinstance(bindings, dict): + log.message(db, bindings['block_index'], command, category, bindings) + # tx_index < 0 => kickstart + elif bindings[0] < 0 and sql.startswith('insert into transaction values (tx_index, tx_hash, block_index, '): + log.message(db, bindings[2], command, category, bindings[2]) + else: + #raise exceptions.DatabaseError('Unknown bindings type.') + pass # just pass until we remove this function + + # Record alteration in computation of message feed hash for the block + if category not in skip_tables_block_messages: + # don't include asset_longname as part of the messages hash + # until subassets are enabled + if category == 'issuances' and not ledger.enabled('subassets'): + if isinstance(bindings, dict) and 'asset_longname' in bindings: del bindings['asset_longname'] + + # don't include memo as part of the messages hash + # until enhanced_sends are enabled + if category == 'sends' and not ledger.enabled('enhanced_sends'): + if isinstance(bindings, dict) and 'memo' in bindings: del bindings['memo'] + + sorted_bindings = sorted(bindings.items()) if isinstance(bindings, dict) else [bindings,] + BLOCK_MESSAGES.append(f'{command}{category}{sorted_bindings}') + + return True + + +def get_connection(read_only=True): + """Connects to the SQLite database, returning a db `Connection` object""" + logger.debug(f'Creating connection to `{config.DATABASE}`.') + + if read_only: + db = apsw.Connection(config.DATABASE, flags=apsw.SQLITE_OPEN_READONLY) + else: + db = apsw.Connection(config.DATABASE) + cursor = db.cursor() + + # Make case sensitive the `LIKE` operator. + # For insensitive queries use 'UPPER(fieldname) LIKE value.upper()'' + cursor.execute('PRAGMA case_sensitive_like = ON') + cursor.execute('PRAGMA auto_vacuum = 1') + cursor.execute('PRAGMA synchronous = normal') + cursor.execute('PRAGMA journal_size_limit = 6144000') + cursor.execute('PRAGMA foreign_keys = ON') + cursor.execute('PRAGMA defer_foreign_keys = ON') + + db.setrowtrace(rowtracer) + db.setexectrace(exectracer) + + cursor.close() + return db + +class DatabaseIntegrityError(exceptions.DatabaseError): + pass + + +def check_foreign_keys(db): + cursor = db.cursor() + + logger.info('Checking database foreign keys...') + + rows = list(cursor.execute('''PRAGMA foreign_key_check''')) + if rows: + for row in rows: + logger.debug(f'Foreign Key Error: {row}') + raise exceptions.DatabaseError('Foreign key check failed.') + logger.info('Foreign key check completed.') + + +def intergrity_check(db): + cursor = db.cursor() + + logger.info('Checking database integrity...') + integral = False + + # Try up to 10 times. + for i in range(10): # DUPE + try: + cursor.execute('''PRAGMA integrity_check''') + rows = cursor.fetchall() + if not (len(rows) == 1 and rows[0]['integrity_check'] == 'ok'): + raise exceptions.DatabaseError('Integrity check failed.') + integral = True + break + except DatabaseIntegrityError: + time.sleep(1) + continue + if not integral: + raise exceptions.DatabaseError('Could not perform integrity check.') + logger.info('Integrity check completed.') + + +def version(db): + cursor = db.cursor() + user_version = cursor.execute('PRAGMA user_version').fetchall()[0]['user_version'] + # manage old user_version + if user_version == config.VERSION_MINOR: + version_minor = user_version + version_major = config.VERSION_MAJOR + user_version = (config.VERSION_MAJOR * 1000) + version_minor + cursor.execute(f'PRAGMA user_version = {user_version}') + else: + version_minor = user_version % 1000 + version_major = user_version // 1000 + return version_major, version_minor + + +def update_version(db): + cursor = db.cursor() + user_version = (config.VERSION_MAJOR * 1000) + config.VERSION_MINOR + cursor.execute(f'PRAGMA user_version = {user_version}') # Syntax?! + logger.info('Database version number updated.') + + +def vacuum(db): + logger.info('Starting database VACUUM. This may take awhile...') + cursor = db.cursor() + cursor.execute('VACUUM') + logger.info('Database VACUUM completed.') + + +def field_is_pk(cursor, table, field): + cursor.execute(f"PRAGMA table_info({table})") + for row in cursor: + if row["name"] == field and row["pk"] == 1: + return True + return False + + +def has_fk_on(cursor, table, foreign_key): + cursor.execute(f"PRAGMA foreign_key_list ({table})") + for row in cursor: + if f"{row['table']}.{row['to']}" == foreign_key: + return True + return False + + +def create_indexes(cursor, table, indexes, unique=False): + for index in indexes: + field_names = [field.split(' ')[0] for field in index] + index_name = f"{table}_{'_'.join(field_names)}_idx" + fields = ', '.join(index) + unique_clause = 'UNIQUE' if unique else '' + query = f''' + CREATE {unique_clause} INDEX IF NOT EXISTS {index_name} ON {table} ({fields}) + ''' + cursor.execute(query) + + +def drop_indexes(cursor, indexes): + for index_name in [indexes]: + cursor.execute(f'''DROP INDEX IF EXISTS {index_name}''') + +# called by contracts, no sql injection +def copy_old_table(cursor, table_name, new_create_query): + cursor.execute(f'''ALTER TABLE {table_name} RENAME TO old_{table_name}''') + cursor.execute(new_create_query) + cursor.execute(f'''INSERT INTO {table_name} SELECT * FROM old_{table_name}''') # nosec B608 + cursor.execute(f'''DROP TABLE old_{table_name}''') diff --git a/counterpartylib/lib/exceptions.py b/counterparty-lib/counterpartylib/lib/exceptions.py similarity index 79% rename from counterpartylib/lib/exceptions.py rename to counterparty-lib/counterpartylib/lib/exceptions.py index 7cf3fc294e..4437d2b539 100644 --- a/counterpartylib/lib/exceptions.py +++ b/counterparty-lib/counterpartylib/lib/exceptions.py @@ -37,9 +37,9 @@ class PushDataDecodeError(DecodeError): pass class BTCOnlyError(MessageError): - def __init__(self, msg, decodedTx=None): + def __init__(self, msg, decoded_tx=None): super(BTCOnlyError, self).__init__(msg) - self.decodedTx = decodedTx + self.decoded_tx = decoded_tx class BalanceError(Exception): pass @@ -50,4 +50,14 @@ class EncodingError(Exception): class OptionsError(Exception): pass +class UnknownTable(Exception): + pass + +class UnknownField(Exception): + pass + +class InvalidVersion(Exception): + pass + + # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterparty-lib/counterpartylib/lib/gettxinfo.py b/counterparty-lib/counterpartylib/lib/gettxinfo.py new file mode 100644 index 0000000000..d8e9501eb7 --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/gettxinfo.py @@ -0,0 +1,506 @@ +import binascii +import logging +import struct + +import bitcoin as bitcoinlib +from bitcoin.core.script import CScriptInvalidError + +from counterpartylib.lib import ledger, script, config, backend, arc4 +from counterpartylib.lib.exceptions import DecodeError, BTCOnlyError +from counterpartylib.lib.kickstart.utils import ib2h +from counterpartylib.lib.kickstart.blocks_parser import BlockchainParser +from counterpartylib.lib.transaction_helper import p2sh_encoding +from counterpartylib.lib.messages import dispenser +from counterpartylib.lib.opcodes import * + + +logger = logging.getLogger(config.LOGGER_NAME) + + +def arc4_decrypt(cyphertext, decoded_tx): + '''Un‐obfuscate. Initialise key once per attempt.''' + key = arc4.init_arc4(decoded_tx["vin"][0]["hash"][::-1]) + return key.decrypt(cyphertext) + + +def get_opreturn(asm): + if len(asm) == 2 and asm[0] == OP_RETURN: + pubkeyhash = asm[1] + if type(pubkeyhash) == bytes: + return pubkeyhash + raise DecodeError('invalid OP_RETURN') + + +def decode_opreturn(asm, decoded_tx): + chunk = get_opreturn(asm) + chunk = arc4_decrypt(chunk, decoded_tx) + if chunk[:len(config.PREFIX)] == config.PREFIX: # Data + destination, data = None, chunk[len(config.PREFIX):] + else: + raise DecodeError('unrecognised OP_RETURN output') + + return destination, data + + +def decode_checksig(asm, decoded_tx): + pubkeyhash = script.get_checksig(asm) + chunk = arc4_decrypt(pubkeyhash, decoded_tx) # TODO: This is slow! + if chunk[1:len(config.PREFIX) + 1] == config.PREFIX: # Data + # Padding byte in each output (instead of just in the last one) so that encoding methods may be mixed. Also, it’s just not very much data. + chunk_length = chunk[0] + chunk = chunk[1:chunk_length + 1] + destination, data = None, chunk[len(config.PREFIX):] + else: # Destination + pubkeyhash = binascii.hexlify(pubkeyhash).decode('utf-8') + destination, data = script.base58_check_encode(pubkeyhash, config.ADDRESSVERSION), None + return destination, data + + +def decode_scripthash(asm): + destination = script.base58_check_encode(binascii.hexlify(asm[1]).decode('utf-8'), config.P2SH_ADDRESSVERSION) + + return destination, None + + +def decode_checkmultisig(asm, decoded_tx): + pubkeys, signatures_required = script.get_checkmultisig(asm) + chunk = b'' + for pubkey in pubkeys[:-1]: # (No data in last pubkey.) + chunk += pubkey[1:-1] # Skip sign byte and nonce byte. + chunk = arc4_decrypt(chunk, decoded_tx) + if chunk[1:len(config.PREFIX) + 1] == config.PREFIX: # Data + # Padding byte in each output (instead of just in the last one) so that encoding methods may be mixed. Also, it’s just not very much data. + chunk_length = chunk[0] + chunk = chunk[1:chunk_length + 1] + destination, data = None, chunk[len(config.PREFIX):] + else: # Destination + pubkeyhashes = [script.pubkey_to_pubkeyhash(pubkey) for pubkey in pubkeys] + destination, data = script.construct_array(signatures_required, pubkeyhashes, len(pubkeyhashes)), None + + return destination, data + + +def get_pubkeyhash(scriptpubkey, block_index): + asm = script.script_to_asm(scriptpubkey) + if ledger.enabled('multisig_addresses', block_index=block_index): + if len(asm) > 0: + + if asm[0] == OP_DUP: + if len(asm) != 5 or asm[1] != OP_HASH160 or asm[3] != OP_EQUALVERIFY or asm[4] != OP_CHECKSIG: + return None, None + else: + return asm[2], config.ADDRESSVERSION + + elif (asm[0] == OP_HASH160) and ledger.enabled('p2sh_dispensers_support'): + if len(asm) != 3 or asm[-1] != 'OP_EQUAL': + return None, None + else: + return asm[1], config.P2SH_ADDRESSVERSION + return None, None + else: + if len(asm) != 5 or asm[0] != OP_DUP or asm[1] != OP_HASH160 or asm[3] != OP_EQUALVERIFY or asm[4] != OP_CHECKSIG: + return None, None + return asm[2], config.ADDRESSVERSION + + +def is_witness_v0_keyhash(scriptpubkey): + """Returns true if this is a scriptpubkey for V0 P2WPKH. """ + return len(scriptpubkey) == 22 and scriptpubkey[0:2] == b'\x00\x14' + + +def get_address(scriptpubkey, block_index): + if ledger.enabled('correct_segwit_txids') and is_witness_v0_keyhash(scriptpubkey): + address = script.script_to_address(scriptpubkey) + return address + else: + pubkeyhash, address_version = get_pubkeyhash(scriptpubkey, block_index) + if not pubkeyhash: + return False + pubkeyhash = binascii.hexlify(pubkeyhash).decode('utf-8') + address = script.base58_check_encode(pubkeyhash, address_version) + # Test decoding of address. + if address != config.UNSPENDABLE and binascii.unhexlify(bytes(pubkeyhash, 'utf-8')) != script.base58_check_decode(address, address_version): + return False + return address + + +def get_transaction_sources(decoded_tx, block_parser=None): + sources = [] + outputs_value = 0 + + for vin in decoded_tx["vin"][:]: # Loop through inputs. + script_pubkey = None + if block_parser: + vin_ctx = block_parser.read_raw_transaction(ib2h(vin["hash"])) + else: + # Note: We don't know what block the `vin` is in, and the block might have been from a while ago, so this call may not hit the cache. + vin_tx = backend.getrawtransaction(ib2h(vin["hash"]), block_index=None) + vin_ctx = BlockchainParser().deserialize_tx(vin_tx) + + vout = vin_ctx["vout"][vin["n"]] + outputs_value += vout["nValue"] + script_pubkey = vout["scriptPubKey"] + + asm = script.script_to_asm(script_pubkey) + + if asm[-1] == OP_CHECKSIG: + new_source, new_data = decode_checksig(asm, decoded_tx) + if new_data or not new_source: + raise DecodeError('data in source') + elif asm[-1] == OP_CHECKMULTISIG: + new_source, new_data = decode_checkmultisig(asm, decoded_tx) + if new_data or not new_source: + raise DecodeError('data in source') + elif asm[0] == OP_HASH160 and asm[-1] == OP_EQUAL and len(asm) == 3: + new_source, new_data = decode_scripthash(asm) + if new_data or not new_source: + raise DecodeError('data in source') + elif ledger.enabled('segwit_support') and asm[0] == b'': + # Segwit output + new_source = script.script_to_address(script_pubkey) + new_data = None + else: + raise DecodeError('unrecognised source type') + + # old; append to sources, results in invalid addresses + # new; first found source is source, the rest can be anything (to fund the TX for example) + if not (ledger.enabled('first_input_is_source') and len(sources)): + # Collect unique sources. + if new_source not in sources: + sources.append(new_source) + + return '-'.join(sources), outputs_value + + +def get_transaction_source_from_p2sh(decoded_tx, p2sh_is_segwit, block_parser=None): + p2sh_encoding_source = None + data = b'' + outputs_value = 0 + + for vin in decoded_tx["vin"]: + if block_parser: + vin_ctx = block_parser.read_raw_transaction(ib2h(vin["hash"])) + else: + # Note: We don't know what block the `vin` is in, and the block might have been from a while ago, so this call may not hit the cache. + vin_tx = backend.getrawtransaction(ib2h(vin["hash"]), block_index=None) + vin_ctx = BlockchainParser().deserialize_tx(vin_tx) + + if ledger.enabled("prevout_segwit_fix"): + prevout_is_segwit = len(vin_ctx['vtxinwit']) > 0 + else: + prevout_is_segwit = p2sh_is_segwit + + vout = vin_ctx["vout"][vin["n"]] + outputs_value += vout["nValue"] + + # Ignore transactions with invalid script. + asm = script.script_to_asm(vin["scriptSig"]) + + new_source, new_destination, new_data = p2sh_encoding.decode_p2sh_input(asm, p2sh_is_segwit=prevout_is_segwit) + # this could be a p2sh source address with no encoded data + if new_data is None: + continue; + + if new_source is not None: + if p2sh_encoding_source is not None and new_source != p2sh_encoding_source: + # this p2sh data input has a bad source address + raise DecodeError('inconsistent p2sh inputs') + + p2sh_encoding_source = new_source + + assert not new_destination + + data += new_data + + return p2sh_encoding_source, data, outputs_value + + +def get_dispensers_outputs(db, potential_dispensers): + outputs = [] + for (destination, btc_amount) in potential_dispensers: + if destination is None or btc_amount is None: + continue + if dispenser.is_dispensable(db, destination, btc_amount): + outputs.append((destination, btc_amount)) + return outputs + + +def get_dispensers_tx_info(sources, dispensers_outputs): + source, destination, btc_amount, fee, data, outs = b'', None, None, None, None, [] + + dispenser_source = sources.split("-")[0] + out_index = 0 + for out in dispensers_outputs: + if out[0] != dispenser_source: + source = dispenser_source + destination = out[0] + btc_amount = out[1] + fee = 0 + data = struct.pack(config.SHORT_TXTYPE_FORMAT, dispenser.DISPENSE_ID) + data += b'\x00' + + if ledger.enabled("multiple_dispenses"): + outs.append({"destination":out[0], "btc_amount":out[1], "out_index":out_index}) + else: + break # Prevent inspection of further dispenses (only first one is valid) + + out_index = out_index + 1 + + return source, destination, btc_amount, fee, data, outs + + +def parse_transaction_vouts(decoded_tx): + # Get destinations and data outputs. + destinations, btc_amount, fee, data, potential_dispensers = [], 0, 0, b'', [] + + for vout in decoded_tx["vout"]: + potential_dispensers.append((None, None)) + # Fee is the input values minus output values. + output_value = vout["nValue"] + fee -= output_value + + # Ignore transactions with invalid script. + asm = script.script_to_asm(vout["scriptPubKey"]) + if asm[0] == OP_RETURN: + new_destination, new_data = decode_opreturn(asm, decoded_tx) + elif asm[-1] == OP_CHECKSIG: + new_destination, new_data = decode_checksig(asm, decoded_tx) + potential_dispensers[-1] = (new_destination, output_value) + elif asm[-1] == OP_CHECKMULTISIG: + try: + new_destination, new_data = decode_checkmultisig(asm, decoded_tx) + potential_dispensers[-1] = (new_destination, output_value) + except script.MultiSigAddressError: + raise DecodeError('invalid OP_CHECKMULTISIG') + elif ledger.enabled('p2sh_addresses') and asm[0] == OP_HASH160 and asm[-1] == OP_EQUAL and len(asm) == 3: + new_destination, new_data = decode_scripthash(asm) + if ledger.enabled('p2sh_dispensers_support'): + potential_dispensers[-1] = (new_destination, output_value) + elif ledger.enabled('segwit_support') and asm[0] == b'': + # Segwit Vout, second param is redeemScript + #redeemScript = asm[1] + new_destination = script.script_to_address(vout["scriptPubKey"]) + new_data = None + if ledger.enabled('correct_segwit_txids'): + potential_dispensers[-1] = (new_destination, output_value) + else: + raise DecodeError('unrecognised output type') + assert not (new_destination and new_data) + assert new_destination != None or new_data != None # `decode_*()` should never return `None, None`. + + if ledger.enabled('null_data_check'): + if new_data == []: + raise DecodeError('new destination is `None`') + + # All destinations come before all data. + if not data and not new_data and destinations != [config.UNSPENDABLE,]: + destinations.append(new_destination) + btc_amount += output_value + else: + if new_destination: # Change. + break + else: # Data. + data += new_data + + return destinations, btc_amount, fee, data, potential_dispensers + + +def get_tx_info_new(db, decoded_tx, block_index, block_parser=None, p2sh_is_segwit=False): + """Get multisig transaction info. + The destinations, if they exists, always comes before the data output; the + change, if it exists, always comes after. + """ + + # Ignore coinbase transactions. + if decoded_tx['coinbase']: + raise DecodeError('coinbase transaction') + + # Get destinations and data outputs. + if 'parsed_vouts' in decoded_tx: + if decoded_tx['parsed_vouts'] == "DecodeError": + raise DecodeError('unrecognised output type') + destinations, btc_amount, fee, data, potential_dispensers = decoded_tx['parsed_vouts'] + else: + destinations, btc_amount, fee, data, potential_dispensers = parse_transaction_vouts(decoded_tx) + + # source can be determined by parsing the p2sh_data transaction + # or from the first spent output + sources = [] + fee_added = False + # P2SH encoding signalling + p2sh_encoding_source = None + if ledger.enabled('p2sh_encoding') and data == b'P2SH': + p2sh_encoding_source, data, outputs_value = get_transaction_source_from_p2sh( + decoded_tx, p2sh_is_segwit, block_parser=block_parser + ) + fee += outputs_value + fee_added = True + + # Only look for source if data were found or destination is `UNSPENDABLE`, + # for speed. + dispensers_outputs = [] + if not data and destinations != [config.UNSPENDABLE,]: + if ledger.enabled('dispensers', block_index): + dispensers_outputs = get_dispensers_outputs(db, potential_dispensers) + if len(dispensers_outputs) == 0: + raise BTCOnlyError('no data and not unspendable') + else: + raise BTCOnlyError('no data and not unspendable') + + # Collect all (unique) source addresses. + # if we haven't found them yet + if p2sh_encoding_source is None: + sources, outputs_value = get_transaction_sources(decoded_tx, block_parser=block_parser) + if not fee_added: + fee += outputs_value + else: # use the source from the p2sh data source + sources = p2sh_encoding_source + + if not data and destinations != [config.UNSPENDABLE,]: + assert ledger.enabled('dispensers', block_index) # else an exception would have been raised above + assert len(dispensers_outputs) > 0 # else an exception would have been raised above + return get_dispensers_tx_info(sources, dispensers_outputs) + + destinations = '-'.join(destinations) + return sources, destinations, btc_amount, round(fee), data, [] + + +def get_tx_info_legacy(decoded_tx, block_index, block_parser=None): + """Get singlesig transaction info. + The destination, if it exists, always comes before the data output; the + change, if it exists, always comes after. + """ + + # Fee is the input values minus output values. + fee = 0 + + # Get destination output and data output. + destination, btc_amount, data = None, None, b'' + pubkeyhash_encoding = False + for vout in decoded_tx["vout"]: + fee -= vout["nValue"] + + # Sum data chunks to get data. (Can mix OP_RETURN and multi-sig.) + asm = script.script_to_asm(vout["scriptPubKey"]) + if len(asm) == 2 and asm[0] == OP_RETURN: # OP_RETURN + if type(asm[1]) != bytes: + continue + data_chunk = asm[1] + data += data_chunk + elif len(asm) == 5 and asm[0] == 1 and asm[3] == 2 and asm[4] == OP_CHECKMULTISIG: # Multi-sig + if type(asm[2]) != bytes: + continue + data_pubkey = asm[2] + data_chunk_length = data_pubkey[0] # No ord() necessary. + data_chunk = data_pubkey[1:data_chunk_length + 1] + data += data_chunk + elif len(asm) == 5 and (block_index >= 293000 or config.TESTNET or config.REGTEST): # Protocol change. + # Be strict. + pubkeyhash, address_version = get_pubkeyhash(vout["scriptPubKey"], block_index) + if not pubkeyhash: + continue + + if decoded_tx["coinbase"]: + raise DecodeError('coinbase transaction') + + data_pubkey = arc4_decrypt(pubkeyhash, decoded_tx) + if data_pubkey[1:9] == config.PREFIX or pubkeyhash_encoding: + pubkeyhash_encoding = True + data_chunk_length = data_pubkey[0] # No ord() necessary. + data_chunk = data_pubkey[1:data_chunk_length + 1] + if data_chunk[-8:] == config.PREFIX: + data += data_chunk[:-8] + break + else: + data += data_chunk + + # Destination is the first output before the data. + if not destination and not btc_amount and not data: + address = get_address(vout["scriptPubKey"], block_index) + if address: + destination = address + btc_amount = vout["nValue"] + + # Check for, and strip away, prefix (except for burns). + if destination == config.UNSPENDABLE: + pass + elif data[:len(config.PREFIX)] == config.PREFIX: + data = data[len(config.PREFIX):] + else: + raise DecodeError('no prefix') + + # Only look for source if data were found or destination is UNSPENDABLE, for speed. + if not data and destination != config.UNSPENDABLE: + raise BTCOnlyError('no data and not unspendable') + + # Collect all possible source addresses; ignore coinbase transactions and anything but the simplest Pay‐to‐PubkeyHash inputs. + source_list = [] + for vin in decoded_tx["vin"][:]: # Loop through input transactions. + + if vin["coinbase"]: + raise DecodeError('coinbase transaction') + + # Get the full transaction data for this input transaction. + script_pubkey = None + if block_parser: + vin_ctx = block_parser.read_raw_transaction(ib2h(vin["hash"])) + else: + # Note: We don't know what block the `vin` is in, and the block might have been from a while ago, so this call may not hit the cache. + vin_tx = backend.getrawtransaction(ib2h(vin["hash"]), block_index=None) + vin_ctx = BlockchainParser().deserialize_tx(vin_tx) + + vout = vin_ctx["vout"][vin["n"]] + fee += vout["nValue"] + script_pubkey = vout["scriptPubKey"] + + address = get_address(script_pubkey, block_index) + if not address: + raise DecodeError('invalid scriptpubkey') + else: + source_list.append(address) + + # Require that all possible source addresses be the same. + if all(x == source_list[0] for x in source_list): + source = source_list[0] + else: + source = None + + return source, destination, btc_amount, fee, data, [] + + +def _get_tx_info(db, decoded_tx, block_index, block_parser=None, p2sh_is_segwit=False): + """Get the transaction info. Calls one of two subfunctions depending on signature type.""" + if not block_index: + block_index = ledger.CURRENT_BLOCK_INDEX + + if ledger.enabled('p2sh_addresses', block_index=block_index): # Protocol change. + return get_tx_info_new( + db, + decoded_tx, + block_index, + block_parser=block_parser, + p2sh_is_segwit=p2sh_is_segwit, + ) + elif ledger.enabled('multisig_addresses', block_index=block_index): # Protocol change. + return get_tx_info_new( + db, + decoded_tx, + block_index, + block_parser=block_parser, + ) + else: + return get_tx_info_legacy( + decoded_tx, + block_index, + block_parser=block_parser + ) + + +def get_tx_info(db, decoded_tx, block_index, block_parser=None): + """Get the transaction info. Returns normalized None data for DecodeError and BTCOnlyError.""" + try: + return _get_tx_info(db, decoded_tx, block_index, block_parser) + except DecodeError as e: + return b'', None, None, None, None, None + except BTCOnlyError as e: + return b'', None, None, None, None, None diff --git a/counterparty-lib/counterpartylib/lib/kickstart/__init__.py b/counterparty-lib/counterpartylib/lib/kickstart/__init__.py new file mode 100644 index 0000000000..1eb167587d --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/kickstart/__init__.py @@ -0,0 +1,409 @@ +import logging +import os +import time +import platform +import signal +import shutil +from queue import Empty + +import apsw +from halo import Halo +from termcolor import colored + +from counterpartylib import server +from counterpartylib.lib import config, blocks, ledger, backend, database, log +from counterpartylib.lib.kickstart.blocks_parser import BlockchainParser, ChainstateParser +from counterpartylib.lib.kickstart.utils import remove_shm_from_resource_tracker +from counterpartylib.lib.backend.addrindexrs import AddrindexrsSocket + +logger = logging.getLogger(config.LOGGER_NAME) + +OK_GREEN = colored("[OK]", "green") +SPINNER_STYLE = "bouncingBar" + + +def confirm_kickstart(): + warnings = [ + 'Warnings:', + '- Ensure `addrindexrs` is running and up to date.', + '- Ensure that `bitcoind` is stopped.', + '- The initialization may take a while.', + ] + warnings_message = colored("\n".join(warnings), "yellow") + print(f'''{warnings_message}''') + confirmation_message = colored('Proceed with the initialization? (y/N): ', "magenta") + if input(confirmation_message) != 'y': + exit() + + +def fetch_blocks(cursor, bitcoind_dir, last_known_hash, first_block, spinner): + block_parser = BlockchainParser(bitcoind_dir) + + cursor.execute('''CREATE TABLE IF NOT EXISTS kickstart_blocks ( + block_index INTEGER UNIQUE, + block_hash TEXT UNIQUE, + block_time INTEGER, + previous_block_hash TEXT UNIQUE, + difficulty INTEGER, + tx_count INTEGER, + PRIMARY KEY (block_index, block_hash)) + ''') + cursor.execute('''DELETE FROM kickstart_blocks''') + + start_time_blocks_indexing = time.time() + # save blocks from last to first + current_hash = last_known_hash + lot_size = 100 + block_count = 0 + while True: + bindings_lot = () + bindings_place = [] + # gather some blocks + while len(bindings_lot) <= lot_size * 4: + # read block from bitcoind files + block = block_parser.read_raw_block(current_hash, only_header=True) + # prepare bindings + bindings_lot += ( + block['block_index'], + block['block_hash'], + block['block_time'], + block['hash_prev'], + block['bits'], + block['tx_count'] + ) + bindings_place.append('(?,?,?,?,?,?)') + current_hash = block['hash_prev'] + block_count += 1 + if block['block_index'] == first_block: + break + # insert blocks by lot. No sql injection here. + cursor.execute(f'''INSERT INTO kickstart_blocks (block_index, block_hash, block_time, previous_block_hash, difficulty, tx_count) + VALUES {', '.join(bindings_place)}''', # nosec B608 + bindings_lot) + spinner.text = f"Initialising database: block {bindings_lot[0]} to {bindings_lot[-6]} inserted." + if block['block_index'] == first_block: + break + block_parser.close() + spinner.text = f'Blocks indexed in: {time.time() - start_time_blocks_indexing:.3f}s' + return block_count + + +def clean_kicstart_blocks(db): + cursor = db.cursor() + + last_block_index_kickstart = cursor.execute(''' + SELECT block_index FROM kickstart_blocks ORDER BY block_index DESC LIMIT 1 + ''').fetchone()['block_index'] + + last_block_index_parsed = cursor.execute(''' + SELECT block_index FROM blocks ORDER BY block_index DESC LIMIT 1 + ''').fetchone()['block_index'] + + if last_block_index_parsed >= last_block_index_kickstart: + cursor.execute('''DROP TABLE kickstart_blocks''') + + +def prepare_db_for_resume(cursor): + # get block count + cursor.execute('''SELECT block_index FROM kickstart_blocks ORDER BY block_index DESC LIMIT 1''') + last_block_index = cursor.fetchone()['block_index'] + + # get last parsed transaction + cursor.execute('''SELECT block_index, tx_index FROM transactions ORDER BY block_index DESC, tx_index DESC LIMIT 1''') + last_transaction = cursor.fetchone() + last_parsed_block = config.BLOCK_FIRST - 1 + tx_index = 0 + if last_transaction is not None: + last_parsed_block = last_transaction['block_index'] + tx_index = last_transaction['tx_index'] + 1 + # clean tables from last parsed block + for table in blocks.TABLES + ['transaction_outputs', 'transactions', 'blocks']: + blocks.clean_table_from(cursor, table, last_parsed_block + 1) + + block_count = last_block_index - last_parsed_block + + return block_count, tx_index, last_parsed_block + + +def get_bitcoind_dir(bitcoind_dir=None): + if bitcoind_dir is None: + if platform.system() == 'Darwin': + bitcoind_dir = os.path.expanduser('~/Library/Application Support/Bitcoin/') + elif platform.system() == 'Windows': + bitcoind_dir = os.path.join(os.environ['APPDATA'], 'Bitcoin') + else: + bitcoind_dir = os.path.expanduser('~/.bitcoin') + if not os.path.isdir(bitcoind_dir): + raise Exception(f'Bitcoin Core data directory not found at {bitcoind_dir}. Use --bitcoind-dir parameter.') + if config.TESTNET: + bitcoind_dir = os.path.join(bitcoind_dir, 'testnet3') + return bitcoind_dir + + +def get_last_known_block_hash(bitcoind_dir): + step = 'Getting last known block hash...' + with Halo(text=step, spinner=SPINNER_STYLE): + chain_parser = ChainstateParser(os.path.join(bitcoind_dir, 'chainstate')) + last_known_hash = chain_parser.get_last_block_hash() + chain_parser.close() + #print(f'Last known block hash: {last_known_hash}') + print(f'{OK_GREEN} {step}') + return last_known_hash + + +def intialize_kickstart_db(bitcoind_dir, last_known_hash, resuming, new_database, debug_block): + step = 'Initialising database...' + with Halo(text=step, spinner=SPINNER_STYLE) as spinner: + kickstart_db = server.initialise_db() + blocks.initialise(kickstart_db) + database.update_version(kickstart_db) + cursor = kickstart_db.cursor() + + if debug_block is not None: + blocks.rollback(kickstart_db, int(debug_block)) + + # create `kickstart_blocks` table if necessary + if not resuming: + first_block = config.BLOCK_FIRST + if not new_database: + first_block = cursor.execute('SELECT block_index FROM blocks ORDER BY block_index DESC LIMIT 1').fetchone()['block_index'] + fetch_blocks(cursor, bitcoind_dir, last_known_hash, first_block, spinner) + else: + # check if kickstart_blocks is complete + last_block = cursor.execute('SELECT block_index FROM blocks ORDER BY block_index DESC LIMIT 1').fetchone() + if last_block is not None: + last_block_index = last_block['block_index'] + first_kickstart_block = cursor.execute('SELECT block_index FROM kickstart_blocks ORDER BY block_index LIMIT 1').fetchone()['block_index'] + if last_block_index < first_kickstart_block: + cursor.execute('DELETE FROM kickstart_blocks') + fetch_blocks(cursor, bitcoind_dir, last_known_hash, last_block_index + 1, spinner) + # get last block index + spinner.text = step + block_count, tx_index, last_parsed_block = prepare_db_for_resume(cursor) + cursor.close() + print(f'{OK_GREEN} {step}') + return kickstart_db, block_count, tx_index, last_parsed_block + + +def start_blocks_parser_process(bitcoind_dir, last_parsed_block, max_queue_size): + step = f'Starting blocks parser from block {last_parsed_block}...' + with Halo(text=step, spinner=SPINNER_STYLE): + # determine queue size + default_queue_size = 100 + if config.TESTNET: + default_queue_size = 1000 + queue_size = max_queue_size if max_queue_size is not None else default_queue_size + # Start block parser. + block_parser = BlockchainParser(bitcoind_dir, config.DATABASE, last_parsed_block, queue_size) + print(f'{OK_GREEN} {step}') + return block_parser + + +def is_resuming(new_database): + step = 'Checking database state...' + with Halo(text=step, spinner=SPINNER_STYLE): + current_db = apsw.Connection(config.DATABASE) + cursor = current_db.cursor() + resuming = False + if not new_database: + query = "SELECT name FROM sqlite_master WHERE type='table' AND name='kickstart_blocks'" + if len(list(cursor.execute(query))) == 1: + resuming = True + cursor.close() + current_db.close() + print(f'{OK_GREEN} {step}') + return resuming + + +def backup_db(move=False): + step = 'Backing up database...' + with Halo(text=step, spinner="bouncingBar"): + if move: + os.rename(config.DATABASE, config.DATABASE + '.old') + else: + shutil.copy(config.DATABASE, config.DATABASE + '.old') + + # Delete SQLite Write-Ahead-Log + wal_path = config.DATABASE + '-wal' + shm_path = config.DATABASE + '-shm' + try: + os.remove(wal_path) + except OSError: + pass + try: + os.remove(shm_path) + except OSError: + pass + + print(f'{OK_GREEN} {step}') + + +def backup_if_needed(new_database, resuming): + if not new_database and not resuming: + current_db = apsw.Connection(config.DATABASE) + cursor = current_db.cursor() + user_version = cursor.execute('PRAGMA user_version').fetchall()[0][0] + version_major = user_version // 1000 + if version_major < 10: + print(colored(f"Version lower than v10.0.0 detected. Kickstart must be done from the first block.", "yellow")) + print(colored(f"Old database will be moved to `{config.DATABASE}.old` and a new database will be created from scratch.", "yellow")) + if input(colored('Continue? (y/N): ', 'magenta')) != 'y': + exit() + # move old database + backup_db(move=True) + return True + else: + backup_db() + elif not new_database: + backup_db() + return new_database + + +def parse_block(kickstart_db, cursor, block, block_parser, tx_index): + ledger.CURRENT_BLOCK_INDEX = block['block_index'] + + with kickstart_db: # ensure all the block or nothing + # insert block + cursor.execute(''' + INSERT INTO blocks + (block_index, block_hash, block_time, previous_block_hash, difficulty) + VALUES (?, ?, ?, ?, ?) + ''', ( + block['block_index'], + block['block_hash'], + block['block_time'], + block['hash_prev'], + block['bits'] + )) + # save transactions + for transaction in block['transactions']: + # Cache transaction. We do that here because the block is fetched by another process. + block_parser.put_in_cache(transaction) + tx_index = blocks.list_tx(kickstart_db, + block['block_hash'], + block['block_index'], + block['block_time'], + transaction['tx_hash'], + tx_index, + decoded_tx=transaction, + block_parser=block_parser) + # Parse the transactions in the block. + blocks.parse_block(kickstart_db, block['block_index'], block['block_time']) + + return tx_index + + +def cleanup(kickstart_db, block_parser): + remove_shm_from_resource_tracker() + step = 'Cleaning up...' + with Halo(text=step, spinner=SPINNER_STYLE): + # empyt queue to clean shared memory + try: + block_parser.block_parsed() + block_parser.close() + except (Empty, FileNotFoundError): + pass + backend.stop() + # remove kickstart tables if all blocks have been parsed + clean_kicstart_blocks(kickstart_db) + print(f'{OK_GREEN} {step}') + + +def run(bitcoind_dir, force=False, max_queue_size=None, debug_block=None): + # default signal handlers + signal.signal(signal.SIGTERM, signal.SIG_DFL) + signal.signal(signal.SIGINT, signal.default_int_handler) + + # display warnings + if not force: + confirm_kickstart() + + # check addrindexrs + server.connect_to_addrindexrs() + + # determine bitoincore data directory + bitcoind_dir = get_bitcoind_dir(bitcoind_dir) + + # Get hash of last known block. + last_known_hash = get_last_known_block_hash(bitcoind_dir) + + # check if database exists + new_database = not os.path.exists(config.DATABASE) + + # check if we are resuming + resuming = is_resuming(new_database) + + # backup old database + if not force: + new_database = backup_if_needed(new_database, resuming) + + # initialize main timer + start_time_total = time.time() + + # initialise database + kickstart_db, block_count, tx_index, last_parsed_block = intialize_kickstart_db( + bitcoind_dir, last_known_hash, resuming, new_database, debug_block + ) + + # Start block parser. + block_parser = start_blocks_parser_process(bitcoind_dir, last_parsed_block, max_queue_size) + + # intitialize message + message = "" + start_time_all_blocks_parse = time.time() + block_parsed_count = 0 + spinner = Halo(text="Starting...", spinner=SPINNER_STYLE) + spinner.start() + + # start parsing blocks + try: + cursor = kickstart_db.cursor() + block = block_parser.next_block() + while block is not None: + # initialize block parsing timer + start_time_block_parse = time.time() + # parse block + tx_index = parse_block(kickstart_db, cursor, block, block_parser, tx_index) + # update last parsed block + last_parsed_block = block['block_index'] + # update block parsed count + block_parsed_count += 1 + # let's have a nice message + message = blocks.generate_progression_message( + block, + start_time_block_parse, start_time_all_blocks_parse, + block_parsed_count, block_count, + tx_index + ) + spinner.text = message + # notify block parsed + block_parser.block_parsed() + # check if we are done + if block['block_hash'] == last_known_hash: + break + if debug_block is not None and block['block_index'] == int(debug_block): + break + # get next block + block = block_parser.next_block() + + spinner.stop() + except FileNotFoundError: + pass # block file not found on stopping + except KeyboardInterrupt: + spinner.stop() + # re-print last message + if message != "": + ok_yellow = colored("[OK]", "yellow") + print(f'{ok_yellow} {message}') + message = "" + print(colored('Keyboard interrupt. Stopping...', 'yellow')) + finally: + spinner.stop() + # re-print last message + if message != "": + print(f'{OK_GREEN} {message}') + # cleaning up + cleanup(kickstart_db, block_parser) + # end message + print(f"Last parsed block: {last_parsed_block}") + print(f'Kickstart done in: {time.time() - start_time_total:.3f}s') diff --git a/counterparty-lib/counterpartylib/lib/kickstart/bc_data_stream.py b/counterparty-lib/counterpartylib/lib/kickstart/bc_data_stream.py new file mode 100644 index 0000000000..a43909214a --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/kickstart/bc_data_stream.py @@ -0,0 +1,130 @@ +# +# Workalike python implementation of Bitcoin's CDataStream class. +# +import struct +import mmap +from io import BytesIO +from .exceptions import SerializationError + + +class BCDataStream(object): + def __init__(self): + self.input = None + self.read_cursor = 0 + + def clear(self): + self.input = None + self.read_cursor = 0 + + def write(self, bytes): # Initialize with string of bytes + if self.input is None: + self.input = bytes + else: + self.input += bytes + + def map_file(self, file, start): # Initialize with bytes from file + self.input = mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) + self.read_cursor = start + + def map_hex(self, data): # Initialize with hex string + data_bytes = bytes.fromhex(data) + self.input = data_bytes + self.read_cursor = 0 + + def seek_file(self, position): + self.read_cursor = position + + def close_file(self): + self.input.close() + + def read_string(self): + # Strings are encoded depending on length: + # 0 to 252 : 1-byte-length followed by bytes (if any) + # 253 to 65,535 : byte'253' 2-byte-length followed by bytes + # 65,536 to 4,294,967,295 : byte '254' 4-byte-length followed by bytes + # ... and the Bitcoin client is coded to understand: + # greater than 4,294,967,295 : byte '255' 8-byte-length followed by bytes of string + # ... but I don't think it actually handles any strings that big. + if self.input is None: + raise SerializationError("call write(bytes) before trying to deserialize") + + try: + length = self.read_compact_size() + except IndexError: + raise SerializationError("attempt to read past end of buffer") + + return self.read_bytes(length) + + def write_string(self, string): + # Length-encoded as with read-string + self.write_compact_size(len(string)) + self.write(string) + + def read_bytes(self, length): + try: + result = self.input[self.read_cursor:self.read_cursor+length] + self.read_cursor += length + return result + except IndexError: + raise SerializationError("attempt to read past end of buffer") + + def read_boolean(self): return self.read_bytes(1)[0] != chr(0) + def read_int16(self): return self._read_num(' ? + ORDER BY block_index + ''', + (first_block_index ,)) + all_blocks = cursor.fetchall() + cursor.close() + db.close() + + parser = BlockchainParser(bitcoind_dir) + shm = None + for db_block in all_blocks: + if queue.full(): + logger.debug('Queue is full, waiting for blocks to be parsed.') + queue.join() + block = parser.read_raw_block( + db_block[0], + use_txid=ledger.enabled("correct_segwit_txids", block_index=db_block[1]) + ) + + ledger.CURRENT_BLOCK_INDEX = db_block[1] + for i, transaction in enumerate(block['transactions']): + try: + block['transactions'][i]['parsed_vouts'] = gettxinfo.parse_transaction_vouts(block['transactions'][i]) + except DecodeError: + block['transactions'][i]['parsed_vouts'] = "DecodeError" + + serialized_block = pickle.dumps(block, protocol=pickle.HIGHEST_PROTOCOL) + block_length = len(serialized_block) + name = db_block[0][-8:] + try: + shm = shared_memory.SharedMemory(name, create=True, size=block_length) + except FileExistsError: + shm = shared_memory.SharedMemory(name) + shm.close() + shm.unlink() + shm = shared_memory.SharedMemory(name, create=True, size=block_length) + shm.buf[:block_length] = serialized_block + queue.put(shm.name) + shm.close() + queue.put(None) + except KeyboardInterrupt: + if shm: + shm.close() + shm.unlink() + finally: + parser.close() + + +class BlockchainParser(): + + def __init__(self, bitcoind_dir=None, db_path=None, first_block_index=0, queue_size=100): + if bitcoind_dir is None: # for deserialize_tx() + return + + self.blocks_dir = os.path.join(bitcoind_dir, 'blocks') + self.file_num = -1 + self.current_file_size = 0 + self.current_block_file = None + self.data_stream = None + self.shm = None + self.queue = None + + self.tx_cache = OrderedDict() + if db_path is not None: + self.blocks_leveldb = None + self.txindex_leveldb_path = os.path.join(bitcoind_dir, 'indexes', 'txindex') + self.txindex_leveldb = open_leveldb(self.txindex_leveldb_path) + self.queue = JoinableQueue(queue_size) + parser_config = {} + for attribute in dir(config): + if attribute.isupper(): + parser_config[attribute] = getattr(config, attribute) + self.fetch_process = Process(target=fetch_blocks, args=( + bitcoind_dir, db_path, self.queue, first_block_index, parser_config + )) + self.fetch_process.start() + else: + self.blocks_leveldb_path = os.path.join(self.blocks_dir, 'index') + self.blocks_leveldb = open_leveldb(self.blocks_leveldb_path) + self.txindex_leveldb = None + self.fetch_process = None + + def next_block(self, timeout=None): + block_hash = self.queue.get(timeout=timeout) + if block_hash is None: + return None + self.shm = shared_memory.SharedMemory(name=block_hash) + block = pickle.loads(self.shm.buf[:self.shm.size]) # nosec B301 + self.shm.close() + self.shm.unlink() + return block + + def block_parsed(self): + self.queue.task_done() + + def read_tx_in(self, vds): + tx_in = {} + tx_in["hash"] = vds.read_bytes(32) + tx_in["n"] = vds.read_uint32() + script_sig_size = vds.read_compact_size() + tx_in['scriptSig'] = vds.read_bytes(script_sig_size) + tx_in['nSequence'] = vds.read_uint32() + tx_in['coinbase'] = False + if tx_in['hash'] == b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00': + tx_in['coinbase'] = True + return tx_in + + def read_tx_out(self, vds): + tx_out = {} + tx_out['nValue'] = vds.read_int64() + script = vds.read_bytes(vds.read_compact_size()) + tx_out['scriptPubKey'] = script + return tx_out + + def read_transaction(self, vds, use_txid=True): + transaction = {} + start_pos = vds.read_cursor + transaction['version'] = vds.read_int32() + + flag = vds.read_bytes(2) + if flag == b'\x00\x01': + transaction['segwit'] = True + else: + transaction['segwit'] = False + vds.read_cursor = vds.read_cursor - 2 + + transaction['coinbase'] = False + transaction['vin'] = [] + for i in range(vds.read_compact_size()): + vin = self.read_tx_in(vds) + transaction['vin'].append(vin) + transaction['coinbase'] = transaction['coinbase'] or vin['coinbase'] + + transaction['vout'] = [] + for i in range(vds.read_compact_size()): + transaction['vout'].append(self.read_tx_out(vds)) + + transaction['vtxinwit'] = [] + if transaction['segwit']: + offset_before_tx_witnesses = vds.read_cursor - start_pos + for vin in transaction['vin']: + witnesses_count = vds.read_compact_size() + for i in range(witnesses_count): + witness_length = vds.read_compact_size() + witness = vds.read_bytes(witness_length) + transaction['vtxinwit'].append(witness) + + transaction['lock_time'] = vds.read_uint32() + data = vds.input[start_pos:vds.read_cursor] + + transaction['tx_hash'] = ib2h(double_hash(data)) + if transaction['segwit']: + hash_data = data[:4] + data[6:offset_before_tx_witnesses] + data[-4:] + transaction['tx_id'] = ib2h(double_hash(hash_data)) + if use_txid: + transaction['tx_hash'] = transaction['tx_id'] + + transaction['__data__'] = b2h(data) + + return transaction + + def put_in_cache(self, transaction): + # save transaction to cache + self.tx_cache[transaction['tx_hash']] = transaction + if len(self.tx_cache) > TX_CACHE_MAX_SIZE: + self.tx_cache.popitem(last=False) + + def read_block_header(self, vds): + block_header = {} + block_header['magic_bytes'] = vds.read_int32() + #if block_header['magic_bytes'] != 118034699: + # raise Exception('Not a block') + block_header['block_size'] = vds.read_int32() + header_start = vds.read_cursor + block_header['version'] = vds.read_int32() + block_header['hash_prev'] = ib2h(vds.read_bytes(32)) + block_header['hash_merkle_root'] = ib2h(vds.read_bytes(32)) + block_header['block_time'] = vds.read_uint32() + block_header['bits'] = vds.read_uint32() + block_header['nonce'] = vds.read_uint32() + header_end = vds.read_cursor + header = vds.input[header_start:header_end] + block_header['block_hash'] = ib2h(double_hash(header)) + #block_header['__header__'] = b2h(header) + return block_header + + def read_block(self, vds, only_header=False, use_txid=True): + block = self.read_block_header(vds) + if only_header: + return block + block['transaction_count'] = vds.read_compact_size() + block['transactions'] = [] + for i in range(block['transaction_count']): + block['transactions'].append(self.read_transaction(vds, use_txid=use_txid)) + return block + + def prepare_data_stream(self, file_num, pos_in_file): + if self.data_stream is None or file_num != self.file_num: + self.file_num = file_num + if self.current_block_file: + self.current_block_file.close() + data_file_path = os.path.join(self.blocks_dir, f'blk{self.file_num:05d}.dat') + self.current_block_file = open(data_file_path, "rb") + self.data_stream = BCDataStream() + self.data_stream.map_file(self.current_block_file, pos_in_file) + else: + self.data_stream.seek_file(pos_in_file) + + def read_raw_block(self, block_hash, only_header=False, use_txid=True): + #print('Reading raw block:', block_hash, only_header) + block_key = bytes('b', 'utf-8') + binascii.unhexlify(inverse_hash(block_hash)) + block_data = self.blocks_leveldb.get(block_key) + ds = BCDataStream() + ds.write(block_data) + + version = ds.read_var_int() + height = ds.read_var_int() + status = ds.read_var_int() + tx_count = ds.read_var_int() + file_num = ds.read_var_int() + block_pos_in_file = ds.read_var_int() - 8 + block_undo_pos_in_file = ds.read_var_int() + block_header = ds.read_bytes(80) + self.prepare_data_stream(file_num, block_pos_in_file) + block = self.read_block(self.data_stream, only_header=only_header, use_txid=use_txid) + block['block_index'] = height + block['tx_count'] = tx_count + return block + + def read_raw_transaction(self, tx_hash, use_txid=True): + # return transaction from cache if exists + if tx_hash in self.tx_cache: + return self.tx_cache[tx_hash] + #logger.warning('Transaction not found in cache, reading from disk.') + + tx_key = bytes('t', 'utf-8') + binascii.unhexlify(inverse_hash(tx_hash)) + tx_data = self.txindex_leveldb.get(tx_key) + + ds = BCDataStream() + ds.write(tx_data) + + file_num = ds.read_var_int() + block_pos_in_file = ds.read_var_int() + tx_pos_in_block = ds.read_var_int() + tx_pos_in_file = block_pos_in_file + 80 + tx_pos_in_block + + self.prepare_data_stream(file_num, tx_pos_in_file) + + transaction = self.read_transaction(self.data_stream, use_txid=use_txid) + + return transaction + + def deserialize_tx(self, tx_hex, use_txid=None): + ds = BCDataStream() + ds.map_hex(tx_hex) + if use_txid is None: + use_txid = ledger.enabled("correct_segwit_txids") + return self.read_transaction( + ds, + use_txid=use_txid + ) + + def close(self): + if self.current_block_file: + self.current_block_file.close() + if self.blocks_leveldb: + self.blocks_leveldb.close() + if self.txindex_leveldb: + self.txindex_leveldb.close() + if self.fetch_process: + self.fetch_process.terminate() + self.fetch_process.join() + if self.shm: + try: + self.shm.close() + self.shm.unlink() + except FileNotFoundError: + pass + if self.queue: + self.queue.close() + + +class ChainstateParser(): + + def __init__(self, leveldb_dir): + self.ldb = open_leveldb(leveldb_dir) + self.obfuscation_key = self.ldb.get(b'\x0e\x00obfuscate_key')[1:] + + def get_value(self, key): + value = self.ldb.get(key) + if value: + value = decode_value(self.obfuscation_key, value) + return value + + def get_last_block_hash(self): + block_hash = self.get_value(bytes('B', 'utf-8')) + block_hash = ib2h(block_hash) + return block_hash + + def close(self): + self.ldb.close() diff --git a/counterpartylib/lib/kickstart/exceptions.py b/counterparty-lib/counterpartylib/lib/kickstart/exceptions.py similarity index 51% rename from counterpartylib/lib/kickstart/exceptions.py rename to counterparty-lib/counterpartylib/lib/kickstart/exceptions.py index 051ce773ba..345b7c6958 100644 --- a/counterpartylib/lib/kickstart/exceptions.py +++ b/counterparty-lib/counterpartylib/lib/kickstart/exceptions.py @@ -2,5 +2,4 @@ class SolvingError(Exception): pass class SerializationError(Exception): - """ Thrown when there's a problem deserializing or serializing """ - + """ Thrown when there's a problem deserializing or serializing """ diff --git a/counterparty-lib/counterpartylib/lib/kickstart/utils.py b/counterparty-lib/counterpartylib/lib/kickstart/utils.py new file mode 100644 index 0000000000..c7f9403875 --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/kickstart/utils.py @@ -0,0 +1,55 @@ +import binascii, os, math, json, hashlib, decimal +from multiprocessing import resource_tracker + +from counterparty_rs import utils as pycoin_rs_utils + +bytes_from_int = chr if bytes == str else lambda x: bytes([x]) + +def b2h(b): + return binascii.hexlify(b).decode('utf-8') + +def random_hex(length): + return binascii.b2a_hex(os.urandom(length)) + +def double_hash(b): + return hashlib.sha256(hashlib.sha256(b).digest()).digest() + +def inverse_hash(hashstring): + return pycoin_rs_utils.inverse_hash(hashstring) + +def ib2h(b): + return inverse_hash(b2h(b)) + +class JsonDecimalEncoder(json.JSONEncoder): + def default(self, o): + if isinstance(o, decimal.Decimal): + return str(o) + return super(DecimalEncoder, self).default(o) + +def decode_value(key, value): + #Repeated key to make both same length + adjusted_key = key* int(math.ceil(float(len(value))/len(key))) + adjusted_key = adjusted_key[:len(value)] + return bytes([_a ^ _b for _a, _b in zip(adjusted_key, value)]) + + +def remove_shm_from_resource_tracker(): + """Monkey-patch multiprocessing.resource_tracker so SharedMemory won't be tracked + + More details at: https://bugs.python.org/issue38119 + """ + + def fix_register(name, rtype): + if rtype == "shared_memory": + return + return resource_tracker._resource_tracker.register(name, rtype) + resource_tracker.register = fix_register + + def fix_unregister(name, rtype): + if rtype == "shared_memory": + return + return resource_tracker._resource_tracker.unregister(name, rtype) + resource_tracker.unregister = fix_unregister + + if "shared_memory" in resource_tracker._CLEANUP_FUNCS: + del resource_tracker._CLEANUP_FUNCS["shared_memory"] diff --git a/counterparty-lib/counterpartylib/lib/ledger.py b/counterparty-lib/counterpartylib/lib/ledger.py new file mode 100644 index 0000000000..f480bea3b2 --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/ledger.py @@ -0,0 +1,2030 @@ +import logging +import fractions +import json +import os +from decimal import Decimal as D + +from counterpartylib.lib import exceptions +from counterpartylib.lib import config +from counterpartylib.lib import util + +logger = logging.getLogger(config.LOGGER_NAME) + +CURRENT_BLOCK_INDEX = None +BLOCK_LEDGER = [] + +CURR_DIR = os.path.dirname(os.path.realpath(__file__)) +with open(CURR_DIR + '/../protocol_changes.json') as f: + PROTOCOL_CHANGES = json.load(f) + + +########################### +# MESSAGES # +########################### + + +def last_message(db): + """Return latest message from the db.""" + cursor = db.cursor() + query = ''' + SELECT * FROM messages + WHERE message_index = ( + SELECT MAX(message_index) from messages + ) + ''' + messages = list(cursor.execute(query)) + if messages: + assert len(messages) == 1 + last_message = messages[0] + else: + raise exceptions.DatabaseError('No messages found.') + cursor.close() + return last_message + + +def get_messages(db, block_index=None, block_index_in=None, message_index_in=None): + cursor = db.cursor() + where = [] + bindings = [] + if block_index is not None: + where.append('block_index = ?') + bindings.append(block_index) + if block_index_in is not None: + where.append(f"block_index IN ({','.join(['?' for e in range(0, len(block_index_in))])})") + bindings += block_index_in + if message_index_in is not None: + where.append(f"message_index IN ({','.join(['?' for e in range(0, len(message_index_in))])})") + bindings += message_index_in + # no sql injection here + query = f'''SELECT * FROM messages WHERE ({" AND ".join(where)}) ORDER BY message_index ASC''' # nosec B608 + cursor.execute(query, tuple(bindings)) + return cursor.fetchall() + + +########################### +# BALANCES # +########################### + + +def remove_from_balance(db, address, asset, quantity, tx_index): + balance_cursor = db.cursor() + + no_balance = False + try: + old_balance = get_balance(db, address, asset, raise_error_if_no_balance=True) + except exceptions.BalanceError: + old_balance = 0 + no_balance = True + + if old_balance < quantity: + raise DebitError('Insufficient funds.') + + balance = round(old_balance - quantity) + balance = min(balance, config.MAX_INT) + assert balance >= 0 + + if not no_balance: # don't create balance if quantity is 0 and there is no balance + bindings = { + 'quantity': balance, + 'address': address, + 'asset': asset, + 'block_index': CURRENT_BLOCK_INDEX, + 'tx_index': tx_index, + } + query = ''' + INSERT INTO balances + VALUES (:address, :asset, :quantity, :block_index, :tx_index) + ''' + balance_cursor.execute(query, bindings) + + +class DebitError (Exception): pass +def debit (db, address, asset, quantity, tx_index, action=None, event=None): + """Debit given address by quantity of asset.""" + block_index = CURRENT_BLOCK_INDEX + + if type(quantity) != int: + raise DebitError('Quantity must be an integer.') + if quantity < 0: + raise DebitError('Negative quantity.') + if quantity > config.MAX_INT: + raise DebitError('Quantity can\'t be higher than MAX_INT.') + if asset == config.BTC: + raise DebitError('Cannot debit bitcoins.') + + debit_cursor = db.cursor() + + # Contracts can only hold XCP balances. + if enabled('contracts_only_xcp_balances'): # Protocol change. + if len(address) == 40: + assert asset == config.XCP + + if asset == config.BTC: + raise exceptions.BalanceError(f'Cannot debit bitcoins from a {config.XCP_NAME} address!') + + remove_from_balance(db, address, asset, quantity, tx_index) + + # Record debit. + bindings = { + 'block_index': block_index, + 'address': address, + 'asset': asset, + 'quantity': quantity, + 'action': action, + 'event': event, + 'tx_index': tx_index, + } + query = ''' + INSERT INTO debits + VALUES (:block_index, :address, :asset, :quantity, :action, :event, :tx_index) + ''' + debit_cursor.execute(query, bindings) + debit_cursor.close() + + BLOCK_LEDGER.append(f'{block_index}{address}{asset}{quantity}') + + +def add_to_balance(db, address, asset, quantity, tx_index): + balance_cursor = db.cursor() + + old_balance = get_balance(db, address, asset) + balance = round(old_balance + quantity) + balance = min(balance, config.MAX_INT) + + bindings = { + 'quantity': balance, + 'address': address, + 'asset': asset, + 'block_index': CURRENT_BLOCK_INDEX, + 'tx_index': tx_index, + } + query = ''' + INSERT INTO balances + VALUES (:address, :asset, :quantity, :block_index, :tx_index) + ''' + balance_cursor.execute(query, bindings) + + +class CreditError (Exception): pass +def credit (db, address, asset, quantity, tx_index, action=None, event=None): + """Credit given address by quantity of asset.""" + block_index = CURRENT_BLOCK_INDEX + + if type(quantity) != int: + raise CreditError('Quantity must be an integer.') + if quantity < 0: + raise CreditError('Negative quantity.') + if quantity > config.MAX_INT: + raise CreditError('Quantity can\'t be higher than MAX_INT.') + if asset == config.BTC: + raise CreditError('Cannot debit bitcoins.') + + credit_cursor = db.cursor() + + # Contracts can only hold XCP balances. + if enabled('contracts_only_xcp_balances'): # Protocol change. + if len(address) == 40: + assert asset == config.XCP + + add_to_balance(db, address, asset, quantity, tx_index) + + # Record credit. + bindings = { + 'block_index': block_index, + 'address': address, + 'asset': asset, + 'quantity': quantity, + 'action': action, + 'event': event, + 'tx_index': tx_index, + } + query = ''' + INSERT INTO credits + VALUES (:block_index, :address, :asset, :quantity, :action, :event, :tx_index) + ''' + credit_cursor.execute(query, bindings) + credit_cursor.close() + + BLOCK_LEDGER.append(f'{block_index}{address}{asset}{quantity}') + + +def transfer(db, source, destination, asset, quantity, action, event): + """Transfer quantity of asset from source to destination.""" + debit(db, source, asset, quantity, action=action, event=event) + credit(db, destination, asset, quantity, action=action, event=event) + + +def get_balance(db, address, asset, raise_error_if_no_balance=False, return_list=False): + """Get balance of contract or address.""" + cursor = db.cursor() + query = ''' + SELECT * FROM balances + WHERE (address = ? AND asset = ?) + ORDER BY rowid DESC LIMIT 1 + ''' + bindings = (address, asset) + balances = list(cursor.execute(query, bindings)) + cursor.close() + if return_list: + return balances + if not balances and raise_error_if_no_balance: + raise exceptions.BalanceError(f'No balance for this address and asset: {address}, {asset}.') + if not balances: + return 0 + return balances[0]['quantity'] + + +def get_address_balances(db, address): + cursor = db.cursor() + query = ''' + SELECT address, asset, quantity, MAX(rowid) + FROM balances + WHERE address = ? + GROUP BY address, asset + ''' + bindings = (address,) + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_address_assets(db, address): + cursor = db.cursor() + query = ''' + SELECT DISTINCT asset + FROM balances + WHERE address=:address + GROUP BY asset + ''' + bindings = {'address': address} + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_balances_count(db, address): + cursor = db.cursor() + query = ''' + SELECT COUNT(*) AS cnt FROM ( + SELECT DISTINCT asset + FROM balances + WHERE address=:address + GROUP BY asset + ) + ''' + bindings = {'address': address} + cursor.execute(query, bindings) + return cursor.fetchall() + + +##################### +# ISSUANCES # +##################### + + +def generate_asset_id(asset_name, block_index): + """Create asset_id from asset_name.""" + if asset_name == config.BTC: return 0 + elif asset_name == config.XCP: return 1 + + if len(asset_name) < 4: + raise exceptions.AssetNameError('too short') + + # Numeric asset names. + if enabled('numeric_asset_names'): # Protocol change. + if asset_name[0] == 'A': + # Must be numeric. + try: + asset_id = int(asset_name[1:]) + except ValueError: + raise exceptions.AssetNameError('non‐numeric asset name starts with ‘A’') + + # Number must be in range. + if not (26**12 + 1 <= asset_id <= 2**64 - 1): + raise exceptions.AssetNameError('numeric asset name not in range') + + return asset_id + elif len(asset_name) >= 13: + raise exceptions.AssetNameError('long asset names must be numeric') + + if asset_name[0] == 'A': raise exceptions.AssetNameError('non‐numeric asset name starts with ‘A’') + + # Convert the Base 26 string to an integer. + n = 0 + for c in asset_name: + n *= 26 + if c not in util.B26_DIGITS: + raise exceptions.AssetNameError('invalid character:', c) + digit = util.B26_DIGITS.index(c) + n += digit + asset_id = n + + if asset_id < 26**3: + raise exceptions.AssetNameError('too short') + + return asset_id + + +def generate_asset_name (asset_id, block_index): + """Create asset_name from asset_id.""" + if asset_id == 0: return config.BTC + elif asset_id == 1: return config.XCP + + if asset_id < 26**3: + raise exceptions.AssetIDError('too low') + + if enabled('numeric_asset_names'): # Protocol change. + if asset_id <= 2**64 - 1: + if 26**12 + 1 <= asset_id: + asset_name = 'A' + str(asset_id) + return asset_name + else: + raise exceptions.AssetIDError('too high') + + # Divide that integer into Base 26 string. + res = [] + n = asset_id + while n > 0: + n, r = divmod (n, 26) + res.append(util.B26_DIGITS[r]) + asset_name = ''.join(res[::-1]) + + """ + return asset_name + checksum.compute(asset_name) + """ + return asset_name + + +def get_asset_id (db, asset_name, block_index): + """Return asset_id from asset_name.""" + if not enabled('hotfix_numeric_assets'): + return generate_asset_id(asset_name, block_index) + cursor = db.cursor() + query = ''' + SELECT * FROM assets + WHERE asset_name = ? + ''' + bindings = (asset_name,) + cursor.execute(query, bindings) + assets = list(cursor) + if len(assets) == 1: + return int(assets[0]['asset_id']) + else: + raise exceptions.AssetError(f'No such asset: {asset_name}') + + +def get_asset_name (db, asset_id, block_index): + """Return asset_name from asset_id.""" + if not enabled('hotfix_numeric_assets'): + return generate_asset_name(asset_id, block_index) + cursor = db.cursor() + query = ''' + SELECT * FROM assets + WHERE asset_id = ? + ''' + bindings = (str(asset_id),) + cursor.execute(query, bindings) + assets = list(cursor) + if len(assets) == 1: + return assets[0]['asset_name'] + elif not assets: + return 0 # Strange, I know… + + +# If asset_name is an existing subasset (PARENT.child) then return the corresponding numeric asset name (A12345) +# If asset_name is not an existing subasset, then return the unmodified asset_name +def resolve_subasset_longname(db, asset_name): + if enabled('subassets'): + subasset_longname = None + try: + subasset_parent, subasset_longname = util.parse_subasset_from_asset_name(asset_name) + except Exception as e: + logger.warning(f"Invalid subasset {asset_name}") + subasset_longname = None + + if subasset_longname is not None: + cursor = db.cursor() + query = ''' + SELECT asset_name FROM assets + WHERE asset_longname = ? + ''' + bindings = (subasset_longname,) + cursor.execute(query, bindings) + assets = list(cursor) + cursor.close() + if len(assets) == 1: + return assets[0]['asset_name'] + + return asset_name + + +def is_divisible(db, asset): + """Check if the asset is divisible.""" + if asset in (config.BTC, config.XCP): + return True + else: + cursor = db.cursor() + query = ''' + SELECT * FROM issuances + WHERE (status = ? AND asset = ?) + ORDER BY tx_index DESC + ''' + bindings = ('valid', asset) + cursor.execute(query, bindings) + issuances = cursor.fetchall() + if not issuances: raise exceptions.AssetError(f'No such asset: {asset}') + return issuances[0]['divisible'] + + +def value_out(db, quantity, asset, divisible=None): + if asset not in ['leverage', 'value', 'fraction', 'price', 'odds'] and divisible == None: + divisible = is_divisible(db, asset) + return util.value_output(quantity, asset, divisible) + + +def value_in(db, quantity, asset, divisible=None): + if asset not in ['leverage', 'value', 'fraction', 'price', 'odds'] and divisible == None: + divisible = is_divisible(db, asset) + return util.value_input(quantity, asset, divisible) + + +def price (numerator, denominator): + """Return price as Fraction or Decimal.""" + if CURRENT_BLOCK_INDEX >= 294500 or config.TESTNET or config.REGTEST: # Protocol change. + return fractions.Fraction(numerator, denominator) + else: + numerator = D(numerator) + denominator = D(denominator) + return D(numerator / denominator) + + +def get_asset_issuer(db, asset): + """Check if the asset is divisible.""" + if asset in (config.BTC, config.XCP): + return True + else: + cursor = db.cursor() + query = ''' + SELECT * FROM issuances + WHERE (status = ? AND asset = ?) + ORDER BY tx_index DESC + ''' + bindings = ('valid', asset) + cursor.execute(query, bindings) + issuances = cursor.fetchall() + if not issuances: raise exceptions.AssetError(f'No such asset: {asset}') + return issuances[0]['issuer'] + + +def get_asset_description(db, asset): + if asset in (config.BTC, config.XCP): + return '' + else: + cursor = db.cursor() + query = ''' + SELECT * FROM issuances + WHERE (status = ? AND asset = ?) + ORDER BY tx_index DESC + ''' + bindings = ('valid', asset) + cursor.execute(query, bindings) + issuances = cursor.fetchall() + if not issuances: raise exceptions.AssetError(f'No such asset: {asset}') + return issuances[0]['description'] + + +def get_issuances_count(db, address): + cursor = db.cursor() + query = ''' + SELECT COUNT(DISTINCT(asset)) cnt + FROM issuances + WHERE issuer = ? + ''' + bindings = (address,) + cursor.execute(query, bindings) + return cursor.fetchall()[0]['cnt'] + + +def get_asset_issued(db, address): + cursor = db.cursor() + query = ''' + SELECT DISTINCT(asset) + FROM issuances + WHERE issuer = ? + ''' + bindings = (address,) + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_asset_balances(db, asset, exclude_zero_balances=True): + cursor = db.cursor() + query = ''' + SELECT address, asset, quantity, MAX(rowid) + FROM balances + WHERE asset = ? + GROUP BY address, asset + ORDER BY address + ''' + if exclude_zero_balances: + query = f''' + SELECT * FROM ( + {query} + ) WHERE quantity > 0 + ''' # nosec B608 + bindings = (asset,) + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_asset_issuances_quantity(db, asset): + cursor = db.cursor() + query = ''' + SELECT COUNT(*) AS issuances_count + FROM issuances + WHERE (status = ? AND asset = ?) + ORDER BY tx_index DESC + ''' + bindings = ('valid', asset) + cursor.execute(query, bindings) + issuances = cursor.fetchall() + return issuances[0]['issuances_count'] + + +def get_asset_info(db, asset): + if asset == config.BTC or asset == config.XCP: + return {'divisible':True} + cursor = db.cursor() + query = ''' + SELECT * FROM issuances + WHERE (status = ? AND asset = ?) + ORDER BY tx_index DESC + ''' + bindings = ('valid', asset) + cursor.execute(query, bindings) + issuances = cursor.fetchall() + return issuances[0] + + +def get_issuances(db, asset=None, status=None, locked=None, first=False, last=False): + cursor = db.cursor() + cursor = db.cursor() + where = [] + bindings = [] + if status is not None: + where.append('status = ?') + bindings.append(status) + if asset is not None: + where.append('asset = ?') + bindings.append(asset) + if locked is not None: + where.append('locked = ?') + bindings.append(locked) + # no sql injection here + query = f'''SELECT * FROM issuances WHERE ({" AND ".join(where)})''' # nosec B608 + if first: + query += f''' ORDER BY tx_index ASC''' + elif last: + query += f''' ORDER BY tx_index DESC''' + cursor.execute(query, tuple(bindings)) + return cursor.fetchall() + + +def get_assets_by_longname(db, asset_longname): + cursor = db.cursor() + query = ''' + SELECT * FROM assets + WHERE (asset_longname = ?) + ''' + bindings = (asset_longname,) + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_valid_assets(db): + cursor = db.cursor() + query = ''' + SELECT asset, asset_longname + FROM issuances + WHERE status = 'valid' + GROUP BY asset + ORDER BY asset ASC + ''' + cursor.execute(query) + return cursor.fetchall() + + +##################### +# BROADCASTS # +##################### + + +def get_oracle_last_price(db, oracle_address, block_index): + cursor = db.cursor() + query = ''' + SELECT * FROM broadcasts + WHERE source = :source AND status = :status AND block_index < :block_index + ORDER by tx_index DESC LIMIT 1 + ''' + bindings = { + 'source': oracle_address, + 'status': 'valid', + 'block_index': block_index + } + cursor.execute(query, bindings) + broadcasts = cursor.fetchall() + cursor.close() + + if len(broadcasts) == 0: + return None, None, None, None + + oracle_broadcast = broadcasts[0] + oracle_label = oracle_broadcast["text"].split("-") + if len(oracle_label) == 2: + fiat_label = oracle_label[1] + else: + fiat_label = "" + + return oracle_broadcast['value'], oracle_broadcast['fee_fraction_int'], fiat_label, oracle_broadcast['block_index'] + + +def get_broadcasts_by_source(db, source, status): + cursor = db.cursor() + query = ''' + SELECT * FROM broadcasts + WHERE (status = ? AND source = ?) + ORDER BY tx_index ASC + ''' + bindings = (status, source) + cursor.execute(query, bindings) + return cursor.fetchall() + + +##################### +# BURNS # +##################### + + +def get_burns(db, status=None, source=None): + cursor = db.cursor() + where = [] + bindings = [] + if status is not None: + where.append('status = ?') + bindings.append(status) + if source is not None: + where.append('source = ?') + bindings.append(source) + # no sql injection here + query = f'''SELECT * FROM burns WHERE ({" AND ".join(where)})''' # nosec B608 + cursor.execute(query, tuple(bindings)) + return cursor.fetchall() + + +########################### +# TRANSACTIONS # +########################### + + +def get_vouts(db, tx_hash): + cursor = db.cursor() + query = ''' + SELECT txs.source AS source, txs_outs.* + FROM transaction_outputs txs_outs + LEFT JOIN transactions txs ON txs.tx_hash = txs_outs.tx_hash + WHERE txs_outs.tx_hash=:tx_hash + ORDER BY txs_outs.out_index + ''' + bindings = {'tx_hash': tx_hash} + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_transactions(db, tx_hash=None): + cursor = db.cursor() + where = [] + bindings = [] + if tx_hash is not None: + where.append('tx_hash = ?') + bindings.append(tx_hash) + # no sql injection here + query = f'''SELECT * FROM transactions WHERE ({" AND ".join(where)})''' # nosec B608 + cursor.execute(query, tuple(bindings)) + return cursor.fetchall() + + +def get_transaction_source(db, tx_hash): + cursor = db.cursor() + query = '''SELECT source FROM transactions WHERE tx_hash = ?''' + bindings = (tx_hash,) + cursor.execute(query, tuple(bindings)) + return cursor.fetchone()['source'] + + +def get_addresses(db, address=None): + cursor = db.cursor() + where = [] + bindings = [] + if address is not None: + where.append('address = ?') + bindings.append(address) + # no sql injection here + query = f'''SELECT * FROM addresses WHERE ({" AND ".join(where)})''' # nosec B608 + cursor.execute(query, tuple(bindings)) + return cursor.fetchall() + + +############################### +# UTIL FUNCTIONS # +############################### + +# This function allows you to update a record using an INSERT. +# The `block_index` and `rowid` fields allow you to +# order updates and retrieve the row with the current data. + +def insert_update(db, table_name, id_name, id_value, update_data): + cursor = db.cursor() + # select records to update + select_query = f''' + SELECT *, rowid + FROM {table_name} + WHERE {id_name} = ? + ORDER BY rowid DESC + LIMIT 1 + ''' # nosec B608 + bindings = (id_value,) + need_update_record = cursor.execute(select_query, bindings).fetchone() + + # update record + new_record = need_update_record.copy() + # updade needed fields + for key, value in update_data.items(): + new_record[key] = value + # new block_index and tx_index + new_record['block_index'] = CURRENT_BLOCK_INDEX + # let's keep the original tx_index so we can preserve order + # with the old queries (ordered by default by old primary key) + # TODO: restore with protocol change and checkpoints update + #if 'tx_index' in new_record: + # new_record['tx_index'] = tx_index + # insert new record + if 'rowid' in new_record: + del new_record['rowid'] + fields_name = ', '.join(new_record.keys()) + fields_values = ', '.join([f':{key}' for key in new_record.keys()]) + # no sql injection here + insert_query = f'''INSERT INTO {table_name} ({fields_name}) VALUES ({fields_values})''' # nosec B608 + cursor.execute(insert_query, new_record) + + cursor.close() + + +MUTABLE_FIELDS = { + 'balances': ['quantity'], + 'orders': ['give_remaining', 'get_remaining', 'fee_required_remaining', 'fee_provided_remaining', 'status'], + 'order_matches': ['status'], + 'bets': ['wager_remaining', 'counterwager_remaining', 'status'], + 'bet_matches': ['status'], + 'rps': ['status'], + 'rps_matches': ['status'], + 'dispensers': ['give_remaining', 'status', 'last_status_tx_hash'], +} +ID_FIELDS = { + 'balances': ['address', 'asset'], + 'orders': ['tx_hash'], + 'order_matches': ['id'], + 'bets': ['tx_hash'], + 'bet_matches': ['id'], + 'rps': ['tx_hash'], + 'rps_matches': ['id'], + 'dispensers': ['tx_hash'], +} + +def _gen_where_and_binding(key, value): + where = '' + bindings = [] + _key = key.replace('_in', '') + if key.endswith('_in'): + assert isinstance(value, list) + where = f'{_key} IN ({",".join(["?" for e in range(0, len(value))])})' + bindings += value + else: + where = f'{_key} = ?' + bindings.append(value) + return where, bindings + + +def select_last_revision(db, table_name, where_data): + cursor = db.cursor() + if table_name not in MUTABLE_FIELDS.keys(): + raise exceptions.UnknownTable(f'Unknown table: {table_name}') + query = ''' + PRAGMA table_info(?) + ''' + bindings = (table_name,) + columns = [column['name'] for column in cursor.execute(query, bindings)] + for key in where_data.keys(): + _key = key.replace('_in', '') + if _key not in columns: + raise exceptions.UnknownField(f'Unknown field: {key}') + + where_immutable = [] + where_mutable = [] + bindings = [] + for key, value in where_data.items(): + if key.replace('_in', '') not in MUTABLE_FIELDS[table_name]: + _where, _bindings = _gen_where_and_binding(key, value) + where_immutable.append(_where) + bindings += _bindings + for key, value in where_data.items(): + if key.replace('_in', '') in MUTABLE_FIELDS[table_name]: + _where, _bindings = _gen_where_and_binding(key, value) + where_mutable.append(_where) + bindings += _bindings + # no sql injection here + query = f'''SELECT * FROM ( + SELECT *, MAX(rowid) + FROM {table_name} + WHERE ({" AND ".join(where_immutable)}) + GROUP BY {", ".join(ID_FIELDS[table_name])} + ) WHERE ({" AND ".join(where_mutable)}) + ''' # nosec B608 + cursor.execute(query, tuple(bindings)) + return cursor.fetchall() + + +##################### +# DISPENSERS # +##################### + +### SELECTS ### + +def get_dispenser_info(db, tx_hash=None, tx_index=None): + cursor = db.cursor() + where = [] + bindings = [] + if tx_hash is not None: + where.append('tx_hash = ?') + bindings.append(tx_hash) + if tx_index is not None: + where.append('tx_index = ?') + bindings.append(tx_index) + # no sql injection here + query = f''' + SELECT d.*, a.asset_longname + FROM dispensers d + LEFT JOIN assets a ON a.asset_name = d.asset + WHERE ({" AND ".join(where)}) + ORDER BY d.rowid DESC LIMIT 1 + ''' # nosec B608 + cursor.execute(query, tuple(bindings)) + return cursor.fetchall() + + +def get_refilling_count(db, dispenser_tx_hash): + cursor = db.cursor() + query = ''' + SELECT count(*) cnt + FROM dispenser_refills + WHERE dispenser_tx_hash = ? + ''' + bindings = (dispenser_tx_hash,) + cursor.execute(query, bindings) + return cursor.fetchall()[0]['cnt'] + + +def get_pending_dispensers_old(db, status, delay, block_index): + cursor = db.cursor() + query = ''' + SELECT * FROM + (SELECT d.*, t.source AS tx_source, t.block_index AS tx_block_index, MAX(d.rowid) AS rowid + FROM dispensers AS d + LEFT JOIN transactions t ON t.tx_hash = d.last_status_tx_hash + WHERE :block_index = t.block_index + :delay + GROUP BY d.source, d.asset) + WHERE status = :status + AND last_status_tx_hash IS NOT NULL + ORDER BY tx_index + ''' + bindings = { + 'status': status, + 'delay': delay, + 'block_index': block_index + } + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_pending_dispensers(db, delay, block_index): + status_closed = 10 + status_closing = 11 + + cursor = db.cursor() + # we assume here that the status_closed and status_closing are the last statuses + # and that dispenser with status_closing can be closed before the delay if it's empty + query = ''' + SELECT d.*, t.source AS tx_source, t.block_index AS tx_block_index, MAX(d.rowid) AS rowid + FROM dispensers AS d + LEFT JOIN transactions t ON t.tx_hash = d.last_status_tx_hash + WHERE :block_index = t.block_index + :delay + AND status IN (:status_closed, :status_closing) + GROUP BY d.source, d.asset + ORDER BY tx_index + ''' + bindings = { + 'status_closed': status_closed, + 'status_closing': status_closing, + 'delay': delay, + 'block_index': block_index + } + cursor.execute(query, bindings) + return [dispenser for dispenser in cursor.fetchall() if dispenser['status'] == status_closing] + + +def get_dispensers_count(db, source, status, origin): + cursor = db.cursor() + query = ''' + SELECT count(*) cnt FROM ( + SELECT *, MAX(rowid) + FROM dispensers + WHERE source = ? AND origin = ? + GROUP BY tx_hash + ) WHERE status = ? + ORDER BY tx_index + ''' + bindings = (source, origin, status) + cursor.execute(query, bindings) + return cursor.fetchall()[0]['cnt'] + + +def get_dispenses_count(db, dispenser_tx_hash, from_block_index): + cursor = db.cursor() + query = ''' + SELECT COUNT(*) AS dispenses_count + FROM dispenses + WHERE dispenser_tx_hash = :dispenser_tx_hash + AND block_index >= :block_index + ''' + bindings = { + 'dispenser_tx_hash': dispenser_tx_hash, + 'block_index': from_block_index + } + cursor.execute(query, bindings) + dispenses_count_result = cursor.fetchall()[0] + return dispenses_count_result["dispenses_count"] + + +def get_last_refills_block_index(db, dispenser_tx_hash): + cursor = db.cursor() + query = ''' + SELECT MAX(block_index) AS max_block_index + FROM dispenser_refills + WHERE dispenser_tx_hash = :dispenser_tx_hash + ''' + bindings = { + 'dispenser_tx_hash': dispenser_tx_hash + } + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_dispenser(db, tx_hash): + cursor = db.cursor() + query = ''' + SELECT * FROM dispensers + WHERE tx_hash = ? + ORDER BY rowid DESC LIMIT 1 + ''' + bindings = (tx_hash,) + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_dispensers(db, status_in=None, source_in=None, source=None, asset=None, origin=None, status=None, tx_hash=None, order_by=None, group_by=None): + cursor = db.cursor() + bindings = [] + # where for immutable fields + first_where = [] + if source is not None: + first_where.append('source = ?') + bindings.append(source) + if source_in is not None: + first_where.append(f"source IN ({','.join(['?' for e in range(0, len(source_in))])})") + bindings += source_in + if asset is not None: + first_where.append('asset = ?') + bindings.append(asset) + if origin is not None: + first_where.append('origin = ?') + bindings.append(origin) + # where for mutable fields + second_where = [] + if status is not None: + second_where.append('status = ?') + bindings.append(status) + if status_in is not None: + second_where.append(f"status IN ({','.join(['?' for e in range(0, len(status_in))])})") + bindings += status_in + # build query + first_where_str = ' AND '.join(first_where) + if first_where_str != '': + first_where_str = f'WHERE ({first_where_str})' + second_where_str = ' AND '.join(second_where) + if second_where_str != '': + second_where_str = f'WHERE ({second_where_str})' + order_clause = f'ORDER BY {order_by}' if order_by is not None else 'ORDER BY tx_index' + group_clause = f'GROUP BY {group_by}' if group_by is not None else 'GROUP BY asset, source' + # no sql injection here + query = f''' + SELECT *, rowid FROM ( + SELECT *, MAX(rowid) as rowid + FROM dispensers + {first_where_str} + {group_clause} + ) {second_where_str} + {order_clause} + ''' # nosec B608 + cursor.execute(query, tuple(bindings)) + return cursor.fetchall() + + +### UPDATES ### + +def update_dispenser(db, rowid, update_data): + insert_update(db, 'dispensers', 'rowid', rowid, update_data) + + +##################### +# BETS # +##################### + +### SELECTS ### + +def get_pending_bet_matches(db, feed_address, order_by=None): + cursor = db.cursor() + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) as rowid + FROM bet_matches + WHERE feed_address = ? + GROUP BY id + ) WHERE status = ? + ''' + if order_by is not None: + query += f''' ORDER BY {order_by}''' + else: + query += f''' ORDER BY rowid''' + bindings = (feed_address, 'pending') + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_bet_matches_to_expire(db, block_time): + cursor = db.cursor() + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) as rowid + FROM bet_matches + WHERE deadline < ? AND deadline > ? + GROUP BY id + ) WHERE status = ? + ORDER BY rowid + ''' + bindings = ( + block_time - config.TWO_WEEKS, + block_time - 2 * config.TWO_WEEKS, # optimize query: assuming before that we have already expired + 'pending' + ) + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_bet(db, tx_hash): + cursor = db.cursor() + query = ''' + SELECT * FROM bets + WHERE tx_hash = ? + ORDER BY rowid DESC LIMIT 1 + ''' + bindings = (tx_hash,) + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_bets_to_expire(db, block_index): + cursor = db.cursor() + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM bets + WHERE expire_index = ? - 1 + GROUP BY tx_hash + ) WHERE status = ? + ORDER BY tx_index, tx_hash + ''' + bindings = (block_index, 'open') + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_matching_bets(db, feed_address, bet_type): + cursor = db.cursor() + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM bets + WHERE (feed_address = ? AND bet_type = ?) + GROUP BY tx_hash + ) WHERE status = ? + ORDER BY tx_index, tx_hash + ''' + bindings = (feed_address, bet_type, 'open') + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_open_bet_by_feed(db, feed_address): + cursor = db.cursor() + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM bets + WHERE feed_address = ? + GROUP BY tx_hash + ) WHERE status = ? + ORDER BY tx_index, tx_hash + ''' + bindings = (feed_address, 'open') + cursor.execute(query, bindings) + return cursor.fetchall() + + +### UPDATES ### + +def update_bet(db, tx_hash, update_data): + insert_update(db, 'bets', 'tx_hash', tx_hash, update_data) + + +def update_bet_match_status(db, id, status): + update_data = { + 'status': status + } + insert_update(db, 'bet_matches', 'id', id, update_data) + + +##################### +# ORDERS # +##################### + +### SELECTS ### + +def get_pending_order_matches(db, tx0_hash, tx1_hash): + cursor = db.cursor() + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) as rowid FROM order_matches + WHERE ( + tx0_hash in (:tx0_hash, :tx1_hash) OR + tx1_hash in (:tx0_hash, :tx1_hash) + ) + GROUP BY id + ) WHERE status = :status + ORDER BY rowid + ''' + bindings = { + 'status': 'pending', + 'tx0_hash': tx0_hash, + 'tx1_hash': tx1_hash + } + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_pending_btc_order_matches(db, address): + cursor = db.cursor() + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) AS rowid + FROM order_matches + WHERE (tx0_address = ? AND forward_asset = ?) OR (tx1_address = ? AND backward_asset = ?) + ) WHERE status = ? + ORDER BY rowid + ''' + bindings = (address, config.BTC, address, config.BTC, 'pending') + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_order_match(db, id): + cursor = db.cursor() + query = ''' + SELECT *, rowid + FROM order_matches + WHERE id = ? + ORDER BY rowid DESC LIMIT 1''' + bindings = (id,) + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_order_matches_to_expire(db, block_index): + cursor = db.cursor() + query = '''SELECT * FROM ( + SELECT *, MAX(rowid) AS rowid + FROM order_matches + WHERE match_expire_index = ? - 1 + GROUP BY id + ) WHERE status = ? + ORDER BY rowid + ''' + bindings = (block_index, 'pending') + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_order(db, tx_hash): + cursor = db.cursor() + query = ''' + SELECT * FROM orders + WHERE tx_hash = ? + ORDER BY rowid DESC LIMIT 1 + ''' + bindings = (tx_hash,) + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_order_first_block_index(cursor, tx_hash): + query = ''' + SELECT block_index FROM orders + WHERE tx_hash = ? + ORDER BY rowid ASC LIMIT 1 + ''' + bindings = (tx_hash,) + cursor.execute(query, bindings) + return cursor.fetchone()['block_index'] + + +def get_orders_to_expire(db, block_index): + cursor = db.cursor() + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM orders + WHERE expire_index = ? - 1 + GROUP BY tx_hash + ) WHERE status = ? + ORDER BY tx_index, tx_hash + ''' + bindings = (block_index, 'open') + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_open_btc_orders(db, address): + cursor = db.cursor() + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM orders + WHERE (source = ? AND give_asset = ?) + GROUP BY tx_hash + ) WHERE status = ? + ORDER BY tx_index, tx_hash + ''' + bindings = (address, config.BTC, 'open') + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_matching_orders(db, tx_hash, give_asset, get_asset): + cursor = db.cursor() + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM orders + WHERE (tx_hash != ? AND give_asset = ? AND get_asset = ?) + GROUP BY tx_hash + ) WHERE status = ? + ORDER BY tx_index, tx_hash + ''' + bindings = (tx_hash, get_asset, give_asset, 'open') + cursor.execute(query, bindings) + return cursor.fetchall() + +### UPDATES ### + +def update_order(db, tx_hash, update_data): + insert_update(db, 'orders', 'tx_hash', tx_hash, update_data) + + +def mark_order_as_filled(db, tx0_hash, tx1_hash, source=None): + + select_bindings = { + 'tx0_hash': tx0_hash, + 'tx1_hash': tx1_hash + } + + where_source = '' + if source is not None: + where_source = f' AND source = :source' + select_bindings['source'] = source + + # no sql injection here + select_query = f''' + SELECT * FROM ( + SELECT *, MAX(rowid) as rowid + FROM orders + WHERE + tx_hash in (:tx0_hash, :tx1_hash) + {where_source} + GROUP BY tx_hash + ) WHERE give_remaining = 0 OR get_remaining = 0 + ''' # nosec B608 + + cursor = db.cursor() + cursor.execute(select_query, select_bindings) + for order in cursor: + update_data = { + 'status': 'filled' + } + insert_update(db, 'orders', 'rowid', order['rowid'], update_data) + + +def update_order_match_status(db, id, status): + update_data = { + 'status': status + } + insert_update(db, 'order_matches', 'id', id, update_data) + + +##################### +# RPS # +##################### + +### SELECTS ### + +def get_matched_not_expired_rps(db, tx0_hash, tx1_hash, expire_index): + cursor = db.cursor() + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) as rowid + FROM rps + WHERE tx_hash IN (?, ?) + AND expire_index >= ? + GROUP BY tx_hash + ) WHERE status = ? + ''' + bindings = (tx0_hash, tx1_hash, expire_index, 'matched') + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_already_matched_rps(db, tx_hash): + cursor = db.cursor() + query = ''' + SELECT *, MAX(rowid) AS rowid + FROM rps_matches + WHERE tx0_hash = ? OR tx1_hash = ? + GROUP BY id + ORDER BY rowid + ''' + bindings = (tx_hash, tx_hash) + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_matching_rps(db, possible_moves, wager, source, already_matched_tx_hashes): + cursor = db.cursor() + bindings = (possible_moves, wager, source) + already_matched_cond = '' + if already_matched_tx_hashes: + place_holders = ','.join(['?' for e in range(0, len(already_matched_tx_hashes))]) + already_matched_cond = f'''AND tx_hash NOT IN ({place_holders})''' + bindings += tuple(already_matched_tx_hashes) + bindings += ('open',) + # no sql injection here + query = f''' + SELECT * FROM ( + SELECT *, MAX(rowid) FROM rps + WHERE (possible_moves = ? AND wager = ? AND source != ? {already_matched_cond}) + GROUP BY tx_hash + ) WHERE status = ? + ORDER BY tx_index LIMIT 1 + ''' # nosec B608 + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_rps_to_expire(db, block_index): + cursor = db.cursor() + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM rps + WHERE expire_index = ? - 1 + GROUP BY tx_hash + ) WHERE status = ? + ORDER BY tx_index, tx_hash + ''' + bindings = (block_index, 'open') + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_rps(db, tx_hash): + cursor = db.cursor() + query = ''' + SELECT * FROM rps + WHERE tx_hash = ? + ORDER BY rowid DESC + LIMIT 1 + ''' + bindings = (tx_hash,) + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_rps_matches_to_expire(db, block_index): + cursor = db.cursor() + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) AS rowid + FROM rps_matches + WHERE match_expire_index < ? + GROUP BY id + ) WHERE status IN (?, ? , ?) + ORDER BY rowid + ''' + bindings = (block_index, 'pending', 'pending and resolved', 'resolved and pending') + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_rps_match(db, id): + cursor = db.cursor() + query = ''' + SELECT * FROM rps_matches + WHERE id = ? + ORDER BY rowid + DESC LIMIT 1 + ''' + bindings = (id,) + cursor.execute(query, bindings) + return cursor.fetchall() + + +def get_rpsresolves(db, source=None, status=None, rps_match_id=None): + cursor = db.cursor() + where = [] + bindings = [] + if source is not None: + where.append('source = ?') + bindings.append(source) + if status is not None: + where.append('status = ?') + bindings.append(status) + if rps_match_id is not None: + where.append('rps_match_id = ?') + bindings.append(rps_match_id) + # no sql injection here + query = f'''SELECT * FROM rpsresolves WHERE ({" AND ".join(where)})''' # nosec B608 + cursor.execute(query, tuple(bindings)) + return cursor.fetchall() + + +### UPDATES ### + +def update_rps_match_status(db, id, status): + update_data = { + 'status': status + } + insert_update(db, 'rps_matches', 'id', id, update_data) + + +def update_rps_status(db, tx_hash, status): + update_data = { + 'status': status + } + insert_update(db, 'rps', 'tx_hash', tx_hash, update_data) + + +##################### +# SUPPLIES # +##################### + +# Ugly way to get holders but we want to preserve the order with the old query +# to not break checkpoints +def _get_holders(cursor, id_fields, hold_fields_1, hold_fields_2=None, exclude_empty_holders=False, table=None): + save_records = {} + for record in cursor: + id = ' '.join([str(record[field]) for field in id_fields]) + if id not in save_records: + save_records[id] = record + continue + if save_records[id]['rowid'] < record['rowid']: + save_records[id] = record + continue + holders = [] + for holder in save_records.values(): + if holder[hold_fields_1['address_quantity']] > 0 or \ + (exclude_empty_holders == False and holder[hold_fields_1['address_quantity']] == 0): + holders.append({ + 'address': holder[hold_fields_1['address']], + 'address_quantity': holder[hold_fields_1['address_quantity']], + 'escrow': holder[hold_fields_1['escrow']] if 'escrow' in hold_fields_1 else None, + #'table': table # for debugging purposes + }) + if hold_fields_2 is not None: + if holder[hold_fields_2['address_quantity']] > 0 or \ + (exclude_empty_holders == False and holder[hold_fields_2['address_quantity']] == 0): + holders.append({ + 'address': holder[hold_fields_2['address']], + 'address_quantity': holder[hold_fields_2['address_quantity']], + 'escrow': holder[hold_fields_2['escrow']] if 'escrow' in hold_fields_2 else None, + #'table': table # for debugging purposes + }) + return holders + + +def holders(db, asset, exclude_empty_holders=False): + """Return holders of the asset.""" + holders = [] + cursor = db.cursor() + + # Balances + + query = ''' + SELECT *, rowid + FROM balances + WHERE asset = ? + ''' + bindings = (asset,) + cursor.execute(query, bindings) + holders += _get_holders( + cursor, + ['asset', 'address'], + {'address': 'address', 'address_quantity': 'quantity'}, + exclude_empty_holders=exclude_empty_holders, + table='balances' + ) + + # Funds escrowed in orders. (Protocol change.) + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM orders + WHERE give_asset = ? + GROUP BY tx_hash + ) WHERE status = ? + ORDER BY tx_index + ''' + bindings = (asset, 'open') + cursor.execute(query, bindings) + holders += _get_holders( + cursor, + ['tx_hash'], + {'address': 'source', 'address_quantity': 'give_remaining', 'escrow': 'tx_hash'}, + #exclude_empty_holders=exclude_empty_holders, + table='orders' + ) + + # Funds escrowed in pending order matches. (Protocol change.) + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM order_matches + WHERE forward_asset = ? + GROUP BY id + ) WHERE status = ? + ''' + bindings = (asset, 'pending') + cursor.execute(query, bindings) + holders += _get_holders( + cursor, + ['id'], + {'address': 'tx0_address', 'address_quantity': 'forward_quantity', 'escrow': 'id'}, + #exclude_empty_holders=exclude_empty_holders, + table='order_matches1' + ) + + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) AS rowid + FROM order_matches + WHERE backward_asset = ? + ) WHERE status = ? + ORDER BY rowid + ''' + bindings = (asset, 'pending') + cursor.execute(query, bindings) + holders += _get_holders( + cursor, + ['id'], + {'address': 'tx1_address', 'address_quantity': 'backward_quantity', 'escrow': 'id'}, + #exclude_empty_holders=exclude_empty_holders, + table='order_matches2' + ) + + # Bets and RPS (and bet/rps matches) only escrow XCP. + if asset == config.XCP: + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM bets + GROUP BY tx_hash + ) WHERE status = ? + ORDER BY tx_index + ''' + bindings = ('open',) + cursor.execute(query, bindings) + holders += _get_holders( + cursor, + ['tx_hash'], + {'address': 'source', 'address_quantity': 'wager_remaining', 'escrow': 'tx_hash'}, + #exclude_empty_holders=exclude_empty_holders, + table='bets' + ) + + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM bet_matches + GROUP BY id + ) WHERE status = ? + ''' + bindings = ('pending',) + cursor.execute(query, bindings) + holders += _get_holders( + cursor, + ['id'], + {'address': 'tx0_address', 'address_quantity': 'forward_quantity', 'escrow': 'id'}, + {'address': 'tx1_address', 'address_quantity': 'backward_quantity', 'escrow': 'id'}, + #exclude_empty_holders=exclude_empty_holders, + table='bet_matches' + ) + + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM rps + GROUP BY tx_hash + ) WHERE status = ? + ORDER BY tx_index + ''' + bindings = ('open',) + cursor.execute(query, bindings) + holders += _get_holders( + cursor, + ['tx_hash'], + {'address': 'source', 'address_quantity': 'wager', 'escrow': 'tx_hash'}, + #exclude_empty_holders=exclude_empty_holders, + table='rps' + ) + + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM rps_matches + GROUP BY id + ) WHERE status IN (?, ?, ?) + ''' + bindings = ('pending', 'pending and resolved', 'resolved and pending') + cursor.execute(query, bindings) + holders += _get_holders( + cursor, + ['id'], + {'address': 'tx0_address', 'address_quantity': 'wager', 'escrow': 'id'}, + {'address': 'tx1_address', 'address_quantity': 'wager', 'escrow': 'id'}, + #exclude_empty_holders=exclude_empty_holders, + table='rps_matches' + ) + + if enabled('dispensers_in_holders'): + # Funds escrowed in dispensers. + query = ''' + SELECT * FROM ( + SELECT *, MAX(rowid) + FROM dispensers + WHERE asset = ? + GROUP BY source, asset + ) WHERE status = ? + ORDER BY tx_index + ''' + bindings = (asset, 0) + cursor.execute(query, bindings) + holders += _get_holders( + cursor, + ['tx_hash', 'source', 'asset', 'satoshirate', 'give_quantity'], + {'address': 'source', 'address_quantity': 'give_remaining'}, + #exclude_empty_holders=exclude_empty_holders, + table='dispensers' + ) + + cursor.close() + return holders + + +def xcp_created (db): + """Return number of XCP created thus far.""" + cursor = db.cursor() + query = ''' + SELECT SUM(earned) AS total + FROM burns + WHERE (status = ?) + ''' + bindings = ('valid',) + cursor.execute(query, bindings) + total = list(cursor)[0]['total'] or 0 + cursor.close() + return total + + +def xcp_destroyed (db): + """Return number of XCP destroyed thus far.""" + cursor = db.cursor() + # Destructions. + query = ''' + SELECT SUM(quantity) AS total + FROM destructions + WHERE (status = ? AND asset = ?) + ''' + bindings = ('valid', config.XCP) + cursor.execute(query, bindings) + destroyed_total = list(cursor)[0]['total'] or 0 + + # Subtract issuance fees. + query = ''' + SELECT SUM(fee_paid) AS total + FROM issuances + WHERE status = ? + ''' + bindings = ('valid',) + cursor.execute(query, bindings) + issuance_fee_total = list(cursor)[0]['total'] or 0 + + # Subtract dividend fees. + query = ''' + SELECT SUM(fee_paid) AS total + FROM dividends + WHERE status = ? + ''' + bindings = ('valid',) + cursor.execute(query, bindings) + dividend_fee_total = list(cursor)[0]['total'] or 0 + + # Subtract sweep fees. + query = ''' + SELECT SUM(fee_paid) AS total + FROM sweeps + WHERE status = ? + ''' + bindings = ('valid',) + cursor.execute(query, bindings) + sweeps_fee_total = list(cursor)[0]['total'] or 0 + cursor.close() + return destroyed_total + issuance_fee_total + dividend_fee_total + sweeps_fee_total + + +def xcp_supply (db): + """Return the XCP supply.""" + return xcp_created(db) - xcp_destroyed(db) + + +def creations (db): + """Return creations.""" + cursor = db.cursor() + creations = {config.XCP: xcp_created(db)} + query = ''' + SELECT asset, SUM(quantity) AS created + FROM issuances + WHERE status = ? + GROUP BY asset + ''' + bindings = ('valid',) + cursor.execute(query, bindings) + + for issuance in cursor: + asset = issuance['asset'] + created = issuance['created'] + creations[asset] = created + + cursor.close() + return creations + + +def destructions (db): + """Return destructions.""" + cursor = db.cursor() + destructions = {config.XCP: xcp_destroyed(db)} + query = ''' + SELECT asset, SUM(quantity) AS destroyed + FROM destructions + WHERE (status = ? AND asset != ?) + GROUP BY asset + ''' + bindings = ('valid', config.XCP) + cursor.execute(query, bindings) + + for destruction in cursor: + asset = destruction['asset'] + destroyed = destruction['destroyed'] + destructions[asset] = destroyed + + cursor.close() + return destructions + + +def asset_issued_total (db, asset): + """Return asset total issued.""" + cursor = db.cursor() + query = ''' + SELECT SUM(quantity) AS total + FROM issuances + WHERE (status = ? AND asset = ?) + ''' + bindings = ('valid', asset) + cursor.execute(query, bindings) + issued_total = list(cursor)[0]['total'] or 0 + cursor.close() + return issued_total + + +def asset_destroyed_total (db, asset): + """Return asset total destroyed.""" + cursor = db.cursor() + query = ''' + SELECT SUM(quantity) AS total + FROM destructions + WHERE (status = ? AND asset = ?) + ''' + bindings = ('valid', asset) + cursor.execute(query, bindings) + destroyed_total = list(cursor)[0]['total'] or 0 + cursor.close() + return destroyed_total + + +def asset_supply (db, asset): + """Return asset supply.""" + return asset_issued_total(db, asset) - asset_destroyed_total(db, asset) + + +def supplies (db): + """Return supplies.""" + d1 = creations(db) + d2 = destructions(db) + return {key: d1[key] - d2.get(key, 0) for key in d1.keys()} + + +def held (db): #TODO: Rename ? + + queries = [ + ''' + SELECT asset, SUM(quantity) AS total FROM ( + SELECT address, asset, quantity, (address || asset) AS aa, MAX(rowid) + FROM balances + WHERE address IS NOT NULL + GROUP BY aa + ) GROUP BY asset + ''', + ''' + SELECT asset, SUM(quantity) AS total FROM ( + SELECT NULL, asset, quantity + FROM balances + WHERE address IS NULL + ) GROUP BY asset + ''', + ''' + SELECT give_asset AS asset, SUM(give_remaining) AS total FROM ( + SELECT give_asset, give_remaining, status, MAX(rowid) + FROM orders + GROUP BY tx_hash + ) WHERE status = 'open' GROUP BY asset + ''', + ''' + SELECT give_asset AS asset, SUM(give_remaining) AS total FROM ( + SELECT give_asset, give_remaining, status, MAX(rowid) + FROM orders + WHERE give_asset = 'XCP' AND get_asset = 'BTC' + GROUP BY tx_hash + ) WHERE status = 'filled' GROUP BY asset + ''', + ''' + SELECT forward_asset AS asset, SUM(forward_quantity) AS total FROM ( + SELECT forward_asset, forward_quantity, status, MAX(rowid) + FROM order_matches + GROUP BY id + ) WHERE status = 'pending' GROUP BY asset + ''', + ''' + SELECT backward_asset AS asset, SUM(backward_quantity) AS total FROM ( + SELECT backward_asset, backward_quantity, status, MAX(rowid) + FROM order_matches + GROUP BY id + ) WHERE status = 'pending' GROUP BY asset + ''', + ''' + SELECT 'XCP' AS asset, SUM(wager_remaining) AS total FROM ( + SELECT wager_remaining, status, MAX(rowid) + FROM bets + GROUP BY tx_hash + ) WHERE status = 'open' + ''', + ''' + SELECT 'XCP' AS asset, SUM(forward_quantity) AS total FROM ( + SELECT forward_quantity, status, MAX(rowid) + FROM bet_matches + GROUP BY id + ) WHERE status = 'pending' + ''', + ''' + SELECT 'XCP' AS asset, SUM(backward_quantity) AS total FROM ( + SELECT backward_quantity, status, MAX(rowid) + FROM bet_matches + GROUP BY id + ) WHERE status = 'pending' + ''', + ''' + SELECT 'XCP' AS asset, SUM(wager) AS total FROM ( + SELECT wager, status, MAX(rowid) + FROM rps + GROUP BY tx_hash + ) WHERE status = 'open' + ''', + ''' + SELECT 'XCP' AS asset, SUM(wager * 2) AS total FROM ( + SELECT wager, status, MAX(rowid) + FROM rps_matches + GROUP BY id + ) WHERE status IN ('pending', 'pending and resolved', 'resolved and pending') + ''', + ''' + SELECT asset, SUM(give_remaining) AS total FROM ( + SELECT asset, give_remaining, status, MAX(rowid) + FROM dispensers + GROUP BY tx_hash + ) WHERE status IN (0, 1, 11) GROUP BY asset + ''', + ] + # no sql injection here + sql = "SELECT asset, SUM(total) AS total FROM (" + " UNION ALL ".join(queries) + ") GROUP BY asset;" # nosec B608 + + cursor = db.cursor() + cursor.execute(sql) + held = {} + for row in cursor: + asset = row['asset'] + total = row['total'] + held[asset] = total + + return held + + +############################# +# PROTOCOL CHANGES # +############################# + + +def enabled(change_name, block_index=None): + """Return True if protocol change is enabled.""" + if config.REGTEST: + return True # All changes are always enabled on REGTEST + + if config.TESTNET: + index_name = 'testnet_block_index' + else: + index_name = 'block_index' + + enable_block_index = PROTOCOL_CHANGES[change_name][index_name] + + if not block_index: + block_index = CURRENT_BLOCK_INDEX + + if block_index >= enable_block_index: + return True + else: + return False + + +def get_value_by_block_index(change_name, block_index=None): + + if not block_index: + block_index = CURRENT_BLOCK_INDEX + + max_block_index = -1 + + if config.REGTEST: + for key, value in PROTOCOL_CHANGES[change_name]["testnet"]: + if int(key) > int(max_block_index): + max_block_index = key + return PROTOCOL_CHANGES[change_name]["testnet"][max_block_index]["value"] + + if config.TESTNET: + index_name = 'testnet' + else: + index_name = 'mainnet' + + for key in PROTOCOL_CHANGES[change_name][index_name]: + if int(key) > int(max_block_index) and block_index >= int(key): + max_block_index = key + + return PROTOCOL_CHANGES[change_name][index_name][max_block_index]["value"] diff --git a/counterparty-lib/counterpartylib/lib/log.py b/counterparty-lib/counterpartylib/lib/log.py new file mode 100644 index 0000000000..9d4b387325 --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/log.py @@ -0,0 +1,445 @@ +import logging +import decimal +import binascii +import sys +import time +from datetime import datetime +import os +import traceback + +from dateutil.tz import tzlocal +from termcolor import cprint +from colorlog import ColoredFormatter + +from counterpartylib.lib import config +from counterpartylib.lib import exceptions +from counterpartylib.lib import util +from counterpartylib.lib import ledger + +logger = logging.getLogger(config.LOGGER_NAME) +D = decimal.Decimal + +class ModuleLoggingFilter(logging.Filter): + """ + module level logging filter (NodeJS-style), ie: + filters="*,-counterpartylib.lib,counterpartylib.lib.api" + + will log: + - counterpartycli.server + - counterpartylib.lib.api + + but will not log: + - counterpartylib.lib + - counterpartylib.lib.backend.indexd + """ + + def __init__(self, filters): + self.filters = str(filters).split(",") + + self.catchall = "*" in self.filters + if self.catchall: + self.filters.remove("*") + + def filter(self, record): + """ + Determine if specified record should be logged or not + """ + result = None + + for filter in self.filters: + if filter[:1] == "-": + if result is None and ModuleLoggingFilter.ismatch(record, filter[1:]): + result = False + else: + if ModuleLoggingFilter.ismatch(record, filter): + result = True + + if result is None: + return self.catchall + + return result + + @classmethod + def ismatch(cls, record, name): + """ + Determine if the specified record matches the name, in the same way as original logging.Filter does, ie: + 'counterpartylib.lib' will match 'counterpartylib.lib.check' + """ + nlen = len(name) + if nlen == 0: + return True + elif name == record.name: + return True + elif record.name.find(name, 0, nlen) != 0: + return False + return record.name[nlen] == "." + + +def set_up(verbose=False, quiet=True, log_file=None, log_in_console=False): + + loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict] + for logger in loggers: + logger.handlers.clear() + logger.setLevel(logging.CRITICAL) + logger.propagate = False + + logger = logging.getLogger(config.LOGGER_NAME) + + log_level = logging.ERROR + if verbose == quiet: + log_level = logging.INFO + elif verbose: + log_level = logging.DEBUG + + logger.setLevel(log_level) + + # File Logging + if log_file: + max_log_size = 20 * 1024 * 1024 # 20 MB + if os.name == 'nt': + from counterpartylib.lib import util_windows + fileh = util_windows.SanitizedRotatingFileHandler(logfile, maxBytes=max_log_size, backupCount=5) + else: + fileh = logging.handlers.RotatingFileHandler(log_file, maxBytes=max_log_size, backupCount=5) + fileh.setLevel(log_level) + log_format = '%(asctime)s [%(levelname)s] %(message)s' + formatter = logging.Formatter(log_format, '%Y-%m-%d-T%H:%M:%S%z') + fileh.setFormatter(formatter) + logger.addHandler(fileh) + + if log_in_console: + console = logging.StreamHandler() + console.setLevel(log_level) + log_format = '%(log_color)s[%(asctime)s][%(levelname)s] %(message)s%(reset)s' + log_colors = {'WARNING': 'yellow', 'ERROR': 'red', 'CRITICAL': 'red'} + formatter = ColoredFormatter(log_format, "%Y-%m-%d %H:%M:%S", log_colors=log_colors) + console.setFormatter(formatter) + logger.addHandler(console) + + # Log unhandled errors. + def handle_exception(exc_type, exc_value, exc_traceback): + logger.error("Unhandled Exception", exc_info=(exc_type, exc_value, exc_traceback)) + cprint("Unhandled Exception", "red", attrs=["bold"]) + traceback.print_exception(exc_type, exc_value, exc_traceback, file=sys.stderr) + sys.excepthook = handle_exception + + +# we are using a function here for testing purposes +def curr_time(): + return int(time.time()) + +def isodt (epoch_time): + try: + return datetime.fromtimestamp(epoch_time, tzlocal()).isoformat() + except OSError: + return '' + +def message(db, block_index, command, category, bindings, tx_hash=None): + if command == '\n': + return + + cursor = db.cursor() + + # Get last message index. + try: + message = ledger.last_message(db) + message_index = message['message_index'] + 1 + except exceptions.DatabaseError: + message_index = 0 + + # Not to be misleading… + if block_index == config.MEMPOOL_BLOCK_INDEX: + try: + del bindings['status'] + del bindings['block_index'] + del bindings['tx_index'] + except KeyError: + pass + + # Handle binary data. + items = [] + for item in sorted(bindings): + if type(item) == bytes: + items.append(binascii.hexlify(item).decode('ascii')) + else: + items.append(item) + + current_time = curr_time() + bindings_string = str(items) + cursor.execute('insert into messages values(:message_index, :block_index, :command, :category, :bindings, :timestamp)', + (message_index, block_index, command, category, bindings_string, current_time)) + + # Log only real transactions. + if block_index != config.MEMPOOL_BLOCK_INDEX: + log(db, command, category, bindings) + + cursor.close() + + +def log (db, command, category, bindings): + + cursor = db.cursor() + + for element in bindings.keys(): + try: + str(bindings[element]) + except KeyError: + bindings[element] = '' + + def output (quantity, asset): + + try: + if asset not in ('fraction', 'leverage'): + # Only log quantity at `DEBUG`, for speed. + if logging.DEBUG <= logger.getEffectiveLevel(): + return asset + else: + return str(util.value_out(db, quantity, asset)) + ' ' + asset + else: + return str(ledger.value_out(db, quantity, asset)) + except exceptions.AssetError: + return '' + except decimal.DivisionByZero: + return '' + except TypeError: + return '' + + if command == 'update': + if category == 'order': + logger.debug(f"Database: set status of order {bindings['tx_hash']} to {bindings['status']}.") + elif category == 'bet': + logger.debug(f"Database: set status of bet {bindings['tx_hash']} to {bindings['status']}.") + elif category == 'order_matches': + logger.debug(f"Database: set status of order_match {bindings['order_match_id']} to {bindings['status']}.") + elif category == 'bet_matches': + logger.debug(f"Database: set status of bet_match {bindings['bet_match_id']} to {bindings['status']}.") + elif category == 'dispensers': + escrow_quantity = '' + divisible = ledger.get_asset_info(db, bindings['asset'])['divisible'] + + if "escrow_quantity" in bindings: + if divisible: + quantity = bindings["escrow_quantity"]/config.UNIT + escrow_quantity = f"{quantity:.8f}" + else: + escrow_quantity = bindings["escrow_quantity"] + + if ("action" in bindings) and bindings["action"] == 'refill dispenser': + logger.info(f"Dispenser: {bindings['source']} refilled a dispenser with {escrow_quantity} {bindings['asset']}") + elif "prev_status" in bindings: #There was a dispense + if bindings["prev_status"] == 0: + if bindings["status"] == 10: + if bindings["closing_reason"] == "no_more_to_give" or bindings["closing_reason"] == "depleted": + logger.info(f"Dispenser: {bindings['source']} closed dispenser for {bindings['asset']} (dispenser empty)") + elif bindings["closing_reason"] == "max_dispenses_reached": + logger.info(f"Dispenser: {bindings['source']} closed dispenser for {bindings['asset']} (dispenser reached max dispenses limit)") + + elif bindings["status"] == 10 or bindings["status"] == 11: #Address closed the dispenser + + if bindings["status"] == 10: + operator_string = "operator closed" + else: + operator_string = "operator marked the dispenser to close it" + + if ledger.enabled("dispenser_origin_permission_extended", bindings['block_index']) and ("origin" in bindings) and bindings['source'] != bindings['origin']: + if bindings["status"] == 10: + operator_string = "closed by origin" + else: + operator_string = "marked to close by origin" + + logger.info(f"Dispenser: {bindings['source']} closed dispenser for {bindings['asset']} ({operator_string})") + # TODO: elif category == 'balances': + # logger.debug(f"Database: set balance of {bindings['address']} in {bindings['asset']} to {output(bindings['quantity']}."") + + elif command == 'insert': + + if category == 'credits': + logger.debug(f"Credit: {output(bindings['quantity'], bindings['asset'])} to {bindings['address']} #{bindings['action']}# <{bindings['event']}>") + + elif category == 'debits': + logger.debug(f"Debit: {output(bindings['quantity'], bindings['asset'])} from {bindings['address']} #{bindings['action']}# <{bindings['event']}>") + + elif category == 'sends': + logger.info(f"Send: {output(bindings['quantity'], bindings['asset'])} from {bindings['source']} to {bindings['destination']} ({bindings['tx_hash']}) [{bindings['status']}]") + + elif category == 'orders': + logger.info(f"Order: {bindings['source']} ordered {output(bindings['give_quantity'], bindings['give_asset'])} for {output(bindings['get_quantity'], bindings['get_asset'])} in {bindings['expiration']} blocks, with a provided fee of {bindings['fee_provided'] / config.UNIT:.8f} {config.BTC} and a required fee of {bindings['fee_required'] / config.UNIT:.8f} {config.BTC} ({bindings['tx_hash']}) [{bindings['status']}]") + + elif category == 'order_matches': + logger.info(f"Order Match: {output(bindings['forward_quantity'], bindings['forward_asset'])} for {output(bindings['backward_quantity'], bindings['backward_asset'])} ({bindings['id']}) [{bindings['status']}]") + + elif category == 'btcpays': + logger.info(f"{config.BTC} Payment: {bindings['source']} paid {output(bindings['btc_amount'], config.BTC)} to {bindings['destination']} for order match {bindings['order_match_id']} ({bindings['tx_hash']}) [{bindings['status']}]") + + elif category == 'issuances': + if (ledger.get_asset_issuances_quantity(db, bindings["asset"]) == 0) or (bindings['quantity'] > 0): #This is the first issuance or the creation of more supply, so we have to log the creation of the token + if bindings['divisible']: + divisibility = 'divisible' + unit = config.UNIT + else: + divisibility = 'indivisible' + unit = 1 + try: + quantity = ledger.value_out(db, bindings['quantity'], None, divisible=bindings['divisible']) + except Exception as e: + quantity = '?' + + if 'asset_longname' in bindings and bindings['asset_longname'] is not None: + logger.info(f"Subasset Issuance: {bindings['source']} created {quantity} of {divisibility} subasset {bindings['asset_longname']} as numeric asset {bindings['asset']} ({bindings['tx_hash']}) [{bindings['status']}]") + else: + logger.info(f"Issuance: {bindings['source']} created {quantity} of {divisibility} asset {bindings['asset']} ({bindings['tx_hash']}) [{bindings['status']}]") + + if bindings['locked']: + lock_issuance = get_lock_issuance(db, bindings["asset"]) + + if (lock_issuance == None) or (lock_issuance['tx_hash'] == bindings['tx_hash']): + logger.info(f"Issuance: {bindings['source']} locked asset {bindings['asset']} ({bindings['tx_hash']}) [{bindings['status']}]") + + if bindings['transfer']: + logger.info(f"Issuance: {bindings['source']} transfered asset {bindings['asset']} to {bindings['issuer']} ({bindings['tx_hash']}) [{bindings['status']}]") + + elif category == 'broadcasts': + if bindings['locked']: + logger.info(f"Broadcast: {bindings['source']} locked his feed ({bindings['tx_hash']}) [{bindings['status']}]") + else: + logger.info(f"Broadcast: {bindings['source']} at {isodt(bindings['timestamp'])} with a fee of {output(D(bindings['fee_fraction_int'] / 1e8), 'fraction')}% ({bindings['tx_hash']}) [{bindings['status']}]") + + elif category == 'bets': + logger.info(f"Bet: {output(bindings['wager_quantity'], config.XCP)} against {output(bindings['counterwager_quantity'], config.XCP)}, by {bindings['source']}, on {bindings['feed_address']}") + + elif category == 'bet_matches': + placeholder = '' + if bindings['target_value'] >= 0: # Only non‐negative values are valid. + placeholder = ' that ' + str(output(bindings['target_value'], 'value')) + if bindings['leverage']: + placeholder += f", leveraged {output(bindings['leverage'] / 5040, 'leverage')}x" + logger.info(f"Bet Match: {util.BET_TYPE_NAME[bindings['tx0_bet_type']]} for {output(bindings['forward_quantity'], config.XCP)} against {util.BET_TYPE_NAME[bindings['tx1_bet_type']]} for {output(bindings['backward_quantity'], config.XCP)} on {bindings['feed_address']} at {isodt(bindings['deadline'])}{placeholder} ({bindings['id']}) [{bindings['status']}]") + + elif category == 'dividends': + logger.info(f"Dividend: {bindings['source']} paid {output(bindings['quantity_per_unit'], bindings['dividend_asset'])} per unit of {bindings['asset']} ({bindings['tx_hash']}) [{bindings['status']}]") + + elif category == 'burns': + logger.info(f"Burn: {bindings['source']} burned {output(bindings['burned'], config.BTC)} for {output(bindings['earned'], config.XCP)} ({bindings['tx_hash']}) [{bindings['status']}]") + + elif category == 'cancels': + logger.info(f"Cancel: {bindings['offer_hash']} ({bindings['tx_hash']}) [{bindings['status']}]") + + elif category == 'rps': + log_message = f"RPS: {bindings['source']} opens game with {bindings['possible_moves']} possible moves and a wager of {output(bindings['wager'], 'XCP')}" + logger.info(log_message) + + elif category == 'rps_matches': + log_message = f"RPS Match: {bindings['tx0_address']} is playing a {bindings['possible_moves']}-moves game with {bindings['tx1_address']} with a wager of {output(bindings['wager'], 'XCP')} ({bindings['id']}) [{bindings['status']}]" + logger.info(log_message) + + elif category == 'rpsresolves': + + if bindings['status'] == 'valid': + rps_matches = ledger.get_rps_match(db, id=bindings['rps_match_id']) + assert len(rps_matches) == 1 + rps_match = rps_matches[0] + log_message = f"RPS Resolved: {rps_match['tx0_address']} is playing {bindings['move']} on a {rps_match['possible_moves']}-moves game with {rps_match['tx1_address']} with a wager of {output(rps_match['wager'], 'XCP')} ({rps_match['id']}) [{rps_match['status']}]" + else: + log_message = f"RPS Resolved: {bindings['tx_hash']} [{bindings['status']}]" + logger.info(log_message) + + elif category == 'order_expirations': + logger.info(f"Expired order: {bindings['order_hash']}") + + elif category == 'order_match_expirations': + logger.info(f"Expired Order Match awaiting payment: {bindings['order_match_id']}") + + elif category == 'bet_expirations': + logger.info(f"Expired bet: {bindings['bet_hash']}") + + elif category == 'bet_match_expirations': + logger.info(f"Expired Bet Match: {bindings['bet_match_id']}") + + elif category == 'bet_match_resolutions': + # DUPE + cfd_type_id = util.BET_TYPE_ID['BullCFD'] + util.BET_TYPE_ID['BearCFD'] + equal_type_id = util.BET_TYPE_ID['Equal'] + util.BET_TYPE_ID['NotEqual'] + + if bindings['bet_match_type_id'] == cfd_type_id: + if bindings['settled']: + logger.info(f"Bet Match Settled: {output(bindings['bull_credit'], config.XCP)} credited to the bull, {output(bindings['bear_credit'], config.XCP)} credited to the bear, and {output(bindings['fee'], config.XCP)} credited to the feed address ({bindings['bet_match_id']})") + else: + logger.info(f"Bet Match Force‐Liquidated: {output(bindings['bull_credit'], config.XCP)} credited to the bull, {output(bindings['bear_credit'], config.XCP)} credited to the bear, and {output(bindings['fee'], config.XCP)} credited to the feed address ({bindings['bet_match_id']})") + + elif bindings['bet_match_type_id'] == equal_type_id: + logger.info(f"Bet Match Settled: {bindings['winner']} won the pot of {output(bindings['escrow_less_fee'], config.XCP)}; {output(bindings['fee'], config.XCP)} credited to the feed address ({bindings['bet_match_id']})") + + elif category == 'rps_expirations': + logger.info(f"Expired RPS: {bindings['rps_hash']}") + + elif category == 'rps_match_expirations': + logger.info(f"Expired RPS Match: {bindings['rps_match_id']}") + + elif category == 'destructions': + + try: + asset_info = ledger.get_asset_info(db, bindings['asset']) + quantity = bindings['quantity'] + if asset_info['divisible']: + quantity = f"{quantity/config.UNIT:.8f}" + except IndexError as e: + quantity = '?' + + logger.info(f"Destruction: {bindings['source']} destroyed {quantity} {bindings['asset']} with tag ‘{bindings['tag']}’({bindings['tx_hash']}) [{bindings['status']}]") + + elif category == 'dispensers': + each_price = bindings['satoshirate'] + currency = config.BTC + dispenser_label = 'dispenser' + escrow_quantity = bindings['escrow_quantity'] + give_quantity = bindings['give_quantity'] + + if (bindings['oracle_address'] != None) and ledger.enabled('oracle_dispensers'): + each_price = f"{each_price/100.0:.2f}" + oracle_last_price, oracle_fee, currency, oracle_last_updated = ledger.get_oracle_last_price(db, bindings['oracle_address'], bindings['block_index']) + dispenser_label = f"oracle dispenser using {bindings['oracle_address']}" + else: + each_price = f"{each_price/config.UNIT:.8f}" + + divisible = ledger.get_asset_info(db, bindings['asset'])['divisible'] + + if divisible: + escrow_quantity = f"{escrow_quantity/config.UNIT:.8f}" + give_quantity = f"{give_quantity/config.UNIT:.8f}" + + if bindings['status'] == 0: + logger.info(f"Dispenser: {bindings['source']} opened a {dispenser_label} for asset {bindings['asset']} with {escrow_quantity} balance, giving {give_quantity} {bindings['asset']} for each {each_price} {currency}") + elif bindings['status'] == 1: + logger.info(f"Dispenser: {bindings['source']} (empty address) opened a {dispenser_label} for asset {bindings['asset']} with {escrow_quantity} balance, giving {give_quantity} {bindings['asset']} for each {each_price} {currency}") + elif bindings['status'] == 10: + logger.info(f"Dispenser: {bindings['source']} closed a {dispenser_label} for asset {bindings['asset']}") + + elif category == 'dispenses': + dispensers = ledger.get_dispenser(db, tx_hash=bindings['dispenser_tx_hash']) + dispenser = dispensers[0] + + if (dispenser["oracle_address"] != None) and ledger.enabled('oracle_dispensers'): + tx_btc_amount = get_tx_info(db, bindings['tx_hash'])/config.UNIT + oracle_last_price, oracle_fee, oracle_fiat_label, oracle_last_price_updated = ledger.get_oracle_last_price(db, dispenser["oracle_address"], bindings['block_index']) + fiatpaid = round(tx_btc_amount*oracle_last_price,2) + + logger.info(f"Dispense: {output(bindings['dispense_quantity'], bindings['asset'])} from {bindings['source']} to {bindings['destination']} for {tx_btc_amount:.8f} {config.BTC} ({fiatpaid} {oracle_fiat_label}) ({bindings['tx_hash']})") + else: + logger.info(f"Dispense: {output(bindings['dispense_quantity'], bindings['asset'])} from {bindings['source']} to {bindings['destination']} ({bindings['tx_hash']})") + + cursor.close() + +def get_lock_issuance(db, asset): + issuances = ledger.get_issuances(db, status='valid', asset=asset, locked=True, first=True) + + if len(issuances) > 0: + return issuances[0] + + return None + + +def get_tx_info(db, tx_hash): + transactions = ledger.get_transactions(db, tx_hash=tx_hash) + transaction = transactions[0] + + return transaction["btc_amount"] diff --git a/counterpartylib/lib/message_type.py b/counterparty-lib/counterpartylib/lib/message_type.py similarity index 80% rename from counterpartylib/lib/message_type.py rename to counterparty-lib/counterpartylib/lib/message_type.py index e042b30c08..5debceb091 100644 --- a/counterpartylib/lib/message_type.py +++ b/counterparty-lib/counterpartylib/lib/message_type.py @@ -1,15 +1,16 @@ import logging -logger = logging.getLogger(__name__) import struct from counterpartylib.lib import config -from counterpartylib.lib import util +from counterpartylib.lib import ledger + +logger = logging.getLogger(config.LOGGER_NAME) def pack(message_type_id, block_index=None): # pack message ID into 1 byte if not zero - if util.enabled('short_tx_type_id', block_index) and message_type_id > 0 and message_type_id < 256: + if ledger.enabled('short_tx_type_id', block_index) and message_type_id > 0 and message_type_id < 256: return struct.pack(config.SHORT_TXTYPE_FORMAT, message_type_id) - + # pack into 4 bytes return struct.pack(config.TXTYPE_FORMAT, message_type_id) @@ -20,7 +21,7 @@ def unpack(packed_data, block_index=None): if len(packed_data) > 1: # try to read 1 byte first - if util.enabled('short_tx_type_id', block_index): + if ledger.enabled('short_tx_type_id', block_index): message_type_id = struct.unpack(config.SHORT_TXTYPE_FORMAT, packed_data[:1])[0] if message_type_id > 0: message_remainder = packed_data[1:] diff --git a/counterpartylib/lib/messages/__init__.py b/counterparty-lib/counterpartylib/lib/messages/__init__.py similarity index 100% rename from counterpartylib/lib/messages/__init__.py rename to counterparty-lib/counterpartylib/lib/messages/__init__.py diff --git a/counterpartylib/lib/messages/bet.py b/counterparty-lib/counterpartylib/lib/messages/bet.py similarity index 55% rename from counterpartylib/lib/messages/bet.py rename to counterparty-lib/counterpartylib/lib/messages/bet.py index acce03077c..7f9d633725 100644 --- a/counterpartylib/lib/messages/bet.py +++ b/counterparty-lib/counterpartylib/lib/messages/bet.py @@ -16,15 +16,17 @@ import decimal import json D = decimal.Decimal -import time import logging -logger = logging.getLogger(__name__) from counterpartylib.lib import config from counterpartylib.lib import exceptions from counterpartylib.lib import util from counterpartylib.lib import log from counterpartylib.lib import message_type +from counterpartylib.lib import ledger +from counterpartylib.lib import database + +logger = logging.getLogger(config.LOGGER_NAME) FORMAT = '>HIQQdII' LENGTH = 2 + 4 + 8 + 8 + 8 + 4 + 4 @@ -33,182 +35,185 @@ def initialise (db): cursor = db.cursor() + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'block_index_idx', + 'index_hash_idx', + 'expire_idx', + 'feed_valid_bettype_idx', + 'source_idx', + 'status_idx', + 'match_expire_idx', + 'valid_feed_idx', + 'tx0_address_idx', + 'tx1_address_idx', + ]) + # Bets. - cursor.execute('''CREATE TABLE IF NOT EXISTS bets( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - feed_address TEXT, - bet_type INTEGER, - deadline INTEGER, - wager_quantity INTEGER, - wager_remaining INTEGER, - counterwager_quantity INTEGER, - counterwager_remaining INTEGER, - target_value REAL, - leverage INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON bets (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - index_hash_idx ON bets (tx_index, tx_hash) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - expire_idx ON bets (status, expire_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - feed_valid_bettype_idx ON bets (feed_address, status, bet_type) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_idx ON bets (source) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - status_idx ON bets (status) - ''') + create_bets_query = '''CREATE TABLE IF NOT EXISTS bets( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + feed_address TEXT, + bet_type INTEGER, + deadline INTEGER, + wager_quantity INTEGER, + wager_remaining INTEGER, + counterwager_quantity INTEGER, + counterwager_remaining INTEGER, + target_value REAL, + leverage INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT) + ''' + # create table + cursor.execute(create_bets_query) + # migrate old table + if database.field_is_pk(cursor, 'bets', 'tx_index'): + database.copy_old_table(cursor, 'bets', create_bets_query) + # create indexes + database.create_indexes(cursor, 'bets', [ + ['block_index'], + ['tx_index', 'tx_hash'], + ['status'], + ['tx_hash'], + ['feed_address'], + ['expire_index'], + ['feed_address', 'bet_type'], + ]) # Bet Matches - cursor.execute('''CREATE TABLE IF NOT EXISTS bet_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_bet_type INTEGER, - tx1_bet_type INTEGER, - feed_address TEXT, - initial_value INTEGER, - deadline INTEGER, - target_value REAL, - leverage INTEGER, - forward_quantity INTEGER, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - match_expire_idx ON bet_matches (status, match_expire_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - valid_feed_idx ON bet_matches (feed_address, status) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - id_idx ON bet_matches (id) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - tx0_address_idx ON bet_matches (tx0_address) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - tx1_address_idx ON bet_matches (tx1_address) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - status_idx ON bet_matches (status) - ''') + create_bet_matches_query = '''CREATE TABLE IF NOT EXISTS bet_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_bet_type INTEGER, + tx1_bet_type INTEGER, + feed_address TEXT, + initial_value INTEGER, + deadline INTEGER, + target_value REAL, + leverage INTEGER, + forward_quantity INTEGER, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT) + ''' + # create table + cursor.execute(create_bet_matches_query) + # migrate old table + if database.field_is_pk(cursor, 'bet_matches', 'id'): + database.copy_old_table(cursor, 'bet_matches', create_bet_matches_query) + # create indexes + database.create_indexes(cursor, 'bet_matches', [ + ['block_index'], + ['id'], + ['status'], + ['deadline'], + ['tx0_address'], + ['tx1_address'], + ]) # Bet Expirations - cursor.execute('''CREATE TABLE IF NOT EXISTS bet_expirations( - bet_index INTEGER PRIMARY KEY, - bet_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (bet_index, bet_hash) REFERENCES bets(tx_index, tx_hash)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON bet_expirations (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_idx ON bet_expirations (source) - ''') + create_bet_expirations_query = '''CREATE TABLE IF NOT EXISTS bet_expirations( + bet_index INTEGER PRIMARY KEY, + bet_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)) + ''' + # create table + cursor.execute(create_bet_expirations_query) + # migrate old table + if database.has_fk_on(cursor, "bet_expirations", "bets.tx_index"): + database.copy_old_table(cursor, 'bet_expirations', create_bet_expirations_query) + # create indexes + database.create_indexes(cursor, 'bet_expirations', [ + ['block_index'], + ['source'], + ]) # Bet Match Expirations - cursor.execute('''CREATE TABLE IF NOT EXISTS bet_match_expirations( - bet_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON bet_match_expirations (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - tx0_address_idx ON bet_match_expirations (tx0_address) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - tx1_address_idx ON bet_match_expirations (tx1_address) - ''') + create_bet_match_expirations_query = '''CREATE TABLE IF NOT EXISTS bet_match_expirations( + bet_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)) + ''' + # create table + cursor.execute(create_bet_match_expirations_query) + # migrate old table + if database.has_fk_on(cursor, "bet_match_expirations", "bet_matches.id"): + database.copy_old_table(cursor, 'bet_match_expirations', create_bet_match_expirations_query) + # create indexes + database.create_indexes(cursor, 'bet_match_expirations', [ + ['block_index'], + ['tx0_address'], + ['tx1_address'], + ]) # Bet Match Resolutions - cursor.execute('''CREATE TABLE IF NOT EXISTS bet_match_resolutions( - bet_match_id TEXT PRIMARY KEY, - bet_match_type_id INTEGER, - block_index INTEGER, - winner TEXT, - settled BOOL, - bull_credit INTEGER, - bear_credit INTEGER, - escrow_less_fee INTEGER, - fee INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)) - ''') - -def cancel_bet (db, bet, status, block_index): + create_bet_match_resolutions_query = '''CREATE TABLE IF NOT EXISTS bet_match_resolutions( + bet_match_id TEXT PRIMARY KEY, + bet_match_type_id INTEGER, + block_index INTEGER, + winner TEXT, + settled BOOL, + bull_credit INTEGER, + bear_credit INTEGER, + escrow_less_fee INTEGER, + fee INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)) + ''' + # create table + cursor.execute(create_bet_match_resolutions_query) + # migrate old table + if database.has_fk_on(cursor, "bet_match_resolutions", "bet_matches.id"): + database.copy_old_table(cursor, 'bet_match_resolutions', create_bet_match_resolutions_query) + + +def cancel_bet (db, bet, status, block_index, tx_index): cursor = db.cursor() # Update status of bet. - bindings = { - 'status': status, - 'tx_hash': bet['tx_hash'] - } - sql='update bets set status = :status where tx_hash = :tx_hash' - cursor.execute(sql, bindings) - log.message(db, block_index, 'update', 'bets', bindings) + set_data = {'status': status} + ledger.update_bet(db, bet['tx_hash'], set_data) + log.message(db, block_index, 'update', 'bets', set_data | {'tx_hash': bet['tx_hash']}) - util.credit(db, bet['source'], config.XCP, bet['wager_remaining'], action='recredit wager remaining', event=bet['tx_hash']) + ledger.credit(db, bet['source'], config.XCP, bet['wager_remaining'], tx_index, action='recredit wager remaining', event=bet['tx_hash']) - cursor = db.cursor() -def cancel_bet_match (db, bet_match, status, block_index): +def cancel_bet_match (db, bet_match, status, block_index, tx_index): # Does not re‐open, re‐fill, etc. constituent bets. cursor = db.cursor() # Recredit tx0 address. - util.credit(db, bet_match['tx0_address'], config.XCP, - bet_match['forward_quantity'], action='recredit forward quantity', event=bet_match['id']) + ledger.credit(db, bet_match['tx0_address'], config.XCP, + bet_match['forward_quantity'], tx_index, action='recredit forward quantity', event=bet_match['id']) # Recredit tx1 address. - util.credit(db, bet_match['tx1_address'], config.XCP, - bet_match['backward_quantity'], action='recredit backward quantity', event=bet_match['id']) + ledger.credit(db, bet_match['tx1_address'], config.XCP, + bet_match['backward_quantity'], tx_index, action='recredit backward quantity', event=bet_match['id']) # Update status of bet match. - bindings = { - 'status': status, - 'bet_match_id': bet_match['id'] - } - sql='update bet_matches set status = :status where id = :bet_match_id' - cursor.execute(sql, bindings) - log.message(db, block_index, 'update', 'bet_matches', bindings) + ledger.update_bet_match_status(db, bet_match['id'], status) + + log.message(db, block_index, 'update', 'bet_matches', {'status': status, 'bet_match_id': bet_match['id']}) cursor.close() @@ -216,9 +221,8 @@ def cancel_bet_match (db, bet_match, status, block_index): def get_fee_fraction (db, feed_address): '''Get fee fraction from last broadcast from the feed_address address. ''' - cursor = db.cursor() - broadcasts = list(cursor.execute('''SELECT * FROM broadcasts WHERE (status = ? AND source = ?) ORDER BY tx_index ASC''', ('valid', feed_address))) - cursor.close() + broadcasts = ledger.get_broadcasts_by_source(db, feed_address, 'valid') + if broadcasts: last_broadcast = broadcasts[-1] fee_fraction_int = last_broadcast['fee_fraction_int'] @@ -227,6 +231,7 @@ def get_fee_fraction (db, feed_address): else: return 0 + def validate (db, source, feed_address, bet_type, deadline, wager_quantity, counterwager_quantity, target_value, leverage, expiration, block_index): problems = [] @@ -239,9 +244,7 @@ def validate (db, source, feed_address, bet_type, deadline, wager_quantity, problems.append('integer overflow') # Look at feed to be bet on. - cursor = db.cursor() - broadcasts = list(cursor.execute('''SELECT * FROM broadcasts WHERE (status = ? AND source = ?) ORDER BY tx_index ASC''', ('valid', feed_address))) - cursor.close() + broadcasts = ledger.get_broadcasts_by_source(db, feed_address, 'valid') if not broadcasts: problems.append('feed doesn’t exist') elif not broadcasts[-1]['text']: @@ -290,14 +293,15 @@ def validate (db, source, feed_address, bet_type, deadline, wager_quantity, return problems, leverage + def compose (db, source, feed_address, bet_type, deadline, wager_quantity, counterwager_quantity, target_value, leverage, expiration): - if util.get_balance(db, source, config.XCP) < wager_quantity: + if ledger.get_balance(db, source, config.XCP) < wager_quantity: raise exceptions.ComposeError('insufficient funds') problems, leverage = validate(db, source, feed_address, bet_type, deadline, wager_quantity, - counterwager_quantity, target_value, leverage, expiration, util.CURRENT_BLOCK_INDEX) + counterwager_quantity, target_value, leverage, expiration, ledger.CURRENT_BLOCK_INDEX) if util.date_passed(deadline): problems.append('deadline passed') if problems: raise exceptions.ComposeError(problems) @@ -308,6 +312,7 @@ def compose (db, source, feed_address, bet_type, deadline, wager_quantity, leverage, expiration) return (source, [(feed_address, None)], data) + def parse (db, tx, message): bet_parse_cursor = db.cursor() @@ -329,23 +334,20 @@ def parse (db, tx, message): feed_address = tx['destination'] if status == 'open': try: - odds = util.price(wager_quantity, counterwager_quantity) + odds = ledger.price(wager_quantity, counterwager_quantity) except ZeroDivisionError: odds = 0 fee_fraction = get_fee_fraction(db, feed_address) # Overbet - bet_parse_cursor.execute('''SELECT * FROM balances \ - WHERE (address = ? AND asset = ?)''', (tx['source'], config.XCP)) - balances = list(bet_parse_cursor) - if not balances: + balance = ledger.get_balance(db, tx['source'], config.XCP) + if balance == 0: wager_quantity = 0 else: - balance = balances[0]['quantity'] if balance < wager_quantity: wager_quantity = balance - counterwager_quantity = int(util.price(wager_quantity, odds)) + counterwager_quantity = int(ledger.price(wager_quantity, odds)) problems, leverage = validate(db, tx['source'], feed_address, bet_type, deadline, wager_quantity, counterwager_quantity, target_value, leverage, expiration, tx['block_index']) @@ -353,7 +355,7 @@ def parse (db, tx, message): # Debit quantity wagered. (Escrow.) if status == 'open': - util.debit(db, tx['source'], config.XCP, wager_quantity, action='bet', event=tx['tx_hash']) + ledger.debit(db, tx['source'], config.XCP, wager_quantity, tx['tx_index'], action='bet', event=tx['tx_hash']) # Add parsed transaction to message-type–specific table. bindings = { @@ -379,8 +381,8 @@ def parse (db, tx, message): sql = 'insert into bets values(:tx_index, :tx_hash, :block_index, :source, :feed_address, :bet_type, :deadline, :wager_quantity, :wager_remaining, :counterwager_quantity, :counterwager_remaining, :target_value, :leverage, :expiration, :expire_index, :fee_fraction_int, :status)' bet_parse_cursor.execute(sql, bindings) else: - logger.warn("Not storing [bet] tx [%s]: %s" % (tx['tx_hash'], status)) - logger.debug("Bindings: %s" % (json.dumps(bindings), )) + logger.warning(f"Not storing [bet] tx [{tx['tx_hash']}]: {status}") + logger.debug(f"Bindings: {json.dumps(bindings)}") # Match. if status == 'open' and tx['block_index'] != config.MEMPOOL_BLOCK_INDEX: @@ -388,18 +390,17 @@ def parse (db, tx, message): bet_parse_cursor.close() -def match (db, tx): - cursor = db.cursor() +def match (db, tx): # Get bet in question. - bets = list(cursor.execute('''SELECT * FROM bets\ - WHERE (tx_index = ? AND status = ?)''', (tx['tx_index'], 'open'))) + bets = ledger.get_bet(db, tx_hash=tx['tx_hash']) if not bets: - cursor.close() return else: assert len(bets) == 1 + if bets[0]['status'] != 'open': + return tx1 = bets[0] # Get counterbet_type. @@ -408,15 +409,14 @@ def match (db, tx): feed_address = tx1['feed_address'] - cursor.execute('''SELECT * FROM bets\ - WHERE (feed_address=? AND status=? AND bet_type=?)''', - (tx1['feed_address'], 'open', counterbet_type)) + cursor = db.cursor() tx1_wager_remaining = tx1['wager_remaining'] tx1_counterwager_remaining = tx1['counterwager_remaining'] - bet_matches = cursor.fetchall() + + bet_matches = ledger.get_matching_bets(db, tx1['feed_address'], counterbet_type) if tx['block_index'] > 284500 or config.TESTNET or config.REGTEST: # Protocol change. sorted(bet_matches, key=lambda x: x['tx_index']) # Sort by tx index second. - sorted(bet_matches, key=lambda x: util.price(x['wager_quantity'], x['counterwager_quantity'])) # Sort by price first. + sorted(bet_matches, key=lambda x: ledger.price(x['wager_quantity'], x['counterwager_quantity'])) # Sort by price first. tx1_status = tx1['status'] for tx0 in bet_matches: @@ -453,21 +453,21 @@ def match (db, tx): # If the odds agree, make the trade. The found order sets the odds, # and they trade as much as they can. - tx0_odds = util.price(tx0['wager_quantity'], tx0['counterwager_quantity']) - tx0_inverse_odds = util.price(tx0['counterwager_quantity'], tx0['wager_quantity']) - tx1_odds = util.price(tx1['wager_quantity'], tx1['counterwager_quantity']) + tx0_odds = ledger.price(tx0['wager_quantity'], tx0['counterwager_quantity']) + tx0_inverse_odds = ledger.price(tx0['counterwager_quantity'], tx0['wager_quantity']) + tx1_odds = ledger.price(tx1['wager_quantity'], tx1['counterwager_quantity']) - if tx['block_index'] < 286000: tx0_inverse_odds = util.price(1, tx0_odds) # Protocol change. + if tx['block_index'] < 286000: tx0_inverse_odds = ledger.price(1, tx0_odds) # Protocol change. - logger.debug('Tx0 Inverse Odds: {}; Tx1 Odds: {}'.format(float(tx0_inverse_odds), float(tx1_odds))) + logger.debug(f'Tx0 Inverse Odds: {float(tx0_inverse_odds)}; Tx1 Odds: {float(tx1_odds)}') if tx0_inverse_odds > tx1_odds: logger.debug('Skipping: price mismatch.') else: - logger.debug('Potential forward quantities: {}, {}'.format(tx0_wager_remaining, int(util.price(tx1_wager_remaining, tx1_odds)))) - forward_quantity = int(min(tx0_wager_remaining, int(util.price(tx1_wager_remaining, tx1_odds)))) - logger.debug('Forward Quantity: {}'.format(forward_quantity)) + logger.debug(f'Potential forward quantities: {tx0_wager_remaining}, {int(ledger.price(tx1_wager_remaining, tx1_odds))}') + forward_quantity = int(min(tx0_wager_remaining, int(ledger.price(tx1_wager_remaining, tx1_odds)))) + logger.debug(f'Forward Quantity: {forward_quantity}') backward_quantity = round(forward_quantity / tx0_odds) - logger.debug('Backward Quantity: {}'.format(backward_quantity)) + logger.debug(f'Backward Quantity: {backward_quantity}') if not forward_quantity: logger.debug('Skipping: zero forward quantity.') @@ -491,35 +491,34 @@ def match (db, tx): if tx0_wager_remaining <= 0 or tx0_counterwager_remaining <= 0: # Fill order, and recredit give_remaining. tx0_status = 'filled' - util.credit(db, tx0['source'], config.XCP, tx0_wager_remaining, event=tx1['tx_hash'], action='filled') - bindings = { + ledger.credit(db, tx0['source'], config.XCP, tx0_wager_remaining, tx['tx_index'], event=tx1['tx_hash'], action='filled') + + set_data = { 'wager_remaining': tx0_wager_remaining, 'counterwager_remaining': tx0_counterwager_remaining, - 'status': tx0_status, - 'tx_hash': tx0['tx_hash'] + 'status': tx0_status } - sql='update bets set wager_remaining = :wager_remaining, counterwager_remaining = :counterwager_remaining, status = :status where tx_hash = :tx_hash' - cursor.execute(sql, bindings) - log.message(db, tx['block_index'], 'update', 'bets', bindings) + ledger.update_bet(db, tx0['tx_hash'], set_data) + + log.message(db, tx['block_index'], 'update', 'bets', set_data | {'tx_hash': tx0['tx_hash']}) if tx1['block_index'] >= 292000 or config.TESTNET or config.REGTEST: # Protocol change if tx1_wager_remaining <= 0 or tx1_counterwager_remaining <= 0: # Fill order, and recredit give_remaining. tx1_status = 'filled' - util.credit(db, tx1['source'], config.XCP, tx1_wager_remaining, event=tx1['tx_hash'], action='filled') + ledger.credit(db, tx1['source'], config.XCP, tx1_wager_remaining, tx['tx_index'], event=tx1['tx_hash'], action='filled') # tx1 - bindings = { + set_data = { 'wager_remaining': tx1_wager_remaining, 'counterwager_remaining': tx1_counterwager_remaining, - 'status': tx1_status, - 'tx_hash': tx1['tx_hash'] + 'status': tx1_status } - sql='update bets set wager_remaining = :wager_remaining, counterwager_remaining = :counterwager_remaining, status = :status where tx_hash = :tx_hash' - cursor.execute(sql, bindings) - log.message(db, tx['block_index'], 'update', 'bets', bindings) + ledger.update_bet(db,tx1['tx_hash'], set_data) + + log.message(db, tx['block_index'], 'update', 'bets', set_data | {'tx_hash': tx1['tx_hash']}) # Get last value of feed. - broadcasts = list(cursor.execute('''SELECT * FROM broadcasts WHERE (status = ? AND source = ?) ORDER BY tx_index ASC''', ('valid', feed_address))) + broadcasts = ledger.get_broadcasts_by_source(db, feed_address, 'valid') initial_value = broadcasts[-1]['value'] # Record bet fulfillment. @@ -542,7 +541,7 @@ def match (db, tx): 'backward_quantity': backward_quantity, 'tx0_block_index': tx0['block_index'], 'tx1_block_index': tx1['block_index'], - 'block_index': max(tx0['block_index'], tx1['block_index']), + 'block_index': min(tx0['block_index'], tx1['block_index']), 'tx0_expiration': tx0['expiration'], 'tx1_expiration': tx1['expiration'], 'match_expire_index': min(tx0['expire_index'], tx1['expire_index']), @@ -553,16 +552,15 @@ def match (db, tx): cursor.execute(sql, bindings) cursor.close() - return + def expire (db, block_index, block_time): cursor = db.cursor() # Expire bets and give refunds for the quantity wager_remaining. - cursor.execute('''SELECT * FROM bets \ - WHERE (status = ? AND expire_index < ?)''', ('open', block_index)) - for bet in cursor.fetchall(): - cancel_bet(db, bet, 'expired', block_index) + for bet in ledger.get_bets_to_expire(db, block_index): + # use tx_index=0 for block actions + cancel_bet(db, bet, 'expired', block_index, 0) # Record bet expiration. bindings = { @@ -575,10 +573,9 @@ def expire (db, block_index, block_time): cursor.execute(sql, bindings) # Expire bet matches whose deadline is more than two weeks before the current block time. - cursor.execute('''SELECT * FROM bet_matches \ - WHERE (status = ? AND deadline < ?)''', ('pending', block_time - config.TWO_WEEKS)) - for bet_match in cursor.fetchall(): - cancel_bet_match(db, bet_match, 'expired', block_index) + for bet_match in ledger.get_bet_matches_to_expire(db, block_time): + # use tx_index=0 for block actions + cancel_bet_match(db, bet_match, 'expired', block_index, 0) # Record bet match expiration. bindings = { @@ -591,5 +588,3 @@ def expire (db, block_index, block_time): cursor.execute(sql, bindings) cursor.close() - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/messages/broadcast.py b/counterparty-lib/counterpartylib/lib/messages/broadcast.py similarity index 77% rename from counterpartylib/lib/messages/broadcast.py rename to counterparty-lib/counterpartylib/lib/messages/broadcast.py index 66749331de..0d9197cf39 100644 --- a/counterpartylib/lib/messages/broadcast.py +++ b/counterparty-lib/counterpartylib/lib/messages/broadcast.py @@ -27,7 +27,6 @@ from fractions import Fraction import json import logging -logger = logging.getLogger(__name__) from bitcoin.core import VarIntSerializer @@ -36,8 +35,13 @@ from counterpartylib.lib import util from counterpartylib.lib import log from counterpartylib.lib import message_type +from counterpartylib.lib import ledger +from counterpartylib.lib import database + from . import (bet) +logger = logging.getLogger(config.LOGGER_NAME) + FORMAT = '>IdI' LENGTH = 4 + 8 + 4 ID = 30 @@ -45,6 +49,15 @@ def initialise(db): cursor = db.cursor() + + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'block_index_idx', + 'status_source_idx', + 'status_source_index_idx', + 'timestamp_idx', + ]) + cursor.execute('''CREATE TABLE IF NOT EXISTS broadcasts( tx_index INTEGER PRIMARY KEY, tx_hash TEXT UNIQUE, @@ -58,18 +71,13 @@ def initialise(db): status TEXT, FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON broadcasts (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - status_source_idx ON broadcasts (status, source) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - status_source_index_idx ON broadcasts (status, source, tx_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - timestamp_idx ON broadcasts (timestamp) - ''') + + database.create_indexes(cursor, 'broadcasts', [ + ['block_index'], + ['status', 'source'], + ['status', 'source', 'tx_index'], + ['timestamp'], + ]) def validate (db, source, timestamp, value, fee_fraction_int, text, block_index): problems = [] @@ -78,7 +86,7 @@ def validate (db, source, timestamp, value, fee_fraction_int, text, block_index) if timestamp > config.MAX_INT or value > config.MAX_INT or fee_fraction_int > config.MAX_INT: problems.append('integer overflow') - if util.enabled('max_fee_fraction'): + if ledger.enabled('max_fee_fraction'): if fee_fraction_int >= config.UNIT: problems.append('fee fraction greater than or equal to 1') else: @@ -90,9 +98,7 @@ def validate (db, source, timestamp, value, fee_fraction_int, text, block_index) if not source: problems.append('null source address') # Check previous broadcast in this feed. - cursor = db.cursor() - broadcasts = list(cursor.execute('''SELECT * FROM broadcasts WHERE (status = ? AND source = ?) ORDER BY tx_index ASC''', ('valid', source))) - cursor.close() + broadcasts = ledger.get_broadcasts_by_source(db, source, 'valid') if broadcasts: last_broadcast = broadcasts[-1] if last_broadcast['locked']: @@ -104,7 +110,7 @@ def validate (db, source, timestamp, value, fee_fraction_int, text, block_index) if len(text) > 52: problems.append('text too long') - if util.enabled('options_require_memo') and text and text.lower().startswith('options'): + if ledger.enabled('options_require_memo') and text and text.lower().startswith('options'): try: # Check for options and if they are valid. options = util.parse_options_from_string(text) @@ -120,21 +126,21 @@ def compose (db, source, timestamp, value, fee_fraction, text): # Store the fee fraction as an integer. fee_fraction_int = int(fee_fraction * 1e8) - problems = validate(db, source, timestamp, value, fee_fraction_int, text, util.CURRENT_BLOCK_INDEX) + problems = validate(db, source, timestamp, value, fee_fraction_int, text, ledger.CURRENT_BLOCK_INDEX) if problems: raise exceptions.ComposeError(problems) data = message_type.pack(ID) # always use custom length byte instead of problematic usage of 52p format and make sure to encode('utf-8') for length - if util.enabled('broadcast_pack_text'): + if ledger.enabled('broadcast_pack_text'): data += struct.pack(FORMAT, timestamp, value, fee_fraction_int) data += VarIntSerializer.serialize(len(text.encode('utf-8'))) data += text.encode('utf-8') else: if len(text) <= 52: - curr_format = FORMAT + '{}p'.format(len(text) + 1) + curr_format = FORMAT + f'{len(text) + 1}p' else: - curr_format = FORMAT + '{}s'.format(len(text)) + curr_format = FORMAT + f'{len(text)}s' data += struct.pack(curr_format, timestamp, value, fee_fraction_int, text.encode('utf-8')) return (source, [], data) @@ -144,8 +150,8 @@ def parse (db, tx, message): # Unpack message. try: - if util.enabled('broadcast_pack_text', tx['block_index']): - timestamp, value, fee_fraction_int, rawtext = struct.unpack(FORMAT + '{}s'.format(len(message) - LENGTH), message) + if ledger.enabled('broadcast_pack_text', tx['block_index']): + timestamp, value, fee_fraction_int, rawtext = struct.unpack(FORMAT + f'{len(message) - LENGTH}s', message) textlen = VarIntSerializer.deserialize(rawtext) if textlen == 0: text = b'' @@ -155,9 +161,9 @@ def parse (db, tx, message): assert len(text) == textlen else: if len(message) - LENGTH <= 52: - curr_format = FORMAT + '{}p'.format(len(message) - LENGTH) + curr_format = FORMAT + f'{len(message) - LENGTH}p' else: - curr_format = FORMAT + '{}s'.format(len(message) - LENGTH) + curr_format = FORMAT + f'{len(message) - LENGTH}s' timestamp, value, fee_fraction_int, text = struct.unpack(curr_format, message) @@ -172,7 +178,6 @@ def parse (db, tx, message): except AssertionError: timestamp, value, fee_fraction_int, text = 0, None, 0, None status = "invalid: could not unpack text" - if status == 'valid': # For SQLite3 timestamp = min(timestamp, config.MAX_INT) @@ -206,15 +211,15 @@ def parse (db, tx, message): sql = 'insert into broadcasts values(:tx_index, :tx_hash, :block_index, :source, :timestamp, :value, :fee_fraction_int, :text, :locked, :status)' cursor.execute(sql, bindings) else: - logger.warn("Not storing [broadcast] tx [%s]: %s" % (tx['tx_hash'], status)) - logger.debug("Bindings: %s" % (json.dumps(bindings), )) + logger.debug(f"Not storing [broadcast] tx [{tx['tx_hash']}]: {status}") + logger.debug(f"Bindings: {json.dumps(bindings)}") # stop processing if broadcast is invalid for any reason - if util.enabled('broadcast_invalid_check') and status != 'valid': + if ledger.enabled('broadcast_invalid_check') and status != 'valid': return # Options? Should not fail to parse due to above checks. - if util.enabled('options_require_memo') and text and text.lower().startswith('options'): + if ledger.enabled('options_require_memo') and text and text.lower().startswith('options'): options = util.parse_options_from_string(text) if options is not False: op_bindings = { @@ -230,32 +235,25 @@ def parse (db, tx, message): if value is None or value < 0: # Cancel Open Bets? if value == -2: - cursor.execute('''SELECT * FROM bets \ - WHERE (status = ? AND feed_address = ?)''', - ('open', tx['source'])) - for i in list(cursor): - bet.cancel_bet(db, i, 'dropped', tx['block_index']) + for i in ledger.get_open_bet_by_feed(db, tx['source']): + bet.cancel_bet(db, i, 'dropped', tx['block_index'], tx['tx_index']) # Cancel Pending Bet Matches? if value == -3: - cursor.execute('''SELECT * FROM bet_matches \ - WHERE (status = ? AND feed_address = ?)''', - ('pending', tx['source'])) - for bet_match in list(cursor): - bet.cancel_bet_match(db, bet_match, 'dropped', tx['block_index']) + for bet_match in ledger.get_pending_bet_matches(db, tx['source']): + bet.cancel_bet_match(db, bet_match, 'dropped', tx['block_index'], tx['tx_index']) cursor.close() return # stop processing if broadcast is invalid for any reason # @TODO: remove this check once broadcast_invalid_check has been activated - if util.enabled('max_fee_fraction') and status != 'valid': + if ledger.enabled('max_fee_fraction') and status != 'valid': return # Handle bet matches that use this feed. - cursor.execute('''SELECT * FROM bet_matches \ - WHERE (status=? AND feed_address=?) - ORDER BY tx1_index ASC, tx0_index ASC''', - ('pending', tx['source'])) - for bet_match in cursor.fetchall(): + bet_matches = ledger.get_pending_bet_matches(db, + tx['source'], + order_by='tx1_index ASC, tx0_index ASC') + for bet_match in bet_matches: broadcast_bet_match_cursor = db.cursor() bet_match_id = util.make_id(bet_match['tx0_hash'], bet_match['tx1_hash']) bet_match_status = None @@ -265,7 +263,7 @@ def parse (db, tx, message): # to betters. total_escrow = bet_match['forward_quantity'] + bet_match['backward_quantity'] - if util.enabled('inmutable_fee_fraction'): + if ledger.enabled('inmutable_fee_fraction'): fee_fraction = bet_match['fee_fraction_int'] / config.UNIT else: fee_fraction = fee_fraction_int / config.UNIT @@ -309,15 +307,15 @@ def parse (db, tx, message): bull_credit = escrow_less_fee bear_credit = 0 bet_match_status = 'settled: liquidated for bull' - util.credit(db, bull_address, config.XCP, bull_credit, action='bet {}'.format(bet_match_status), event=tx['tx_hash']) + ledger.credit(db, bull_address, config.XCP, bull_credit, tx['tx_index'], action=f'bet {bet_match_status}', event=tx['tx_hash']) elif bull_credit <= 0: bull_credit = 0 bear_credit = escrow_less_fee bet_match_status = 'settled: liquidated for bear' - util.credit(db, bear_address, config.XCP, bear_credit, action='bet {}'.format(bet_match_status), event=tx['tx_hash']) + ledger.credit(db, bear_address, config.XCP, bear_credit, tx['tx_index'], action=f'bet {bet_match_status}', event=tx['tx_hash']) # Pay fee to feed. - util.credit(db, bet_match['feed_address'], config.XCP, fee, action='feed fee', event=tx['tx_hash']) + ledger.credit(db, bet_match['feed_address'], config.XCP, fee, tx['tx_index'], action='feed fee', event=tx['tx_hash']) # For logging purposes. bindings = { @@ -338,11 +336,11 @@ def parse (db, tx, message): elif timestamp >= bet_match['deadline']: bet_match_status = 'settled' - util.credit(db, bull_address, config.XCP, bull_credit, action='bet {}'.format(bet_match_status), event=tx['tx_hash']) - util.credit(db, bear_address, config.XCP, bear_credit, action='bet {}'.format(bet_match_status), event=tx['tx_hash']) + ledger.credit(db, bull_address, config.XCP, bull_credit, tx['tx_index'], action=f'bet {bet_match_status}', event=tx['tx_hash']) + ledger.credit(db, bear_address, config.XCP, bear_credit, tx['tx_index'], action=f'bet {bet_match_status}', event=tx['tx_hash']) # Pay fee to feed. - util.credit(db, bet_match['feed_address'], config.XCP, fee, action='feed fee', event=tx['tx_hash']) + ledger.credit(db, bet_match['feed_address'], config.XCP, fee, tx['tx_index'], action='feed fee', event=tx['tx_hash']) # For logging purposes. bindings = { @@ -374,14 +372,14 @@ def parse (db, tx, message): if value == bet_match['target_value']: winner = 'Equal' bet_match_status = 'settled: for equal' - util.credit(db, equal_address, config.XCP, escrow_less_fee, action='bet {}'.format(bet_match_status), event=tx['tx_hash']) + ledger.credit(db, equal_address, config.XCP, escrow_less_fee, tx['tx_index'], action=f'bet {bet_match_status}', event=tx['tx_hash']) else: winner = 'NotEqual' bet_match_status = 'settled: for notequal' - util.credit(db, notequal_address, config.XCP, escrow_less_fee, action='bet {}'.format(bet_match_status), event=tx['tx_hash']) + ledger.credit(db, notequal_address, config.XCP, escrow_less_fee, tx['tx_index'], action=f'bet {bet_match_status}', event=tx['tx_hash']) # Pay fee to feed. - util.credit(db, bet_match['feed_address'], config.XCP, fee, action='feed fee', event=tx['tx_hash']) + ledger.credit(db, bet_match['feed_address'], config.XCP, fee, tx['tx_index'], action='feed fee', event=tx['tx_hash']) # For logging purposes. bindings = { @@ -400,16 +398,14 @@ def parse (db, tx, message): # Update the bet match’s status. if bet_match_status: - bindings = { + bet_match_id = util.make_id(bet_match['tx0_hash'], bet_match['tx1_hash']) + ledger.update_bet_match_status(db, bet_match_id, bet_match_status) + + log.message(db, tx['block_index'], 'update', 'bet_matches', { 'status': bet_match_status, - 'bet_match_id': util.make_id(bet_match['tx0_hash'], bet_match['tx1_hash']) - } - sql='update bet_matches set status = :status where id = :bet_match_id' - cursor.execute(sql, bindings) - log.message(db, tx['block_index'], 'update', 'bet_matches', bindings) + 'bet_match_id': bet_match_id + }) broadcast_bet_match_cursor.close() cursor.close() - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/messages/btcpay.py b/counterparty-lib/counterpartylib/lib/messages/btcpay.py similarity index 65% rename from counterpartylib/lib/messages/btcpay.py rename to counterparty-lib/counterpartylib/lib/messages/btcpay.py index bd4abba56f..e0c36503cf 100644 --- a/counterpartylib/lib/messages/btcpay.py +++ b/counterparty-lib/counterpartylib/lib/messages/btcpay.py @@ -5,13 +5,16 @@ import pprint import struct import logging -logger = logging.getLogger(__name__) from counterpartylib.lib import config from counterpartylib.lib import exceptions from counterpartylib.lib import util from counterpartylib.lib import log from counterpartylib.lib import message_type +from counterpartylib.lib import ledger +from counterpartylib.lib import database + +logger = logging.getLogger(config.LOGGER_NAME) FORMAT = '>32s32s' LENGTH = 32 + 32 @@ -19,6 +22,14 @@ def initialise(db): cursor = db.cursor() + + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'block_index_idx', + 'source_idx', + 'destination_idx', + ]) + cursor.execute('''CREATE TABLE IF NOT EXISTS btcpays( tx_index INTEGER PRIMARY KEY, tx_hash TEXT UNIQUE, @@ -30,27 +41,20 @@ def initialise(db): status TEXT, FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) ''') - # Disallows invalids: FOREIGN KEY (order_match_id) REFERENCES order_matches(id)) - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON btcpays (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_idx ON btcpays (source) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - destination_idx ON btcpays (destination) - ''') + + database.create_indexes(cursor, 'btcpays', [ + ['block_index'], + ['source'], + ['destination'], + ]) + + def validate (db, source, order_match_id, block_index): problems = [] order_match = None - - cursor = db.cursor() - cursor.execute('''SELECT * FROM order_matches \ - WHERE id = ?''', (order_match_id,)) - order_matches = cursor.fetchall() - cursor.close() + order_matches = ledger.get_order_match(db, id=order_match_id) if len(order_matches) == 0: - problems.append('no such order match %s' % order_match_id) + problems.append(f'no such order match {order_match_id}') return None, None, None, None, order_match, problems elif len(order_matches) > 1: assert False @@ -87,24 +91,26 @@ def validate (db, source, order_match_id, block_index): return destination, btc_quantity, escrowed_asset, escrowed_quantity, order_match, problems + def compose (db, source, order_match_id): tx0_hash, tx1_hash = util.parse_id(order_match_id) - destination, btc_quantity, escrowed_asset, escrowed_quantity, order_match, problems = validate(db, source, order_match_id, util.CURRENT_BLOCK_INDEX) + destination, btc_quantity, escrowed_asset, escrowed_quantity, order_match, problems = validate(db, source, order_match_id, ledger.CURRENT_BLOCK_INDEX) if problems: raise exceptions.ComposeError(problems) # Warn if down to the wire. - time_left = order_match['match_expire_index'] - util.CURRENT_BLOCK_INDEX + time_left = order_match['match_expire_index'] - ledger.CURRENT_BLOCK_INDEX if time_left < 4: - logger.warning('Only {} blocks until that order match expires. The payment might not make into the blockchain in time.'.format(time_left)) + logger.warning(f'Only {time_left} blocks until that order match expires. The payment might not make into the blockchain in time.') if 10 - time_left < 4: - logger.warning('Order match has only {} confirmation(s).'.format(10 - time_left)) + logger.warning(f'Order match has only {10 - time_left} confirmation(s).') tx0_hash_bytes, tx1_hash_bytes = binascii.unhexlify(bytes(tx0_hash, 'utf-8')), binascii.unhexlify(bytes(tx1_hash, 'utf-8')) data = message_type.pack(ID) data += struct.pack(FORMAT, tx0_hash_bytes, tx1_hash_bytes) return (source, [(destination, btc_quantity)], data) + def parse (db, tx, message): cursor = db.cursor() @@ -131,47 +137,26 @@ def parse (db, tx, message): if tx['btc_amount'] >= btc_quantity: # Credit source address for the currency that he bought with the bitcoins. - util.credit(db, tx['source'], escrowed_asset, escrowed_quantity, action='btcpay', event=tx['tx_hash']) + ledger.credit(db, tx['source'], escrowed_asset, escrowed_quantity, tx['tx_index'], action='btcpay', event=tx['tx_hash']) status = 'valid' # Update order match. - bindings = { + ledger.update_order_match_status(db, order_match_id, 'completed') + + log.message(db, tx['block_index'], 'update', 'order_matches', { 'status': 'completed', 'order_match_id': order_match_id - } - sql='update order_matches set status = :status where id = :order_match_id' - cursor.execute(sql, bindings) - log.message(db, tx['block_index'], 'update', 'order_matches', bindings) + }) # Update give and get order status as filled if order_match is completed - if util.enabled('btc_order_filled'): - bindings = { - 'status': 'pending', - 'tx0_hash': tx0_hash, - 'tx1_hash': tx1_hash - } - sql='select * from order_matches where status = :status and ((tx0_hash in (:tx0_hash, :tx1_hash)) or ((tx1_hash in (:tx0_hash, :tx1_hash))))' - cursor.execute(sql, bindings) - order_matches = cursor.fetchall() + if ledger.enabled('btc_order_filled'): + order_matches = ledger.get_pending_order_matches(db, tx0_hash, tx1_hash) if len(order_matches) == 0: # mark both btc get and give orders as filled when order_match is completed and give or get remaining = 0 - bindings = { - 'status': 'filled', - 'tx0_hash': tx0_hash, - 'tx1_hash': tx1_hash - } - sql='update orders set status = :status where ((tx_hash in (:tx0_hash, :tx1_hash)) and ((give_remaining = 0) or (get_remaining = 0)))' - cursor.execute(sql, bindings) + ledger.mark_order_as_filled(db, tx0_hash, tx1_hash) else: # always mark btc get order as filled when order_match is completed and give or get remaining = 0 - bindings = { - 'status': 'filled', - 'source': tx['destination'], - 'tx0_hash': tx0_hash, - 'tx1_hash': tx1_hash - } - sql='update orders set status = :status where ((tx_hash in (:tx0_hash, :tx1_hash)) and ((give_remaining = 0) or (get_remaining = 0)) and (source = :source))' - cursor.execute(sql, bindings) + ledger.mark_order_as_filled(db, tx0_hash, tx1_hash, source=tx['destination']) # Add parsed transaction to message-type–specific table. bindings = { @@ -188,10 +173,7 @@ def parse (db, tx, message): sql = 'insert into btcpays values(:tx_index, :tx_hash, :block_index, :source, :destination, :btc_amount, :order_match_id, :status)' cursor.execute(sql, bindings) else: - logger.warn("Not storing [btcpay] tx [%s]: %s" % (tx['tx_hash'], status)) - logger.debug("Bindings: %s" % (json.dumps(bindings), )) - + logger.debug(f"Not storing [btcpay] tx [{tx['tx_hash']}]: {status}") + logger.debug(f"Bindings: {json.dumps(bindings)}") cursor.close() - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/messages/burn.py b/counterparty-lib/counterpartylib/lib/messages/burn.py similarity index 73% rename from counterpartylib/lib/messages/burn.py rename to counterparty-lib/counterpartylib/lib/messages/burn.py index ac74f317ab..3df863b74f 100644 --- a/counterpartylib/lib/messages/burn.py +++ b/counterparty-lib/counterpartylib/lib/messages/burn.py @@ -3,19 +3,27 @@ import struct import decimal import logging -logger = logging.getLogger(__name__) D = decimal.Decimal from fractions import Fraction -from counterpartylib.lib import (config, exceptions, util) +from counterpartylib.lib import (config, exceptions, database, ledger) -"""Burn {} to earn {} during a special period of time.""".format(config.BTC, config.XCP) +logger = logging.getLogger(config.LOGGER_NAME) + +f"""Burn {config.BTC} to earn {config.XCP} during a special period of time.""" ID = 60 def initialise (db): cursor = db.cursor() + + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'status_idx', + 'address_idx', + ]) + cursor.execute('''CREATE TABLE IF NOT EXISTS burns( tx_index INTEGER PRIMARY KEY, tx_hash TEXT UNIQUE, @@ -26,12 +34,12 @@ def initialise (db): status TEXT, FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - status_idx ON burns (status) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - address_idx ON burns (source) - ''') + + database.create_indexes(cursor, 'burns', [ + ['status'], + ['source'], + ]) + def validate (db, source, destination, quantity, block_index, overburn=False): problems = [] @@ -57,20 +65,20 @@ def validate (db, source, destination, quantity, block_index, overburn=False): def compose (db, source, quantity, overburn=False): cursor = db.cursor() destination = config.UNSPENDABLE - problems = validate(db, source, destination, quantity, util.CURRENT_BLOCK_INDEX, overburn=overburn) + problems = validate(db, source, destination, quantity, ledger.CURRENT_BLOCK_INDEX, overburn=overburn) if problems: raise exceptions.ComposeError(problems) # Check that a maximum of 1 BTC total is burned per address. - burns = list(cursor.execute('''SELECT * FROM burns WHERE (status = ? AND source = ?)''', ('valid', source))) + burns = ledger.get_burns(db, status='valid', source=source) already_burned = sum([burn['burned'] for burn in burns]) if quantity > (1 * config.UNIT - already_burned) and not overburn: - raise exceptions.ComposeError('1 {} may be burned per address'.format(config.BTC)) + raise exceptions.ComposeError(f'1 {config.BTC} may be burned per address') cursor.close() return (source, [(destination, quantity)], None) -def parse (db, tx, MAINNET_BURNS, message=None): +def parse (db, tx, mainnet_burns, message=None): burn_parse_cursor = db.cursor() if config.TESTNET or config.REGTEST: @@ -88,12 +96,10 @@ def parse (db, tx, MAINNET_BURNS, message=None): if status == 'valid': # Calculate quantity of XCP earned. (Maximum 1 BTC in total, ever.) - cursor = db.cursor() - cursor.execute('''SELECT * FROM burns WHERE (status = ? AND source = ?)''', ('valid', tx['source'])) - burns = cursor.fetchall() + burns = ledger.get_burns(db, status='valid', source=tx['source']) already_burned = sum([burn['burned'] for burn in burns]) - ONE = 1 * config.UNIT - max_burn = ONE - already_burned + one = 1 * config.UNIT + max_burn = one - already_burned if sent > max_burn: burned = max_burn # Exceeded maximum burn; earn what you can. else: burned = sent @@ -103,7 +109,7 @@ def parse (db, tx, MAINNET_BURNS, message=None): earned = round(burned * multiplier) # Credit source address with earned XCP. - util.credit(db, tx['source'], config.XCP, earned, action='burn', event=tx['tx_hash']) + ledger.credit(db, tx['source'], config.XCP, earned, tx['tx_index'], action='burn', event=tx['tx_hash']) else: burned = 0 earned = 0 @@ -117,11 +123,11 @@ def parse (db, tx, MAINNET_BURNS, message=None): # Mainnet burns are hard‐coded. try: - line = MAINNET_BURNS[tx['tx_hash']] + line = mainnet_burns[tx['tx_hash']] except KeyError: return - util.credit(db, line['source'], config.XCP, int(line['earned']), action='burn', event=line['tx_hash']) + ledger.credit(db, line['source'], config.XCP, int(line['earned']), tx['tx_index'], action='burn', event=line['tx_hash']) tx_index = tx['tx_index'] tx_hash = line['tx_hash'] @@ -146,8 +152,8 @@ def parse (db, tx, MAINNET_BURNS, message=None): sql = 'insert into burns values(:tx_index, :tx_hash, :block_index, :source, :burned, :earned, :status)' burn_parse_cursor.execute(sql, bindings) else: - logger.warn("Not storing [burn] tx [%s]: %s" % (tx['tx_hash'], status)) - logger.debug("Bindings: %s" % (json.dumps(bindings), )) + logger.debug(f"Not storing [burn] tx [{tx['tx_hash']}]: {status}") + logger.debug(f"Bindings: {json.dumps(bindings)}") burn_parse_cursor.close() diff --git a/counterpartylib/lib/messages/cancel.py b/counterparty-lib/counterpartylib/lib/messages/cancel.py similarity index 76% rename from counterpartylib/lib/messages/cancel.py rename to counterparty-lib/counterpartylib/lib/messages/cancel.py index b5e92a6a09..e722271e45 100644 --- a/counterpartylib/lib/messages/cancel.py +++ b/counterparty-lib/counterpartylib/lib/messages/cancel.py @@ -8,17 +8,24 @@ import struct import json import logging -logger = logging.getLogger(__name__) -from counterpartylib.lib import (config, exceptions, util, message_type) +from counterpartylib.lib import (database, exceptions, ledger, message_type, config) from . import (order, bet, rps) +logger = logging.getLogger(config.LOGGER_NAME) + FORMAT = '>32s' LENGTH = 32 ID = 70 def initialise (db): cursor = db.cursor() + + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'source_idx', + ]) + cursor.execute('''CREATE TABLE IF NOT EXISTS cancels( tx_index INTEGER PRIMARY KEY, tx_hash TEXT UNIQUE, @@ -28,26 +35,20 @@ def initialise (db): status TEXT, FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) ''') - # Offer hash is not a foreign key. (And it cannot be, because of some invalid cancels.) - cursor.execute('''CREATE INDEX IF NOT EXISTS - cancels_block_index_idx ON cancels (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_idx ON cancels (source) - ''') + # Offer hash is not a foreign key. (And it cannot be, because of some invalid cancels.) + + database.create_indexes(cursor, 'cancels', [ + ['block_index'], + ['source'], + ]) def validate (db, source, offer_hash): problems = [] # TODO: make query only if necessary - cursor = db.cursor() - cursor.execute('''SELECT * from orders WHERE tx_hash = ?''', (offer_hash,)) - orders = list(cursor) - cursor.execute('''SELECT * from bets WHERE tx_hash = ?''', (offer_hash,)) - bets = list(cursor) - cursor.execute('''SELECT * from rps WHERE tx_hash = ?''', (offer_hash,)) - rps = list(cursor) - cursor.close() + orders = ledger.get_order(db, tx_hash=offer_hash) + bets = ledger.get_bet(db, tx_hash=offer_hash) + rps = ledger.get_rps(db, tx_hash=offer_hash) offer_type = None if orders: offer_type = 'order' @@ -66,8 +67,8 @@ def validate (db, source, offer_hash): return offer, offer_type, problems -def compose (db, source, offer_hash): +def compose (db, source, offer_hash): # Check that offer exists. offer, offer_type, problems = validate(db, source, offer_hash) if problems: raise exceptions.ComposeError(problems) @@ -77,6 +78,7 @@ def compose (db, source, offer_hash): data += struct.pack(FORMAT, offer_hash_bytes) return (source, [], data) + def parse (db, tx, message): cursor = db.cursor() @@ -99,13 +101,13 @@ def parse (db, tx, message): if status == 'valid': # Cancel if order. if offer_type == 'order': - order.cancel_order(db, offer, 'cancelled', tx['block_index']) + order.cancel_order(db, offer, 'cancelled', tx['block_index'], tx['tx_index']) # Cancel if bet. elif offer_type == 'bet': - bet.cancel_bet(db, offer, 'cancelled', tx['block_index']) + bet.cancel_bet(db, offer, 'cancelled', tx['block_index'], tx['tx_index']) # Cancel if rps. elif offer_type == 'rps': - rps.cancel_rps(db, offer, 'cancelled', tx['block_index']) + rps.cancel_rps(db, offer, 'cancelled', tx['block_index'], tx['tx_index']) # If neither order or bet, mark as invalid. else: assert False @@ -123,8 +125,8 @@ def parse (db, tx, message): sql='INSERT INTO cancels VALUES (:tx_index, :tx_hash, :block_index, :source, :offer_hash, :status)' cursor.execute(sql, bindings) else: - logger.warn("Not storing [cancel] tx [%s]: %s" % (tx['tx_hash'], status)) - logger.debug("Bindings: %s" % (json.dumps(bindings), )) + logger.debug(f"Not storing [cancel] tx [{tx['tx_hash']}]: {status}") + logger.debug(f"Bindings: {json.dumps(bindings)}") cursor.close() diff --git a/counterpartylib/lib/messages/destroy.py b/counterparty-lib/counterpartylib/lib/messages/destroy.py similarity index 77% rename from counterpartylib/lib/messages/destroy.py rename to counterparty-lib/counterpartylib/lib/messages/destroy.py index 94ff0943d2..bf0305547a 100644 --- a/counterpartylib/lib/messages/destroy.py +++ b/counterparty-lib/counterpartylib/lib/messages/destroy.py @@ -5,15 +5,17 @@ import struct import json import logging -logger = logging.getLogger(__name__) -from counterpartylib.lib import util +from counterpartylib.lib import database from counterpartylib.lib import config from counterpartylib.lib import script from counterpartylib.lib import message_type +from counterpartylib.lib import ledger from counterpartylib.lib.script import AddressError from counterpartylib.lib.exceptions import * +logger = logging.getLogger(config.LOGGER_NAME) + FORMAT = '>QQ' LENGTH = 8 + 8 MAX_TAG_LENGTH = 34 @@ -22,6 +24,13 @@ def initialise(db): cursor = db.cursor() + + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'status_idx', + 'address_idx', + ]) + cursor.execute('''CREATE TABLE IF NOT EXISTS destructions( tx_index INTEGER PRIMARY KEY, tx_hash TEXT UNIQUE, @@ -33,12 +42,11 @@ def initialise(db): status TEXT, FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - status_idx ON destructions (status) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - address_idx ON destructions (source) - ''') + + database.create_indexes(cursor, 'destructions', [ + ['status'], + ['source'], + ]) def pack(db, asset, quantity, tag): @@ -50,7 +58,7 @@ def pack(db, asset, quantity, tag): else: tag = b'' - data += struct.pack(FORMAT, util.get_asset_id(db, asset, util.CURRENT_BLOCK_INDEX), quantity) + data += struct.pack(FORMAT, ledger.get_asset_id(db, asset, ledger.CURRENT_BLOCK_INDEX), quantity) data += tag return data @@ -59,7 +67,7 @@ def unpack(db, message): try: asset_id, quantity = struct.unpack(FORMAT, message[0:16]) tag = message[16:] - asset = util.get_asset_name(db, asset_id, util.CURRENT_BLOCK_INDEX) + asset = ledger.get_asset_name(db, asset_id, ledger.CURRENT_BLOCK_INDEX) except struct.error: raise UnpackError('could not unpack') @@ -73,7 +81,7 @@ def unpack(db, message): def validate (db, source, destination, asset, quantity): try: - util.get_asset_id(db, asset, util.CURRENT_BLOCK_INDEX) + ledger.get_asset_id(db, asset, ledger.CURRENT_BLOCK_INDEX) except AssetError: raise ValidateError('asset invalid') @@ -86,7 +94,7 @@ def validate (db, source, destination, asset, quantity): raise ValidateError('destination exists') if asset == config.BTC: - raise ValidateError('cannot destroy {}'.format(config.BTC)) + raise ValidateError(f'cannot destroy {config.BTC}') if type(quantity) != int: raise ValidateError('quantity not integer') @@ -97,13 +105,13 @@ def validate (db, source, destination, asset, quantity): if quantity < 0: raise ValidateError('quantity negative') - if util.get_balance(db, source, asset) < quantity: + if ledger.get_balance(db, source, asset) < quantity: raise BalanceError('balance insufficient') def compose (db, source, asset, quantity, tag): # resolve subassets - asset = util.resolve_subasset_longname(db, asset) + asset = ledger.resolve_subasset_longname(db, asset) validate(db, source, None, asset, quantity) data = pack(db, asset, quantity, tag) @@ -119,7 +127,7 @@ def parse (db, tx, message): try: asset, quantity, tag = unpack(db, message) validate(db, tx['source'], tx['destination'], asset, quantity) - util.debit(db, tx['source'], asset, quantity, 'destroy', tx['tx_hash']) + ledger.debit(db, tx['source'], asset, quantity, tx['tx_index'], 'destroy', tx['tx_hash']) except UnpackError as e: status = 'invalid: ' + ''.join(e.args) @@ -142,8 +150,8 @@ def parse (db, tx, message): cursor = db.cursor() cursor.execute(sql, bindings) else: - logger.warn("Not storing [destroy] tx [%s]: %s" % (tx['tx_hash'], status)) - logger.debug("Bindings: %s" % (json.dumps(bindings), )) + logger.debug(f"Not storing [destroy] tx [{tx['tx_hash']}]: {status}") + logger.debug(f"Bindings: {json.dumps(bindings)}") # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterparty-lib/counterpartylib/lib/messages/dispenser.py b/counterparty-lib/counterpartylib/lib/messages/dispenser.py new file mode 100644 index 0000000000..4eeac891cb --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/messages/dispenser.py @@ -0,0 +1,614 @@ +#! /usr/bin/python3 +# +# What is a dispenser? +# +# A dispenser is a type of order where the holder address gives out a given amount +# of units of an asset for a given amount of BTC satoshis received. +# It's a very simple but powerful semantic to allow swaps to operate on-chain. +# + +import struct +import logging +from math import floor + +from counterpartylib.lib import config +from counterpartylib.lib import exceptions +from counterpartylib.lib import util +from counterpartylib.lib import ledger +from counterpartylib.lib import message_type +from counterpartylib.lib import address +from counterpartylib.lib import backend +from counterpartylib.lib import database + +logger = logging.getLogger(config.LOGGER_NAME) + +FORMAT = '>QQQQB' +LENGTH = 33 +ID = 12 +DISPENSE_ID = 13 + +STATUS_OPEN = 0 +STATUS_OPEN_EMPTY_ADDRESS = 1 +#STATUS_OPEN_ORACLE_PRICE = 20 +#STATUS_OPEN_ORACLE_PRICE_EMPTY_ADDRESS = 21 +STATUS_CLOSED = 10 +STATUS_CLOSING = 11 + +def initialise(db): + cursor = db.cursor() + + # Dispensers + create_dispensers_query = '''CREATE TABLE IF NOT EXISTS dispensers( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + asset TEXT, + give_quantity INTEGER, + escrow_quantity INTEGER, + satoshirate INTEGER, + status INTEGER, + give_remaining INTEGER, + oracle_address TEXT, + last_status_tx_hash TEXT, + origin TEXT, + dispense_count INTEGER DEFAULT 0) + ''' + # create tables + cursor.execute(create_dispensers_query) + + # add new columns if not exist + columns = [column['name'] for column in cursor.execute('''PRAGMA table_info(dispensers)''')] + if 'oracle_address' not in columns: + cursor.execute('ALTER TABLE dispensers ADD COLUMN oracle_address TEXT') + if 'last_status_tx_hash' not in columns: + #this column will be used to know when a dispenser was marked to close + cursor.execute('ALTER TABLE dispensers ADD COLUMN last_status_tx_hash TEXT') + if "origin" not in columns: + cursor.execute('ALTER TABLE dispensers ADD COLUMN origin TEXT') + cursor.execute("UPDATE dispensers AS d SET origin = (SELECT t.source FROM transactions t WHERE d.tx_hash = t.tx_hash)") + if "dispense_count" not in columns: + cursor.execute('ALTER TABLE dispensers ADD COLUMN dispense_count INTEGER DEFAULT 0') + + # migrate old table + if database.field_is_pk(cursor, 'dispensers', 'tx_index'): + database.copy_old_table(cursor, 'dispensers', create_dispensers_query) + + # create indexes + database.create_indexes(cursor, 'dispensers', [ + ['block_index'], + ['source'], + ['asset'], + ['tx_index'], + ['tx_hash'], + ['status'], + ['give_remaining'], + ['status', 'block_index'], + ['source', 'origin'], + ['source', 'asset', 'origin'], + ['last_status_tx_hash'] + ]) + + # Dispenses + create_dispensers_query = '''CREATE TABLE IF NOT EXISTS dispenses ( + tx_index INTEGER, + dispense_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, dispense_index, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) + ''' + # create tables + cursor.execute(create_dispensers_query) + + # add new columns if not exist + columns = [column['name'] for column in cursor.execute('''PRAGMA table_info(dispenses)''')] + if 'dispenser_tx_hash' not in columns: + cursor.execute('ALTER TABLE dispenses ADD COLUMN dispenser_tx_hash TEXT') + + # create indexes + database.create_indexes(cursor, 'dispenses', [ + ['tx_hash'], + ['block_index'], + ['dispenser_tx_hash'] + ]) + + # Dispenser refills + create_dispenser_refills_query = '''CREATE TABLE IF NOT EXISTS dispenser_refills( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, tx_hash, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) + REFERENCES transactions(tx_index, tx_hash, block_index)) + ''' + # create tables + cursor.execute(create_dispenser_refills_query) + # create indexes + database.create_indexes(cursor, 'dispenser_refills', [ + ['tx_hash'], + ['block_index'], + ]) + # fill dispenser_refills table + dispenser_refills_is_empty = cursor.execute("SELECT * FROM dispenser_refills LIMIT 1").fetchone() is None + if dispenser_refills_is_empty: + cursor.execute('''INSERT INTO dispenser_refills + SELECT t.tx_index, deb.event, deb.block_index, deb.address, + dis.source, deb.asset, deb.quantity, dis.tx_hash + FROM debits deb + LEFT JOIN transactions t ON t.tx_hash = deb.event + LEFT JOIN dispensers dis ON + dis.source = deb.address + AND dis.asset = deb.asset + AND dis.tx_index = ( + SELECT max(dis2.tx_index) + FROM dispensers dis2 + WHERE dis2.source = deb.address + AND dis2.asset = deb.asset + AND dis2.block_index <= deb.block_index + ) + WHERE deb.action = 'refill dispenser' AND dis.source IS NOT NULL''') + + +def validate (db, source, asset, give_quantity, escrow_quantity, mainchainrate, status, open_address, block_index, oracle_address): + problems = [] + order_match = None + asset_id = None + + if asset == config.BTC: + problems.append(f'cannot dispense {config.BTC}') + return None, problems + + # resolve subassets + asset = ledger.resolve_subasset_longname(db, asset) + + if status == STATUS_OPEN or status == STATUS_OPEN_EMPTY_ADDRESS: + if give_quantity <= 0: + problems.append('give_quantity must be positive') + if mainchainrate <= 0: + problems.append('mainchainrate must be positive') + if escrow_quantity < give_quantity: + problems.append('escrow_quantity must be greater or equal than give_quantity') + elif not(status == STATUS_CLOSED): + problems.append(f'invalid status {status}') + + cursor = db.cursor() + available = ledger.get_balance(db, source, asset, return_list=True) + + if len(available) == 0: + problems.append(f'address doesn\'t has the asset {asset}') + elif len(available) >= 1 and available[0]['quantity'] < escrow_quantity: + problems.append(f"address doesn\'t has enough balance of {asset} ({available[0]['quantity']} < {escrow_quantity})") + else: + if status == STATUS_OPEN_EMPTY_ADDRESS and not(open_address): + open_address = source + status = STATUS_OPEN + + open_dispensers = [] + if ledger.enabled("dispenser_origin_permission_extended", block_index) and status == STATUS_CLOSED and open_address and open_address != source: + open_dispensers = ledger.get_dispensers(db, status_in=[0, 11], source=open_address, asset=asset, origin=source) + else: + query_address = open_address if status == STATUS_OPEN_EMPTY_ADDRESS else source + open_dispensers = ledger.get_dispensers(db, status_in=[0, 11], source=query_address, asset=asset) + + if len(open_dispensers) == 0 or open_dispensers[0]["status"] != STATUS_CLOSING: + if status == STATUS_OPEN or status == STATUS_OPEN_EMPTY_ADDRESS: + if len(open_dispensers) > 0: + max_refills = ledger.get_value_by_block_index("max_refills", block_index) + refilling_count = 0 + if max_refills > 0: + refilling_count = ledger.get_refilling_count(db, dispenser_tx_hash=open_dispensers[0]["tx_hash"]) + + #It's a valid refill + if open_dispensers[0]['satoshirate'] == mainchainrate and open_dispensers[0]['give_quantity'] == give_quantity: + if (max_refills > 0) and (refilling_count >= max_refills): + problems.append('the dispenser reached its maximum refilling') + else: + if open_dispensers[0]['satoshirate'] != mainchainrate: + problems.append(f'address has a dispenser already opened for asset {asset} with a different mainchainrate') + if open_dispensers[0]['give_quantity'] != give_quantity: + problems.append(f'address has a dispenser already opened for asset {asset} with a different give_quantity') + elif status == STATUS_CLOSED: + if len(open_dispensers) == 0: + problems.append(f'address doesnt has an open dispenser for asset {asset}') + + if status == STATUS_OPEN_EMPTY_ADDRESS: + #If an address is trying to refill a dispenser in a different address and it's the creator + if not (ledger.enabled("dispenser_origin_permission_extended", block_index) and (len(open_dispensers) > 0) and (open_dispensers[0]["origin"] == source)): + dispensers_from_same_origin_count = ledger.get_dispensers_count(db, + source=query_address, + status=STATUS_CLOSED, + origin=source) + + if not (ledger.enabled("dispenser_origin_permission_extended", block_index) and dispensers_from_same_origin_count > 0): + #It means that the same origin has not opened other dispensers in this address + existing_balances = ledger.get_balances_count(db, query_address) + + if existing_balances[0]['cnt'] > 0: + problems.append('cannot open on another address if it has any balance history') + + if ledger.enabled("dispenser_origin_permission_extended", block_index): + address_oldest_transaction = backend.get_oldest_tx(query_address) + if ("block_index" in address_oldest_transaction) and (address_oldest_transaction["block_index"] > 0) and (block_index > address_oldest_transaction["block_index"]): + problems.append('cannot open on another address if it has any confirmed bitcoin txs') + + if len(problems) == 0: + asset_id = ledger.generate_asset_id(asset, block_index) + if asset_id == 0: + problems.append(f'cannot dispense {asset}') # How can we test this on a test vector? + else: + problems.append('address has already a dispenser about to close, no action can be taken until it closes') + + cursor.close() + + if oracle_address is not None and ledger.enabled('oracle_dispensers', block_index): + last_price, last_fee, last_label, last_updated = ledger.get_oracle_last_price(db, oracle_address, block_index) + + if last_price is None: + problems.append(f'The oracle address {oracle_address} has not broadcasted any price yet') + + if give_quantity > config.MAX_INT or escrow_quantity > config.MAX_INT or mainchainrate > config.MAX_INT: + problems.append('integer overflow') + + if len(problems) > 0: + return None, problems + else: + return asset_id, None + + +def compose (db, source, asset, give_quantity, escrow_quantity, mainchainrate, status, open_address=None, oracle_address=None): + assetid, problems = validate(db, source, asset, give_quantity, escrow_quantity, mainchainrate, status, open_address, ledger.CURRENT_BLOCK_INDEX, oracle_address) + if problems: raise exceptions.ComposeError(problems) + + destination = [] + data = message_type.pack(ID) + data += struct.pack(FORMAT, assetid, give_quantity, escrow_quantity, mainchainrate, status) + if (status == STATUS_OPEN_EMPTY_ADDRESS and open_address) or (ledger.enabled("dispenser_origin_permission_extended") and status == STATUS_CLOSED and open_address and open_address != source): + data += address.pack(open_address) + if oracle_address is not None and ledger.enabled('oracle_dispensers'): + oracle_fee = calculate_oracle_fee(db, escrow_quantity, give_quantity, mainchainrate, oracle_address, ledger.CURRENT_BLOCK_INDEX) + + if oracle_fee >= config.DEFAULT_REGULAR_DUST_SIZE: + destination.append((oracle_address,oracle_fee)) + data += address.pack(oracle_address) + + return (source, destination, data) + + +def calculate_oracle_fee(db, escrow_quantity, give_quantity, mainchainrate, oracle_address, block_index): + last_price, last_fee, last_fiat_label, last_updated = ledger.get_oracle_last_price(db, oracle_address, block_index) + last_fee_multiplier = (last_fee / config.UNIT) + + #Format mainchainrate to ######.## + oracle_mainchainrate = util.satoshirate_to_fiat(mainchainrate) + oracle_mainchainrate_btc = oracle_mainchainrate/last_price + + #Calculate the total amount earned for dispenser and the fee + remaining = int(floor(escrow_quantity / give_quantity)) + total_quantity_btc = oracle_mainchainrate_btc * remaining + oracle_fee_btc = int(total_quantity_btc * last_fee_multiplier *config.UNIT) + + return oracle_fee_btc + + +def parse (db, tx, message): + cursor = db.cursor() + + # Unpack message. + try: + action_address = tx['source'] + oracle_address = None + assetid, give_quantity, escrow_quantity, mainchainrate, dispenser_status = struct.unpack(FORMAT, message[0:LENGTH]) + read = LENGTH + if dispenser_status == STATUS_OPEN_EMPTY_ADDRESS or (ledger.enabled("dispenser_origin_permission_extended") and dispenser_status == STATUS_CLOSED and len(message) > read): + action_address = address.unpack(message[LENGTH:LENGTH+21]) + read = LENGTH + 21 + if len(message) > read: + oracle_address = address.unpack(message[read:read+21]) + asset = ledger.generate_asset_name(assetid, ledger.CURRENT_BLOCK_INDEX) + status = 'valid' + except (exceptions.UnpackError, struct.error) as e: + assetid, give_quantity, mainchainrate, asset = None, None, None, None + status = 'invalid: could not unpack' + + if status == 'valid': + if ledger.enabled("dispenser_parsing_validation", ledger.CURRENT_BLOCK_INDEX): + asset_id, problems = validate(db, tx['source'], asset, give_quantity, escrow_quantity, mainchainrate, dispenser_status, action_address if dispenser_status in [STATUS_OPEN_EMPTY_ADDRESS, STATUS_CLOSED] else None, tx['block_index'], oracle_address) + else: + problems = None + + if problems: + status = 'invalid: ' + '; '.join(problems) + else: + if dispenser_status == STATUS_OPEN or dispenser_status == STATUS_OPEN_EMPTY_ADDRESS: + existing = ledger.get_dispensers(db, source=action_address, asset=asset, status=STATUS_OPEN) + + if len(existing) == 0: + if (oracle_address != None) and ledger.enabled('oracle_dispensers', tx['block_index']): + oracle_fee = calculate_oracle_fee(db, escrow_quantity, give_quantity, mainchainrate, oracle_address, tx['block_index']) + + if oracle_fee >= config.DEFAULT_REGULAR_DUST_SIZE: + if tx["destination"] != oracle_address or tx["btc_amount"] < oracle_fee: + status = 'invalid: insufficient or non-existent oracle fee' + + if status == 'valid': + # Create the new dispenser + try: + if dispenser_status == STATUS_OPEN_EMPTY_ADDRESS: + is_empty_address = True + address_assets = ledger.get_address_assets(db, action_address) + if len(address_assets) > 0: + for asset_name in address_assets: + asset_balance = ledger.get_balance(db, action_address, asset_name['asset']) + if asset_balance > 0: + is_empty_address = False + break + + if is_empty_address: + ledger.debit(db, tx['source'], asset, escrow_quantity, tx['tx_index'], action='open dispenser empty addr', event=tx['tx_hash']) + ledger.credit(db, action_address, asset, escrow_quantity, tx['tx_index'], action='open dispenser empty addr', event=tx['tx_hash']) + ledger.debit(db, action_address, asset, escrow_quantity, tx['tx_index'], action='open dispenser empty addr', event=tx['tx_hash']) + else: + status = 'invalid: address not empty' + else: + ledger.debit(db, tx['source'], asset, escrow_quantity, tx['tx_index'], action='open dispenser', event=tx['tx_hash']) + except ledger.DebitError as e: + status = 'invalid: insufficient funds' + + if status == 'valid': + bindings = { + 'tx_index': tx['tx_index'], + 'tx_hash': tx['tx_hash'], + 'block_index': tx['block_index'], + 'source': action_address, + 'asset': asset, + 'give_quantity': give_quantity, + 'escrow_quantity': escrow_quantity, + 'satoshirate': mainchainrate, + 'status': STATUS_OPEN, + 'give_remaining': escrow_quantity, + 'oracle_address': oracle_address, + 'origin': tx['source'] + } + + if ledger.enabled("dispenser_origin_permission_extended"): + bindings["origin"] = tx["source"] + + sql = '''insert into dispensers (tx_index, tx_hash, block_index, source, asset, give_quantity, escrow_quantity, satoshirate, status, give_remaining, oracle_address, origin, last_status_tx_hash) + values(:tx_index, :tx_hash, :block_index, :source, :asset, :give_quantity, :escrow_quantity, :satoshirate, :status, :give_remaining, :oracle_address, :origin, NULL)''' + cursor.execute(sql, bindings) + elif len(existing) == 1 and existing[0]['satoshirate'] == mainchainrate and existing[0]['give_quantity'] == give_quantity: + if tx["source"]==action_address or (ledger.enabled("dispenser_origin_permission_extended", tx['block_index']) and tx["source"] == existing[0]["origin"]): + if (oracle_address != None) and ledger.enabled('oracle_dispensers', tx['block_index']): + oracle_fee = calculate_oracle_fee(db, escrow_quantity, give_quantity, mainchainrate, oracle_address, tx['block_index']) + + if oracle_fee >= config.DEFAULT_REGULAR_DUST_SIZE: + if tx["destination"] != oracle_address or tx["btc_amount"] < oracle_fee: + status = 'invalid: insufficient or non-existent oracle fee' + + if status == 'valid': + # Refill the dispenser by the given amount + try: + ledger.debit(db, tx['source'], asset, escrow_quantity, tx['tx_index'], action='refill dispenser', event=tx['tx_hash']) + + set_data = { + 'give_remaining': existing[0]['give_remaining'] + escrow_quantity, + 'dispense_count': 0 # reset the dispense count on refill + } + ledger.update_dispenser(db, existing[0]['rowid'], set_data) + + dispenser_tx_hash = ledger.get_dispensers(db, source=action_address, asset=asset, status=STATUS_OPEN)[0]["tx_hash"] + bindings_refill = { + 'tx_index':tx["tx_index"], + 'tx_hash':tx["tx_hash"], + 'block_index':tx["block_index"], + 'source': tx['source'], + 'destination': action_address, + 'asset': asset, + 'dispenser_quantity': escrow_quantity, + 'dispenser_tx_hash': dispenser_tx_hash + } + sql = '''INSERT INTO dispenser_refills + VALUES ( + :tx_index, + :tx_hash, + :block_index, + :source, + :destination, + :asset, + :dispenser_quantity, + :dispenser_tx_hash + )''' + cursor.execute(sql, bindings_refill) + except (ledger.DebitError): + status = 'insufficient funds' + else: + status = 'invalid: can only refill dispenser from source or origin' + else: + status = 'can only have one open dispenser per asset per address' + + elif dispenser_status == STATUS_CLOSED: + close_delay = ledger.get_value_by_block_index("dispenser_close_delay", tx['block_index']) + close_from_another_address = ledger.enabled("dispenser_origin_permission_extended", tx['block_index']) and action_address and action_address != tx["source"] + existing = [] + if close_from_another_address: + existing = ledger.get_dispensers(db, + source=action_address, + asset=asset, + status=STATUS_OPEN, + origin=tx["source"]) + else: + existing = ledger.get_dispensers(db, + source=tx['source'], + asset=asset, + status=STATUS_OPEN) + if len(existing) == 1: + if close_delay == 0: + ledger.credit(db, tx['source'], asset, existing[0]['give_remaining'], tx['tx_index'], action='close dispenser', event=tx['tx_hash']) + + set_data = { + 'give_remaining': 0, + 'status': STATUS_CLOSED, + } + else: + set_data = { + 'status': STATUS_CLOSING, + 'last_status_tx_hash': tx['tx_hash'] + } + ledger.update_dispenser(db, existing[0]['rowid'], set_data) + else: + status = 'dispenser inexistent' + else: + status = 'invalid: status must be one of OPEN or CLOSE' + + if status != 'valid': + logger.debug(f"Not storing [dispenser] tx [{tx['tx_hash']}]: {status}") + + cursor.close() + + +def is_dispensable(db, address, amount): + if address is None: + return False + + dispensers = ledger.get_dispensers(db, source=address, status_in=[0, 11]) + + for next_dispenser in dispensers: + if next_dispenser["oracle_address"] != None: + last_price, last_fee, last_fiat_label, last_updated = ledger.get_oracle_last_price(db, next_dispenser['oracle_address'], ledger.CURRENT_BLOCK_INDEX) + fiatrate = util.satoshirate_to_fiat(next_dispenser["satoshirate"]) + if fiatrate == 0 or last_price == 0: + return False + if amount >= fiatrate/last_price: + return True + else: + if amount >= next_dispenser["satoshirate"]: + return True + + return False + + +def dispense(db, tx): + cursor = db.cursor() + + outs = [] + if ledger.enabled("multiple_dispenses"): + outs = ledger.get_vouts(db, tx['tx_hash']) + else: + outs = [tx] + + #if len(outs) == 0: + # outs = [tx] + # or + # assert len(outs) > 0 ? + + dispense_index = 0 + + for next_out in outs: + dispensers = [] + if next_out['destination'] is not None: + dispensers = ledger.get_dispensers(db, source=next_out['destination'], status_in=[0, 11], order_by="asset") + + for dispenser in dispensers: + satoshirate = dispenser['satoshirate'] + give_quantity = dispenser['give_quantity'] + + if satoshirate > 0 and give_quantity > 0: + if (dispenser['oracle_address'] != None) and ledger.enabled('oracle_dispensers', next_out['block_index']): + last_price, last_fee, last_fiat_label, last_updated = ledger.get_oracle_last_price(db, dispenser['oracle_address'], next_out['block_index']) + fiatrate = util.satoshirate_to_fiat(satoshirate) + must_give = int(floor(((next_out['btc_amount'] / config.UNIT) * last_price)/fiatrate)) + else: + must_give = int(floor(next_out['btc_amount'] / satoshirate)) + + remaining = int(floor(dispenser['give_remaining'] / give_quantity)) + actually_given = min(must_give, remaining) * give_quantity + give_remaining = dispenser['give_remaining'] - actually_given + + assert give_remaining >= 0 + + # Skip dispense if quantity is 0 + if ledger.enabled('zero_quantity_value_adjustment_1') and actually_given==0: + continue + + ledger.credit(db, next_out['source'], dispenser['asset'], actually_given, tx['tx_index'], action='dispense', event=next_out['tx_hash']) + + # Checking if the dispenser reach its max dispenses limit + max_dispenses_limit = ledger.get_value_by_block_index("max_dispenses_limit", next_out["block_index"]) + max_dispenser_limit_hit = False + + if max_dispenses_limit > 0 and dispenser['dispense_count'] + 1 >= max_dispenses_limit: + max_dispenser_limit_hit = True + + dispenser['give_remaining'] = give_remaining + if give_remaining < dispenser['give_quantity'] or max_dispenser_limit_hit: + # close the dispenser + dispenser['give_remaining'] = 0 + if give_remaining > 0: + if max_dispenser_limit_hit: + credit_action = 'Closed: Max dispenses reached' + dispenser['closing_reason'] = "max_dispenses_reached" + else: + credit_action = 'dispenser close' + dispenser['closing_reason'] = "no_more_to_give" + + # return the remaining to the owner + ledger.credit(db, dispenser['source'], dispenser['asset'], give_remaining, tx['tx_index'], action=credit_action, event=next_out['tx_hash']) + else: + dispenser['closing_reason'] = "depleted" + dispenser['status'] = STATUS_CLOSED + + dispenser['block_index'] = next_out['block_index'] + dispenser['prev_status'] = STATUS_OPEN + + set_data = { + 'give_remaining': dispenser['give_remaining'], + 'status': dispenser['status'], + 'dispense_count': dispenser['dispense_count'] + 1 + } + ledger.update_dispenser(db, dispenser['rowid'], set_data) + + bindings = { + 'tx_index': next_out['tx_index'], + 'tx_hash': next_out['tx_hash'], + 'dispense_index': dispense_index, + 'block_index': next_out['block_index'], + 'source': next_out['destination'], + 'destination': next_out['source'], + 'asset': dispenser['asset'], + 'dispense_quantity': actually_given, + 'dispenser_tx_hash': dispenser['tx_hash'] + } + sql = 'INSERT INTO dispenses(tx_index, dispense_index, tx_hash, block_index, source, destination, asset, dispense_quantity, dispenser_tx_hash) \ + VALUES(:tx_index, :dispense_index, :tx_hash, :block_index, :source, :destination, :asset, :dispense_quantity, :dispenser_tx_hash);' + cursor.execute(sql, bindings) + dispense_index += 1 + + cursor.close() + + +def close_pending(db, block_index): + block_delay = ledger.get_value_by_block_index("dispenser_close_delay", block_index) + + if block_delay > 0: + pending_dispensers = ledger.get_pending_dispensers(db, delay=block_delay, block_index=block_index) + + for dispenser in pending_dispensers: + # use tx_index=0 for block actions + ledger.credit(db, dispenser['tx_source'], dispenser['asset'], dispenser['give_remaining'], 0, action='close dispenser', event=dispenser['last_status_tx_hash']) + + set_data = { + 'give_remaining': 0, + 'status': STATUS_CLOSED, + } + ledger.update_dispenser(db, dispenser['rowid'], set_data) # use tx_index=0 for block actions diff --git a/counterpartylib/lib/messages/dividend.py b/counterparty-lib/counterpartylib/lib/messages/dividend.py similarity index 62% rename from counterpartylib/lib/messages/dividend.py rename to counterparty-lib/counterpartylib/lib/messages/dividend.py index b51e0cda86..9958b2f784 100644 --- a/counterpartylib/lib/messages/dividend.py +++ b/counterparty-lib/counterpartylib/lib/messages/dividend.py @@ -6,9 +6,10 @@ import decimal D = decimal.Decimal import logging -logger = logging.getLogger(__name__) -from counterpartylib.lib import (config, exceptions, util, message_type) +from counterpartylib.lib import (config, exceptions, database, message_type, ledger) + +logger = logging.getLogger(config.LOGGER_NAME) FORMAT_1 = '>QQ' LENGTH_1 = 8 + 8 @@ -18,6 +19,14 @@ def initialise (db): cursor = db.cursor() + + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'block_index_idx', + 'source_idx', + 'asset_idx', + ]) + cursor.execute('''CREATE TABLE IF NOT EXISTS dividends( tx_index INTEGER PRIMARY KEY, tx_hash TEXT UNIQUE, @@ -30,25 +39,23 @@ def initialise (db): status TEXT, FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON dividends (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_idx ON dividends (source) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - asset_idx ON dividends (asset) - ''') + + database.create_indexes(cursor, 'dividends', [ + ['block_index'], + ['source'], + ['asset'], + ]) + def validate (db, source, quantity_per_unit, asset, dividend_asset, block_index): cursor = db.cursor() problems = [] if asset == config.BTC: - problems.append('cannot pay dividends to holders of {}'.format(config.BTC)) + problems.append(f'cannot pay dividends to holders of {config.BTC}') if asset == config.XCP: if (not block_index >= 317500) or block_index >= 320000 or config.TESTNET or config.REGTEST: # Protocol change. - problems.append('cannot pay dividends to holders of {}'.format(config.XCP)) + problems.append(f'cannot pay dividends to holders of {config.XCP}') if quantity_per_unit <= 0: problems.append('non‐positive quantity per unit') @@ -59,30 +66,30 @@ def validate (db, source, quantity_per_unit, asset, dividend_asset, block_index) # Examine asset. try: - divisible = util.is_divisible(db, asset) - except AssetError: - problems.append('no such asset, {}.'.format(asset)) + divisible = ledger.is_divisible(db, asset) + except exceptions.AssetError: + problems.append(f'no such asset, {asset}.') return None, None, problems, 0 - + # Only issuer can pay dividends. if block_index >= 320000 or config.TESTNET or config.REGTEST: # Protocol change. - issuer = util.get_asset_issuer(db, asset) - + issuer = ledger.get_asset_issuer(db, asset) + if issuer != source: problems.append('only issuer can pay dividends') # Examine dividend asset. try: - dividend_divisible = util.is_divisible(db, dividend_asset) - except AssetError: - problems.append('no such dividend asset, {}.'.format(dividend_asset)) + dividend_divisible = ledger.is_divisible(db, dividend_asset) + except exceptions.AssetError: + problems.append(f'no such dividend asset, {dividend_asset}.') return None, None, problems, 0 - + # Calculate dividend quantities. exclude_empty = False - if util.enabled('zero_quantity_value_adjustment_1'): + if ledger.enabled('zero_quantity_value_adjustment_1'): exclude_empty = True - holders = util.holders(db, asset, exclude_empty) + holders = ledger.holders(db, asset, exclude_empty) outputs = [] addresses = [] @@ -100,7 +107,7 @@ def validate (db, source, quantity_per_unit, asset, dividend_asset, block_index) dividend_quantity = address_quantity * quantity_per_unit if divisible: dividend_quantity /= config.UNIT - if not util.enabled('nondivisible_dividend_fix') and not dividend_divisible: dividend_quantity /= config.UNIT # Pre-fix behaviour + if not ledger.enabled('nondivisible_dividend_fix') and not dividend_divisible: dividend_quantity /= config.UNIT # Pre-fix behaviour if dividend_asset == config.BTC and dividend_quantity < config.DEFAULT_MULTISIG_DUST_SIZE: continue # A bit hackish. dividend_quantity = int(dividend_quantity) @@ -112,9 +119,9 @@ def validate (db, source, quantity_per_unit, asset, dividend_asset, block_index) if not dividend_total: problems.append('zero dividend') if dividend_asset != config.BTC: - dividend_balances = list(cursor.execute('''SELECT * FROM balances WHERE (address = ? AND asset = ?)''', (source, dividend_asset))) - if not dividend_balances or dividend_balances[0]['quantity'] < dividend_total: - problems.append('insufficient funds ({})'.format(dividend_asset)) + dividend_balances = ledger.get_balance(db, source, dividend_asset) + if dividend_balances < dividend_total: + problems.append(f'insufficient funds ({dividend_asset})') fee = 0 if not problems and dividend_asset != config.BTC: @@ -122,14 +129,14 @@ def validate (db, source, quantity_per_unit, asset, dividend_asset, block_index) if block_index >= 330000 or config.TESTNET or config.REGTEST: # Protocol change. fee = int(0.0002 * config.UNIT * holder_count) if fee: - balances = list(cursor.execute('''SELECT * FROM balances WHERE (address = ? AND asset = ?)''', (source, config.XCP))) - if not balances or balances[0]['quantity'] < fee: - problems.append('insufficient funds ({})'.format(config.XCP)) + balance = ledger.get_balance(db, source, config.XCP) + if balance < fee: + problems.append(f'insufficient funds ({config.XCP})') if not problems and dividend_asset == config.XCP: total_cost = dividend_total + fee - if not dividend_balances or dividend_balances[0]['quantity'] < total_cost: - problems.append('insufficient funds ({})'.format(dividend_asset)) + if dividend_balances < total_cost: + problems.append(f'insufficient funds ({dividend_asset})') # For SQLite3 if fee > config.MAX_INT or dividend_total > config.MAX_INT: @@ -137,39 +144,51 @@ def validate (db, source, quantity_per_unit, asset, dividend_asset, block_index) cursor.close() + if len(problems): + return None, None, problems, 0 + + # preserve order with old queries + # TODO: remove and update checkpoints + if not config.TESTNET and block_index in [313590, 313594]: + outputs.append(outputs.pop(-3)) + return dividend_total, outputs, problems, fee + def compose (db, source, quantity_per_unit, asset, dividend_asset): # resolve subassets - asset = util.resolve_subasset_longname(db, asset) - dividend_asset = util.resolve_subasset_longname(db, dividend_asset) + asset = ledger.resolve_subasset_longname(db, asset) + dividend_asset = ledger.resolve_subasset_longname(db, dividend_asset) - dividend_total, outputs, problems, fee = validate(db, source, quantity_per_unit, asset, dividend_asset, util.CURRENT_BLOCK_INDEX) + dividend_total, outputs, problems, fee = validate(db, source, quantity_per_unit, asset, dividend_asset, ledger.CURRENT_BLOCK_INDEX) if problems: raise exceptions.ComposeError(problems) - logger.info('Total quantity to be distributed in dividends: {} {}'.format(util.value_out(db, dividend_total, dividend_asset), dividend_asset)) + logger.info(f'Total quantity to be distributed in dividends: {ledger.value_out(db, dividend_total, dividend_asset)} {dividend_asset}') if dividend_asset == config.BTC: return (source, [(output['address'], output['dividend_quantity']) for output in outputs], None) - asset_id = util.get_asset_id(db, asset, util.CURRENT_BLOCK_INDEX) - dividend_asset_id = util.get_asset_id(db, dividend_asset, util.CURRENT_BLOCK_INDEX) + asset_id = ledger.get_asset_id(db, asset, ledger.CURRENT_BLOCK_INDEX) + dividend_asset_id = ledger.get_asset_id(db, dividend_asset, ledger.CURRENT_BLOCK_INDEX) data = message_type.pack(ID) data += struct.pack(FORMAT_2, quantity_per_unit, asset_id, dividend_asset_id) return (source, [], data) + def parse (db, tx, message): dividend_parse_cursor = db.cursor() + fee = 0 + # Unpack message. try: if (tx['block_index'] > 288150 or config.TESTNET or config.REGTEST) and len(message) == LENGTH_2: quantity_per_unit, asset_id, dividend_asset_id = struct.unpack(FORMAT_2, message) - asset = util.get_asset_name(db, asset_id, tx['block_index']) - dividend_asset = util.get_asset_name(db, dividend_asset_id, tx['block_index']) + asset = ledger.get_asset_name(db, asset_id, tx['block_index']) + dividend_asset = ledger.get_asset_name(db, dividend_asset_id, tx['block_index']) status = 'valid' elif len(message) == LENGTH_1: quantity_per_unit, asset_id = struct.unpack(FORMAT_1, message) - asset = util.get_asset_name(db, asset_id, tx['block_index']) + asset = ledger.get_asset_name(db, asset_id, tx['block_index']) dividend_asset = config.XCP status = 'valid' else: @@ -179,7 +198,7 @@ def parse (db, tx, message): status = 'invalid: could not unpack' if dividend_asset == config.BTC: - status = 'invalid: cannot pay {} dividends within protocol'.format(config.BTC) + status = f'invalid: cannot pay {config.BTC} dividends within protocol' if status == 'valid': # For SQLite3 @@ -190,14 +209,14 @@ def parse (db, tx, message): if status == 'valid': # Debit. - util.debit(db, tx['source'], dividend_asset, dividend_total, action='dividend', event=tx['tx_hash']) + ledger.debit(db, tx['source'], dividend_asset, dividend_total, tx['tx_index'], action='dividend', event=tx['tx_hash']) if tx['block_index'] >= 330000 or config.TESTNET or config.REGTEST: # Protocol change. - util.debit(db, tx['source'], config.XCP, fee, action='dividend fee', event=tx['tx_hash']) + ledger.debit(db, tx['source'], config.XCP, fee, tx['tx_index'], action='dividend fee', event=tx['tx_hash']) # Credit. for output in outputs: - if not util.enabled('dont_credit_zero_dividend') or output['dividend_quantity'] > 0: - util.credit(db, output['address'], dividend_asset, output['dividend_quantity'], action='dividend', event=tx['tx_hash']) + if not ledger.enabled('dont_credit_zero_dividend') or output['dividend_quantity'] > 0: + ledger.credit(db, output['address'], dividend_asset, output['dividend_quantity'], tx['tx_index'], action='dividend', event=tx['tx_hash']) # Add parsed transaction to message-type–specific table. bindings = { @@ -216,9 +235,7 @@ def parse (db, tx, message): sql = 'insert into dividends values(:tx_index, :tx_hash, :block_index, :source, :asset, :dividend_asset, :quantity_per_unit, :fee_paid, :status)' dividend_parse_cursor.execute(sql, bindings) else: - logger.warn("Not storing [dividend] tx [%s]: %s" % (tx['tx_hash'], status)) - logger.debug("Bindings: %s" % (json.dumps(bindings), )) + logger.debug(f"Not storing [dividend] tx [{tx['tx_hash']}]: {status}") + logger.debug(f"Bindings: {json.dumps(bindings)}") dividend_parse_cursor.close() - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/messages/issuance.py b/counterparty-lib/counterpartylib/lib/messages/issuance.py similarity index 74% rename from counterpartylib/lib/messages/issuance.py rename to counterparty-lib/counterpartylib/lib/messages/issuance.py index b52c9c7b69..1ca720ff63 100644 --- a/counterpartylib/lib/messages/issuance.py +++ b/counterparty-lib/counterpartylib/lib/messages/issuance.py @@ -8,10 +8,11 @@ import decimal import json import logging -logger = logging.getLogger(__name__) -D = decimal.Decimal -from counterpartylib.lib import (config, util, exceptions, util, message_type) +from counterpartylib.lib import (config, util, exceptions, util, message_type, ledger, database) + +logger = logging.getLogger(config.LOGGER_NAME) +D = decimal.Decimal FORMAT_1 = '>QQ?' LENGTH_1 = 8 + 8 + 1 @@ -32,6 +33,17 @@ def initialise(db): cursor = db.cursor() + + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'block_index_idx', + 'valid_asset_idx', + 'status_idx', + 'source_idx', + 'asset_longname_idx', + 'status_asset_txindex_idx' + ]) + cursor.execute('''CREATE TABLE IF NOT EXISTS issuances( tx_index INTEGER PRIMARY KEY, tx_hash TEXT UNIQUE, @@ -65,7 +77,7 @@ def initialise(db): # If sweep_hotfix activated, Create issuances copy, copy old data, drop old table, rename new table, recreate indexes # SQLite can’t do `ALTER TABLE IF COLUMN NOT EXISTS` nor can drop UNIQUE constraints if 'msg_index' not in columns: - cursor.execute('''CREATE TABLE IF NOT EXISTS new_issuances( + cursor.execute('''CREATE TABLE IF NOT EXISTS new_issuances( tx_index INTEGER, tx_hash TEXT, msg_index INTEGER DEFAULT 0, @@ -89,38 +101,31 @@ def initialise(db): FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), UNIQUE (tx_hash, msg_index)) ''') - cursor.execute('''INSERT INTO new_issuances(tx_index, tx_hash, msg_index, + cursor.execute('''INSERT INTO new_issuances(tx_index, tx_hash, msg_index, block_index, asset, quantity, divisible, source, issuer, transfer, callable, call_date, call_price, description, fee_paid, locked, status, asset_longname, reset) SELECT tx_index, tx_hash, 0, block_index, asset, quantity, divisible, source, issuer, transfer, callable, call_date, call_price, description, fee_paid, locked, status, asset_longname, reset FROM issuances''', {}) - cursor.execute('DROP TABLE issuances') - cursor.execute('ALTER TABLE new_issuances RENAME TO issuances') - - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON issuances (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - valid_asset_idx ON issuances (asset, status) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - status_idx ON issuances (status) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_idx ON issuances (source) - ''') + cursor.execute('DROP TABLE issuances') + cursor.execute('ALTER TABLE new_issuances RENAME TO issuances') + + database.create_indexes(cursor, 'issuances', [ + ['block_index'], + ['asset', 'status'], + ['status'], + ['source'], + ['asset_longname'], + ['status', 'asset', 'tx_index DESC'] + ]) - cursor.execute('''CREATE INDEX IF NOT EXISTS - asset_longname_idx ON issuances (asset_longname) - ''') def validate (db, source, destination, asset, quantity, divisible, lock, reset, callable_, call_date, call_price, description, subasset_parent, subasset_longname, block_index): problems = [] fee = 0 if asset in (config.BTC, config.XCP): - problems.append('cannot issue {} or {}'.format(config.BTC, config.XCP)) + problems.append(f'cannot issue {config.BTC} or {config.XCP}') if call_date is None: call_date = 0 if call_price is None: call_price = 0.0 @@ -158,19 +163,14 @@ def validate (db, source, destination, asset, quantity, divisible, lock, reset, problems.append('call price for non‐callable asset') # Valid re-issuance? - cursor = db.cursor() - cursor.execute('''SELECT * FROM issuances \ - WHERE (status = ? AND asset = ?) - ORDER BY tx_index ASC''', ('valid', asset)) - issuances = cursor.fetchall() - cursor.close() + issuances = ledger.get_issuances(db, asset=asset, status='valid', first=True) reissued_asset_longname = None if issuances: reissuance = True last_issuance = issuances[-1] reissued_asset_longname = last_issuance['asset_longname'] issuance_locked = False - if util.enabled('issuance_lock_fix'): + if ledger.enabled('issuance_lock_fix'): for issuance in issuances: if issuance['locked']: issuance_locked = True @@ -181,9 +181,9 @@ def validate (db, source, destination, asset, quantity, divisible, lock, reset, if last_issuance['issuer'] != source: problems.append('issued by another address') - if (bool(last_issuance['divisible']) != bool(divisible)) and ((not util.enabled("cip03", block_index)) or (not reset)): + if (bool(last_issuance['divisible']) != bool(divisible)) and ((not ledger.enabled("cip03", block_index)) or (not reset)): problems.append('cannot change divisibility') - if (not util.enabled("issuance_callability_parameters_removal", block_index)) and bool(last_issuance['callable']) != bool(callable_): + if (not ledger.enabled("issuance_callability_parameters_removal", block_index)) and bool(last_issuance['callable']) != bool(callable_): problems.append('cannot change callability') if last_issuance['call_date'] > call_date and (call_date != 0 or (block_index < 312500 and (not config.TESTNET or not config.REGTEST))): problems.append('cannot advance call date') @@ -204,12 +204,7 @@ def validate (db, source, destination, asset, quantity, divisible, lock, reset, # validate parent ownership for subasset if subasset_longname is not None and not reissuance: - cursor = db.cursor() - cursor.execute('''SELECT * FROM issuances \ - WHERE (status = ? AND asset = ?) - ORDER BY tx_index ASC''', ('valid', subasset_parent)) - parent_issuances = cursor.fetchall() - cursor.close() + parent_issuances = ledger.get_issuances(db, asset=subasset_parent, status='valid', first=True) if parent_issuances: last_parent_issuance = parent_issuances[-1] if last_parent_issuance['issuer'] != source: @@ -219,10 +214,7 @@ def validate (db, source, destination, asset, quantity, divisible, lock, reset, # validate subasset issuance is not a duplicate if subasset_longname is not None and not reissuance: - cursor = db.cursor() - cursor.execute('''SELECT * FROM assets \ - WHERE (asset_longname = ?)''', (subasset_longname,)) - assets = cursor.fetchall() + assets = ledger.get_assets_by_longname(db, subasset_longname) if len(assets) > 0: problems.append('subasset already exists') @@ -230,18 +222,14 @@ def validate (db, source, destination, asset, quantity, divisible, lock, reset, if asset[0] != 'A': problems.append('a subasset must be a numeric asset') - - # Check for existence of fee funds. if quantity or (block_index >= 315000 or config.TESTNET or config.REGTEST): # Protocol change. if not reissuance or (block_index < 310000 and not config.TESTNET and not config.REGTEST): # Pay fee only upon first issuance. (Protocol change.) cursor = db.cursor() - cursor.execute('''SELECT * FROM balances \ - WHERE (address = ? AND asset = ?)''', (source, config.XCP)) - balances = cursor.fetchall() + balance = ledger.get_balance(db, source, config.XCP) cursor.close() - if util.enabled('numeric_asset_names'): # Protocol change. - if subasset_longname is not None and util.enabled('subassets'): # Protocol change. + if ledger.enabled('numeric_asset_names'): # Protocol change. + if subasset_longname is not None and ledger.enabled('subassets'): # Protocol change. # subasset issuance is 0.25 fee = int(0.25 * config.UNIT) elif len(asset) >= 13: @@ -254,7 +242,7 @@ def validate (db, source, destination, asset, quantity, divisible, lock, reset, fee = 5 * config.UNIT elif block_index > 281236 or config.TESTNET or config.REGTEST: # Protocol change. fee = 5 - if fee and (not balances or balances[0]['quantity'] < fee): + if fee and (balance < fee): problems.append('insufficient funds') if not (block_index >= 317500 or config.TESTNET or config.REGTEST): # Protocol change. @@ -264,24 +252,21 @@ def validate (db, source, destination, asset, quantity, divisible, lock, reset, # For SQLite3 call_date = min(call_date, config.MAX_INT) assert isinstance(quantity, int) - if reset and util.enabled("cip03", block_index):#reset will overwrite the quantity + if reset and ledger.enabled("cip03", block_index):#reset will overwrite the quantity if quantity > config.MAX_INT: - problems.append('total quantity overflow') + problems.append('total quantity overflow') else: total = sum([issuance['quantity'] for issuance in issuances]) if total + quantity > config.MAX_INT: problems.append('total quantity overflow') - if util.enabled("cip03", block_index) and reset and issuances: - cursor = db.cursor() + if ledger.enabled("cip03", block_index) and reset and issuances: + #Checking that all supply are held by the owner of the asset - cursor.execute('''SELECT * FROM balances \ - WHERE asset = ? AND quantity > 0''', (asset,)) - balances = cursor.fetchall() - cursor.close() - + balances = ledger.get_asset_balances(db, asset) + if (len(balances) == 0): - if util.asset_supply(db, asset) > 0: + if ledger.asset_supply(db, asset) > 0: problems.append('Cannot reset an asset with no holder') elif (len(balances) > 1): problems.append('Cannot reset an asset with many holders') @@ -293,7 +278,7 @@ def validate (db, source, destination, asset, quantity, divisible, lock, reset, # problems.append('cannot issue and transfer simultaneously') # For SQLite3 - if util.enabled('integer_overflow_fix', block_index=block_index) and (fee > config.MAX_INT or quantity > config.MAX_INT): + if ledger.enabled('integer_overflow_fix', block_index=block_index) and (fee > config.MAX_INT or quantity > config.MAX_INT): problems.append('integer overflow') return call_date, call_price, problems, fee, description, divisible, lock, reset, reissuance, reissued_asset_longname @@ -303,11 +288,7 @@ def compose (db, source, transfer_destination, asset, quantity, divisible, lock, # Callability is deprecated, so for re‐issuances set relevant parameters # to old values; for first issuances, make uncallable. - cursor = db.cursor() - cursor.execute('''SELECT * FROM issuances \ - WHERE (status = ? AND asset = ?) - ORDER BY tx_index ASC''', ('valid', asset)) - issuances = cursor.fetchall() + issuances = ledger.get_issuances(db, asset=asset, status='valid', first=True) if issuances: last_issuance = issuances[-1] callable_ = last_issuance['callable'] @@ -317,20 +298,15 @@ def compose (db, source, transfer_destination, asset, quantity, divisible, lock, callable_ = False call_date = 0 call_price = 0.0 - cursor.close() # check subasset subasset_parent = None subasset_longname = None - if util.enabled('subassets'): # Protocol change. + if ledger.enabled('subassets'): # Protocol change. subasset_parent, subasset_longname = util.parse_subasset_from_asset_name(asset) if subasset_longname is not None: # try to find an existing subasset - sa_cursor = db.cursor() - sa_cursor.execute('''SELECT * FROM assets \ - WHERE (asset_longname = ?)''', (subasset_longname,)) - assets = sa_cursor.fetchall() - sa_cursor.close() + assets = ledger.get_assets_by_longname(db, subasset_longname) if len(assets) > 0: # this is a reissuance asset = assets[0]['asset_name'] @@ -339,38 +315,35 @@ def compose (db, source, transfer_destination, asset, quantity, divisible, lock, # generate a random numeric asset id which will map to this subasset asset = util.generate_random_asset() - asset_id = util.generate_asset_id(asset, util.CURRENT_BLOCK_INDEX) - asset_name = util.generate_asset_name(asset_id, util.CURRENT_BLOCK_INDEX) #This will remove leading zeros in the numeric assets - - call_date, call_price, problems, fee, validated_description, divisible, lock, reset, reissuance, reissued_asset_longname = validate(db, source, transfer_destination, asset_name, quantity, divisible, lock, reset, callable_, call_date, call_price, description, subasset_parent, subasset_longname, util.CURRENT_BLOCK_INDEX) + asset_id = ledger.generate_asset_id(asset, ledger.CURRENT_BLOCK_INDEX) + asset_name = ledger.generate_asset_name(asset_id, ledger.CURRENT_BLOCK_INDEX) #This will remove leading zeros in the numeric assets + + call_date, call_price, problems, fee, validated_description, divisible, lock, reset, reissuance, reissued_asset_longname = validate(db, source, transfer_destination, asset_name, quantity, divisible, lock, reset, callable_, call_date, call_price, description, subasset_parent, subasset_longname, ledger.CURRENT_BLOCK_INDEX) if problems: raise exceptions.ComposeError(problems) if subasset_longname is None or reissuance: - asset_format = util.get_value_by_block_index("issuance_asset_serialization_format") - asset_format_length = util.get_value_by_block_index("issuance_asset_serialization_length") - + asset_format = ledger.get_value_by_block_index("issuance_asset_serialization_format") + asset_format_length = ledger.get_value_by_block_index("issuance_asset_serialization_length") + # Type 20 standard issuance FORMAT_2 >QQ??If # used for standard issuances and all reissuances - if util.enabled("issuance_backwards_compatibility"): + if ledger.enabled("issuance_backwards_compatibility"): data = message_type.pack(LR_ISSUANCE_ID) - else: + else: data = message_type.pack(ID) - - if description == None and util.enabled("issuance_description_special_null"): + + if description == None and ledger.enabled("issuance_description_special_null"): #a special message is created to be catched by the parse function - curr_format = asset_format + '{}s'.format(len(DESCRIPTION_MARK_BYTE)+len(DESCRIPTION_NULL_ACTION)) + curr_format = asset_format + f'{len(DESCRIPTION_MARK_BYTE) + len(DESCRIPTION_NULL_ACTION)}s' encoded_description = DESCRIPTION_MARK_BYTE+DESCRIPTION_NULL_ACTION.encode('utf-8') else: - if (len(validated_description) <= 42) and not util.enabled('pascal_string_removed'): - curr_format = FORMAT_2 + '{}p'.format(len(validated_description) + 1) + if (len(validated_description) <= 42) and not ledger.enabled('pascal_string_removed'): + curr_format = FORMAT_2 + f'{len(validated_description) + 1}p' else: - curr_format = asset_format + '{}s'.format(len(validated_description)) - + curr_format = asset_format + f'{len(validated_description)}s' + encoded_description = validated_description.encode('utf-8') - - - - + if (asset_format_length <= 19):# callbacks parameters were removed data += struct.pack(curr_format, asset_id, quantity, 1 if divisible else 0, 1 if lock else 0, 1 if reset else 0, encoded_description) elif (asset_format_length <= 26): @@ -383,31 +356,31 @@ def compose (db, source, transfer_destination, asset, quantity, divisible, lock, data += struct.pack(curr_format, asset_id, quantity, 1 if divisible else 0, 1 if lock else 0, 1 if reset else 0, 1 if callable_ else 0, call_date or 0, call_price or 0.0, encoded_description) else: - subasset_format = util.get_value_by_block_index("issuance_subasset_serialization_format",util.CURRENT_BLOCK_INDEX) - subasset_format_length = util.get_value_by_block_index("issuance_subasset_serialization_length",util.CURRENT_BLOCK_INDEX) + subasset_format = ledger.get_value_by_block_index("issuance_subasset_serialization_format", ledger.CURRENT_BLOCK_INDEX) + subasset_format_length = ledger.get_value_by_block_index("issuance_subasset_serialization_length", ledger.CURRENT_BLOCK_INDEX) # Type 21 subasset issuance SUBASSET_FORMAT >QQ?B # Used only for initial subasset issuance # compacts a subasset name to save space compacted_subasset_longname = util.compact_subasset_longname(subasset_longname) compacted_subasset_length = len(compacted_subasset_longname) - if util.enabled("issuance_backwards_compatibility"): + if ledger.enabled("issuance_backwards_compatibility"): data = message_type.pack(LR_SUBASSET_ID) - else: + else: data = message_type.pack(SUBASSET_ID) - - if description == None and util.enabled("issuance_description_special_null"): + + if description == None and ledger.enabled("issuance_description_special_null"): #a special message is created to be catched by the parse function - curr_format = subasset_format + '{}s'.format(compacted_subasset_length) + '{}s'.format(len(DESCRIPTION_MARK_BYTE)+len(DESCRIPTION_NULL_ACTION)) + curr_format = subasset_format + f'{compacted_subasset_length}s' + f'{len(DESCRIPTION_MARK_BYTE) + len(DESCRIPTION_NULL_ACTION)}s' encoded_description = DESCRIPTION_MARK_BYTE+DESCRIPTION_NULL_ACTION.encode('utf-8') - else: - curr_format = subasset_format + '{}s'.format(compacted_subasset_length) + '{}s'.format(len(validated_description)) + else: + curr_format = subasset_format + f'{compacted_subasset_length}s' + f'{len(validated_description)}s' encoded_description = validated_description.encode('utf-8') - + if subasset_format_length <= 18: data += struct.pack(curr_format, asset_id, quantity, 1 if divisible else 0, compacted_subasset_length, compacted_subasset_longname, encoded_description) elif subasset_format_length <= 19:# param reset was inserted - data += struct.pack(curr_format, asset_id, quantity, 1 if divisible else 0, 1 if reset else 0, compacted_subasset_length, compacted_subasset_longname, encoded_description) + data += struct.pack(curr_format, asset_id, quantity, 1 if divisible else 0, 1 if reset else 0, compacted_subasset_length, compacted_subasset_longname, encoded_description) elif subasset_format_length <= 20:# param lock was inserted data += struct.pack(curr_format, asset_id, quantity, 1 if divisible else 0, 1 if lock else 0, 1 if reset else 0, compacted_subasset_length, compacted_subasset_longname, encoded_description) @@ -417,37 +390,38 @@ def compose (db, source, transfer_destination, asset, quantity, divisible, lock, destination_outputs = [] return (source, destination_outputs, data) + def parse (db, tx, message, message_type_id): issuance_parse_cursor = db.cursor() - asset_format = util.get_value_by_block_index("issuance_asset_serialization_format",tx['block_index']) - asset_format_length = util.get_value_by_block_index("issuance_asset_serialization_length",tx['block_index']) - subasset_format = util.get_value_by_block_index("issuance_subasset_serialization_format",tx['block_index']) - subasset_format_length = util.get_value_by_block_index("issuance_subasset_serialization_length",tx['block_index']) + asset_format = ledger.get_value_by_block_index("issuance_asset_serialization_format",tx['block_index']) + asset_format_length = ledger.get_value_by_block_index("issuance_asset_serialization_length",tx['block_index']) + subasset_format = ledger.get_value_by_block_index("issuance_subasset_serialization_format",tx['block_index']) + subasset_format_length = ledger.get_value_by_block_index("issuance_subasset_serialization_length",tx['block_index']) # Unpack message. try: subasset_longname = None if message_type_id == LR_SUBASSET_ID or message_type_id == SUBASSET_ID: - if not util.enabled('subassets', block_index=tx['block_index']): - logger.warn("subassets are not enabled at block %s" % tx['block_index']) + if not ledger.enabled('subassets', block_index=tx['block_index']): + logger.warning(f"subassets are not enabled at block {tx['block_index']}") raise exceptions.UnpackError # parse a subasset original issuance message lock = None reset = None - + if subasset_format_length <= 18: asset_id, quantity, divisible, compacted_subasset_length = struct.unpack(subasset_format, message[0:subasset_format_length]) elif subasset_format_length <= 19:# param reset was inserted - asset_id, quantity, divisible, reset, compacted_subasset_length = struct.unpack(subasset_format, message[0:subasset_format_length]) + asset_id, quantity, divisible, reset, compacted_subasset_length = struct.unpack(subasset_format, message[0:subasset_format_length]) elif subasset_format_length <= 20:# param lock was inserted asset_id, quantity, divisible, lock, reset, compacted_subasset_length = struct.unpack(subasset_format, message[0:subasset_format_length]) - + description_length = len(message) - subasset_format_length - compacted_subasset_length if description_length < 0: - logger.warn("invalid subasset length: [issuance] tx [%s]: %s" % (tx['tx_hash'], compacted_subasset_length)) + logger.warning(f"invalid subasset length: [issuance] tx [{tx['tx_hash']}]: {compacted_subasset_length}") raise exceptions.UnpackError - messages_format = '>{}s{}s'.format(compacted_subasset_length, description_length) + messages_format = f'>{compacted_subasset_length}s{description_length}s' compacted_subasset_longname, description = struct.unpack(messages_format, message[subasset_format_length:]) subasset_longname = util.expand_subasset_longname(compacted_subasset_longname) callable_, call_date, call_price = False, 0, 0.0 @@ -461,13 +435,13 @@ def parse (db, tx, message, message_type_id): if description_data[1:].decode('utf-8') == DESCRIPTION_NULL_ACTION: description = None except UnicodeDecodeError: - description = '' + description = '' elif (tx['block_index'] > 283271 or config.TESTNET or config.REGTEST) and len(message) >= asset_format_length: # Protocol change. - if (len(message) - asset_format_length <= 42) and not util.enabled('pascal_string_removed'): - curr_format = asset_format + '{}p'.format(len(message) - asset_format_length) + if (len(message) - asset_format_length <= 42) and not ledger.enabled('pascal_string_removed'): + curr_format = asset_format + f'{len(message) - asset_format_length}p' else: - curr_format = asset_format + '{}s'.format(len(message) - asset_format_length) - + curr_format = asset_format + f'{len(message) - asset_format_length}s' + lock = None reset = None if (asset_format_length <= 19):# callbacks parameters were removed @@ -479,7 +453,7 @@ def parse (db, tx, message, message_type_id): asset_id, quantity, divisible, reset, callable_, call_date, call_price, description = struct.unpack(curr_format, message) elif (asset_format_length <= 28):# param lock was inserted asset_id, quantity, divisible, lock, reset, callable_, call_date, call_price, description = struct.unpack(curr_format, message) - + call_price = round(call_price, 6) # TODO: arbitrary try: description = description.decode('utf-8') @@ -491,28 +465,28 @@ def parse (db, tx, message, message_type_id): if description_data[1:].decode('utf-8') == DESCRIPTION_NULL_ACTION: description = None except UnicodeDecodeError: - description = '' + description = '' else: if len(message) != LENGTH_1: raise exceptions.UnpackError asset_id, quantity, divisible = struct.unpack(FORMAT_1, message) lock, reset, callable_, call_date, call_price, description = False, False, False, 0, 0.0, '' try: - asset = util.generate_asset_name(asset_id, tx['block_index']) - + asset = ledger.generate_asset_name(asset_id, tx['block_index']) + ##This is for backwards compatibility with assets names longer than 12 characters if asset.startswith('A'): - namedAsset = util.get_asset_name(db, asset_id, tx['block_index']) - - if (namedAsset != 0): - asset = namedAsset - + named_asset = ledger.get_asset_name(db, asset_id, tx['block_index']) + + if (named_asset != 0): + asset = named_asset + if description == None: try: - description = util.get_asset_description(db, asset) + description = ledger.get_asset_description(db, asset) except exceptions.AssetError: description = "" - + status = 'valid' except exceptions.AssetIDError: asset = None @@ -538,29 +512,27 @@ def parse (db, tx, message, message_type_id): call_date, call_price, problems, fee, description, divisible, lock, reset, reissuance, reissued_asset_longname = validate(db, tx['source'], tx['destination'], asset, quantity, divisible, lock, reset, callable_, call_date, call_price, description, subasset_parent, subasset_longname, block_index=tx['block_index']) if problems: status = 'invalid: ' + '; '.join(problems) - if not util.enabled('integer_overflow_fix', block_index=tx['block_index']) and 'total quantity overflow' in problems: + if not ledger.enabled('integer_overflow_fix', block_index=tx['block_index']) and 'total quantity overflow' in problems: quantity = 0 # Reset? - if (status == 'valid') and reset and util.enabled("cip03", tx['block_index']): - balances_cursor = issuance_parse_cursor.execute('''SELECT * FROM balances WHERE asset = ? AND quantity > 0''', (asset,)) - balances_result = balances_cursor.fetchall() - + if (status == 'valid') and reset and ledger.enabled("cip03", tx['block_index']): + balances_result = ledger.get_asset_balances(db, asset) + if len(balances_result) <= 1: if len(balances_result) == 0: - issuances_cursor = issuance_parse_cursor.execute('''SELECT * FROM issuances WHERE asset = ? ORDER BY tx_index DESC''', (asset,)) - issuances_result = issuances_cursor.fetchall() - + issuances_result = ledger.get_issuances(db, asset=asset, last=True) + owner_balance = 0 owner_address = issuances_result[0]['issuer'] else: owner_balance = balances_result[0]["quantity"] owner_address = balances_result[0]["address"] - + if owner_address == tx['source']: if owner_balance > 0: - util.debit(db, tx['source'], asset, owner_balance, 'reset destroy', tx['tx_hash']) - + ledger.debit(db, tx['source'], asset, owner_balance, tx['tx_index'], 'reset destroy', tx['tx_hash']) + bindings = { 'tx_index': tx['tx_index'], 'tx_hash': tx['tx_hash'], @@ -571,10 +543,10 @@ def parse (db, tx, message, message_type_id): 'tag': "reset", 'status': "valid", 'reset': True, - } + } sql = 'insert into destructions values(:tx_index, :tx_hash, :block_index, :source, :asset, :quantity, :tag, :status)' issuance_parse_cursor.execute(sql, bindings) - + bindings= { 'tx_index': tx['tx_index'], 'tx_hash': tx['tx_hash'], @@ -595,13 +567,13 @@ def parse (db, tx, message, message_type_id): 'reset': True, 'asset_longname': reissued_asset_longname, } - + sql='insert into issuances values(:tx_index, :tx_hash, 0, :block_index, :asset, :quantity, :divisible, :source, :issuer, :transfer, :callable, :call_date, :call_price, :description, :fee_paid, :locked, :status, :asset_longname, :reset)' issuance_parse_cursor.execute(sql, bindings) - + # Credit. if quantity: - util.credit(db, tx['source'], asset, quantity, action="reset issuance", event=tx['tx_hash']) + ledger.credit(db, tx['source'], asset, quantity, tx['tx_index'], action="reset issuance", event=tx['tx_hash']) else: if tx['destination']: @@ -614,7 +586,7 @@ def parse (db, tx, message, message_type_id): # Debit fee. if status == 'valid': - util.debit(db, tx['source'], config.XCP, fee, action="issuance fee", event=tx['tx_hash']) + ledger.debit(db, tx['source'], config.XCP, fee, tx['tx_index'], action="issuance fee", event=tx['tx_hash']) # Lock? if not isinstance(lock,bool): @@ -622,11 +594,7 @@ def parse (db, tx, message, message_type_id): if status == 'valid': if (description and description.lower() == 'lock') or lock: lock = True - cursor = db.cursor() - issuances = list(cursor.execute('''SELECT * FROM issuances \ - WHERE (status = ? AND asset = ?) - ORDER BY tx_index ASC''', ('valid', asset))) - cursor.close() + issuances = ledger.get_issuances(db, asset=asset, status='valid', first=True) if description.lower() == 'lock' and len(issuances) > 0: description = issuances[-1]['description'] # Use last description @@ -672,13 +640,11 @@ def parse (db, tx, message, message_type_id): sql='insert into issuances values(:tx_index, :tx_hash, 0, :block_index, :asset, :quantity, :divisible, :source, :issuer, :transfer, :callable, :call_date, :call_price, :description, :fee_paid, :locked, :status, :asset_longname, :reset)' issuance_parse_cursor.execute(sql, bindings) else: - logger.warn("Not storing [issuance] tx [%s]: %s" % (tx['tx_hash'], status)) - logger.debug("Bindings: %s" % (json.dumps(bindings), )) + logger.debug(f"Not storing [issuance] tx [{tx['tx_hash']}]: {status}") + logger.debug(f"Bindings: {json.dumps(bindings)}") # Credit. if status == 'valid' and quantity: - util.credit(db, tx['source'], asset, quantity, action="issuance", event=tx['tx_hash']) + ledger.credit(db, tx['source'], asset, quantity, tx['tx_index'], action="issuance", event=tx['tx_hash']) issuance_parse_cursor.close() - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/messages/order.py b/counterparty-lib/counterpartylib/lib/messages/order.py similarity index 55% rename from counterpartylib/lib/messages/order.py rename to counterparty-lib/counterpartylib/lib/messages/order.py index 97ce0feae7..91edc1e8a3 100644 --- a/counterpartylib/lib/messages/order.py +++ b/counterparty-lib/counterpartylib/lib/messages/order.py @@ -5,16 +5,18 @@ import json import struct import decimal -D = decimal.Decimal import logging -logger = logging.getLogger(__name__) from counterpartylib.lib import config from counterpartylib.lib import exceptions from counterpartylib.lib import util -from counterpartylib.lib import backend +from counterpartylib.lib import ledger from counterpartylib.lib import log from counterpartylib.lib import message_type +from counterpartylib.lib import database + +logger = logging.getLogger(config.LOGGER_NAME) +D = decimal.Decimal FORMAT = '>QQQQHQ' LENGTH = 8 + 8 + 8 + 8 + 2 + 8 @@ -23,221 +25,214 @@ def initialise(db): cursor = db.cursor() + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'block_index_idx', + 'index_hash_idx', + 'expire_idx', + 'give_status_idx', + 'source_give_status_idx', + 'give_get_status_idx', + 'source_idx', + 'give_asset_idx', + 'match_expire_idx' + 'forward_status_idx', + 'backward_status_idx', + 'id_idx', + 'tx0_address_idx', + 'tx1_address_idx', + ]) + # Orders - cursor.execute('''CREATE TABLE IF NOT EXISTS orders( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - give_asset TEXT, - give_quantity INTEGER, - give_remaining INTEGER, - get_asset TEXT, - get_quantity INTEGER, - get_remaining INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_required INTEGER, - fee_required_remaining INTEGER, - fee_provided INTEGER, - fee_provided_remaining INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON orders (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - index_hash_idx ON orders (tx_index, tx_hash) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - expire_idx ON orders (expire_index, status) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - give_status_idx ON orders (give_asset, status) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_give_status_idx ON orders (source, give_asset, status) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - give_get_status_idx ON orders (get_asset, give_asset, status) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_idx ON orders (source) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - give_asset_idx ON orders (give_asset) - ''') + create_orders_query = '''CREATE TABLE IF NOT EXISTS orders( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + give_asset TEXT, + give_quantity INTEGER, + give_remaining INTEGER, + get_asset TEXT, + get_quantity INTEGER, + get_remaining INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_required INTEGER, + fee_required_remaining INTEGER, + fee_provided INTEGER, + fee_provided_remaining INTEGER, + status TEXT) + ''' + # create table + cursor.execute(create_orders_query) + # migrate old table + if database.field_is_pk(cursor, 'orders', 'tx_index'): + database.copy_old_table(cursor, 'orders', create_orders_query) + # create indexes + database.create_indexes(cursor, 'orders', [ + ['block_index'], + ['tx_index', 'tx_hash'], + ['give_asset'], + ['tx_hash'], + ['expire_index'], + ['get_asset', 'give_asset'], + ['status'], + ['source', 'give_asset'], + ]) # Order Matches - cursor.execute('''CREATE TABLE IF NOT EXISTS order_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - forward_asset TEXT, - forward_quantity INTEGER, - backward_asset TEXT, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - match_expire_idx ON order_matches (status, match_expire_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - forward_status_idx ON order_matches (forward_asset, status) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - backward_status_idx ON order_matches (backward_asset, status) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - id_idx ON order_matches (id) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - tx0_address_idx ON order_matches (tx0_address) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - tx1_address_idx ON order_matches (tx1_address) - ''') + create_order_matches_query = '''CREATE TABLE IF NOT EXISTS order_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + forward_asset TEXT, + forward_quantity INTEGER, + backward_asset TEXT, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_paid INTEGER, + status TEXT) + ''' + # create table + cursor.execute(create_order_matches_query) + # migrate old table + if database.field_is_pk(cursor, 'order_matches', 'id'): + database.copy_old_table(cursor, 'order_matches', create_order_matches_query) + # create indexes + database.create_indexes(cursor, 'order_matches', [ + ['block_index'], + ['forward_asset'], + ['backward_asset'], + ['id'], + ['tx0_address', 'forward_asset'], + ['tx1_address', 'backward_asset'], + ['match_expire_index'], + ['status'], + ['tx0_hash'], + ['tx1_hash'], + ]) # Order Expirations - cursor.execute('''CREATE TABLE IF NOT EXISTS order_expirations( - order_index INTEGER PRIMARY KEY, - order_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (order_index, order_hash) REFERENCES orders(tx_index, tx_hash)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON order_expirations (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_idx ON order_expirations (source) - ''') + create_order_expirations_query = '''CREATE TABLE IF NOT EXISTS order_expirations( + order_hash TEXT PRIMARY KEY, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)) + ''' + # create table + cursor.execute(create_order_expirations_query) + # migrate old table + if database.has_fk_on(cursor, "order_expirations", "orders.tx_index"): + database.copy_old_table(cursor, 'order_expirations', create_order_expirations_query) + # create indexes + database.create_indexes(cursor, 'order_expirations', [ + ['block_index'], + ['source'], + ]) # Order Match Expirations - cursor.execute('''CREATE TABLE IF NOT EXISTS order_match_expirations( - order_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (order_match_id) REFERENCES order_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON order_match_expirations (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - tx0_address_idx ON order_match_expirations (tx0_address) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - tx1_address_idx ON order_match_expirations (tx1_address) - ''') - -def exact_penalty (db, address, block_index, order_match_id): + create_order_march_expirations_query = '''CREATE TABLE IF NOT EXISTS order_match_expirations( + order_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)) + ''' + # create table + cursor.execute(create_order_march_expirations_query) + # migrate old table + if database.has_fk_on(cursor, "order_match_expirations", "order_matches.id"): + database.copy_old_table(cursor, 'order_match_expirations', create_order_march_expirations_query) + # create indexes + database.create_indexes(cursor, 'order_match_expirations', [ + ['block_index'], + ['tx0_address'], + ['tx1_address'], + ]) + + +def exact_penalty (db, address, block_index, order_match_id, tx_index): # Penalize addresses that don’t make BTC payments. If an address lets an # order match expire, expire sell BTC orders from that address. cursor = db.cursor() # Orders. - bad_orders = list(cursor.execute('''SELECT * FROM orders \ - WHERE (source = ? AND give_asset = ? AND status = ?)''', - (address, config.BTC, 'open'))) + bad_orders = ledger.get_open_btc_orders(db, address) for bad_order in bad_orders: - cancel_order(db, bad_order, 'expired', block_index) + cancel_order(db, bad_order, 'expired', block_index, tx_index) if not (block_index >= 314250 or config.TESTNET or config.REGTEST): # Protocol change. # Order matches. - bad_order_matches = list(cursor.execute('''SELECT * FROM order_matches \ - WHERE ((tx0_address = ? AND forward_asset = ?) OR (tx1_address = ? AND backward_asset = ?)) AND (status = ?)''', - (address, config.BTC, address, config.BTC, 'pending'))) + bad_order_matches = ledger.get_pending_btc_order_matches(db, address) for bad_order_match in bad_order_matches: - cancel_order_match(db, bad_order_match, 'expired', block_index) + cancel_order_match(db, bad_order_match, 'expired', block_index, tx_index) cursor.close() return -def cancel_order (db, order, status, block_index): +def cancel_order (db, order, status, block_index, tx_index): cursor = db.cursor() # Update status of order. - bindings = { + set_data = { 'status': status, - 'tx_hash': order['tx_hash'] } - sql='update orders set status = :status where tx_hash = :tx_hash' - cursor.execute(sql, bindings) - log.message(db, block_index, 'update', 'orders', bindings) + ledger.update_order(db, order['tx_hash'], set_data) + + log.message(db, block_index, 'update', 'orders', set_data | {'tx_hash': order['tx_hash']}) if order['give_asset'] != config.BTC: # Can’t credit BTC. - util.credit(db, order['source'], order['give_asset'], order['give_remaining'], action='cancel order', event=order['tx_hash']) + ledger.credit(db, order['source'], order['give_asset'], order['give_remaining'], tx_index, action='cancel order', event=order['tx_hash']) if status == 'expired': # Record offer expiration. bindings = { - 'order_index': order['tx_index'], 'order_hash': order['tx_hash'], 'source': order['source'], 'block_index': block_index } - sql='insert into order_expirations values(:order_index, :order_hash, :source, :block_index)' + sql='insert into order_expirations values(:order_hash, :source, :block_index)' cursor.execute(sql, bindings) cursor.close() -def cancel_order_match (db, order_match, status, block_index): +def cancel_order_match (db, order_match, status, block_index, tx_index): '''The only cancelling is an expiration. ''' - - cursor = db.cursor() - # Skip order matches just expired as a penalty. (Not very efficient.) if not (block_index >= 314250 or config.TESTNET or config.REGTEST): # Protocol change. - order_matches = list(cursor.execute('''SELECT * FROM order_matches \ - WHERE (id = ? AND status = ?)''', - (order_match['id'], 'expired'))) - if order_matches: - cursor.close() + order_matches = ledger.get_order_match(db, id=order_match['id']) + if order_matches and order_matches[0]['status'] == 'expired': return # Update status of order match. - bindings = { + ledger.update_order_match_status(db, order_match['id'], status) + + log.message(db, block_index, 'update', 'order_matches', { 'status': status, 'order_match_id': order_match['id'] - } - sql='update order_matches set status = :status where id = :order_match_id' - cursor.execute(sql, bindings) - log.message(db, block_index, 'update', 'order_matches', bindings) - - order_match_id = util.make_id(order_match['tx0_hash'], order_match['tx1_hash']) + }) # If tx0 is dead, credit address directly; if not, replenish give remaining, get remaining, and fee required remaining. - orders = list(cursor.execute('''SELECT * FROM orders \ - WHERE tx_index = ?''', - (order_match['tx0_index'],))) + orders = ledger.get_order(db, tx_hash=order_match['tx0_hash']) assert len(orders) == 1 tx0_order = orders[0] if tx0_order['status'] in ('expired', 'cancelled'): tx0_order_status = tx0_order['status'] if order_match['forward_asset'] != config.BTC: - util.credit(db, order_match['tx0_address'], + ledger.credit(db, order_match['tx0_address'], order_match['forward_asset'], - order_match['forward_quantity'], action='order {}'.format(tx0_order_status), event=order_match['id']) + order_match['forward_quantity'], tx_index, action=f'order {tx0_order_status}', event=order_match['id']) else: tx0_give_remaining = tx0_order['give_remaining'] + order_match['forward_quantity'] tx0_get_remaining = tx0_order['get_remaining'] + order_match['backward_quantity'] @@ -246,34 +241,30 @@ def cancel_order_match (db, order_match, status, block_index): else: tx0_fee_required_remaining = tx0_order['fee_required_remaining'] tx0_order_status = tx0_order['status'] - - if (tx0_order_status == 'filled' and util.enabled("reopen_order_when_btcpay_expires_fix", block_index)): #This case could happen if a BTCpay expires and before the expiration, the order was filled by a correct BTCpay + + if (tx0_order_status == 'filled' and ledger.enabled("reopen_order_when_btcpay_expires_fix", block_index)): #This case could happen if a BTCpay expires and before the expiration, the order was filled by a correct BTCpay tx0_order_status = 'open' # So, we have to open the order again - - - bindings = { + + set_data = { 'give_remaining': tx0_give_remaining, 'get_remaining': tx0_get_remaining, 'status': tx0_order_status, 'fee_required_remaining': tx0_fee_required_remaining, - 'tx_hash': order_match['tx0_hash'] } - sql='update orders set give_remaining = :give_remaining, get_remaining = :get_remaining, fee_required_remaining = :fee_required_remaining, status = :status where tx_hash = :tx_hash' - cursor.execute(sql, bindings) - log.message(db, block_index, 'update', 'orders', bindings) + ledger.update_order(db, order_match['tx0_hash'], set_data) + + log.message(db, block_index, 'update', 'orders', set_data | {'tx_hash': order_match['tx0_hash']}) # If tx1 is dead, credit address directly; if not, replenish give remaining, get remaining, and fee required remaining. - orders = list(cursor.execute('''SELECT * FROM orders \ - WHERE tx_index = ?''', - (order_match['tx1_index'],))) + orders = ledger.get_order(db, tx_hash=order_match['tx1_hash']) assert len(orders) == 1 tx1_order = orders[0] if tx1_order['status'] in ('expired', 'cancelled'): tx1_order_status = tx1_order['status'] if order_match['backward_asset'] != config.BTC: - util.credit(db, order_match['tx1_address'], + ledger.credit(db, order_match['tx1_address'], order_match['backward_asset'], - order_match['backward_quantity'], action='order {}'.format(tx1_order_status), event=order_match['id']) + order_match['backward_quantity'], tx_index, action=f'order {tx1_order_status}', event=order_match['id']) else: tx1_give_remaining = tx1_order['give_remaining'] + order_match['backward_quantity'] tx1_get_remaining = tx1_order['get_remaining'] + order_match['forward_quantity'] @@ -282,19 +273,18 @@ def cancel_order_match (db, order_match, status, block_index): else: tx1_fee_required_remaining = tx1_order['fee_required_remaining'] tx1_order_status = tx1_order['status'] - if (tx1_order_status == 'filled' and util.enabled("reopen_order_when_btcpay_expires_fix", block_index)): #This case could happen if a BTCpay expires and before the expiration, the order was filled by a correct BTCpay + if (tx1_order_status == 'filled' and ledger.enabled("reopen_order_when_btcpay_expires_fix", block_index)): #This case could happen if a BTCpay expires and before the expiration, the order was filled by a correct BTCpay tx1_order_status = 'open' # So, we have to open the order again - - bindings = { + + set_data = { 'give_remaining': tx1_give_remaining, 'get_remaining': tx1_get_remaining, 'status': tx1_order_status, 'fee_required_remaining': tx1_fee_required_remaining, - 'tx_hash': order_match['tx1_hash'] } - sql='update orders set give_remaining = :give_remaining, get_remaining = :get_remaining, fee_required_remaining = :fee_required_remaining, status = :status where tx_hash = :tx_hash' - cursor.execute(sql, bindings) - log.message(db, block_index, 'update', 'orders', bindings) + ledger.update_order(db, order_match['tx1_hash'], set_data) + + log.message(db, block_index, 'update', 'orders', set_data | {'tx_hash': order_match['tx1_hash']}) if block_index < 286500: # Protocol change. # Sanity check: one of the two must have expired. @@ -305,22 +295,19 @@ def cancel_order_match (db, order_match, status, block_index): # Penalize tardiness. if block_index >= 313900 or config.TESTNET or config.REGTEST: # Protocol change. if tx0_order['status'] == 'expired' and order_match['forward_asset'] == config.BTC: - exact_penalty(db, order_match['tx0_address'], block_index, order_match['id']) + exact_penalty(db, order_match['tx0_address'], block_index, order_match['id'], tx_index) if tx1_order['status'] == 'expired' and order_match['backward_asset'] == config.BTC: - exact_penalty(db, order_match['tx1_address'], block_index, order_match['id']) + exact_penalty(db, order_match['tx1_address'], block_index, order_match['id'], tx_index) # Re‐match. if block_index >= 310000 or config.TESTNET or config.REGTEST: # Protocol change. if not (block_index >= 315000 or config.TESTNET or config.REGTEST): # Protocol change. - cursor.execute('''SELECT * FROM transactions\ - WHERE tx_hash = ?''', (tx0_order['tx_hash'],)) - match(db, list(cursor)[0], block_index) - cursor.execute('''SELECT * FROM transactions\ - WHERE tx_hash = ?''', (tx1_order['tx_hash'],)) - match(db, list(cursor)[0], block_index) + match(db, ledger.get_transactions(db, tx_hash=tx0_order['tx_hash'])[0], block_index) + match(db, ledger.get_transactions(db, tx_hash=tx1_order['tx_hash'])[0], block_index) if status == 'expired': # Record order match expiration. + cursor = db.cursor() bindings = { 'order_match_id': order_match['id'], 'tx0_address': order_match['tx0_address'], @@ -329,8 +316,7 @@ def cancel_order_match (db, order_match, status, block_index): } sql='insert into order_match_expirations values(:order_match_id, :tx0_address, :tx1_address, :block_index)' cursor.execute(sql, bindings) - - cursor.close() + cursor.close() def validate (db, source, give_asset, give_quantity, get_asset, get_quantity, expiration, fee_required, block_index): @@ -342,7 +328,7 @@ def validate (db, source, give_asset, give_quantity, get_asset, get_quantity, ex problems.append('integer overflow') if give_asset == config.BTC and get_asset == config.BTC: - problems.append('cannot trade {} for itself'.format(config.BTC)) + problems.append(f'cannot trade {config.BTC} for itself') if not isinstance(give_quantity, int): problems.append('give_quantity must be in satoshis') @@ -366,12 +352,10 @@ def validate (db, source, give_asset, give_quantity, get_asset, get_quantity, ex if not give_quantity or not get_quantity: problems.append('zero give or zero get') - cursor.execute('select * from issuances where (status = ? and asset = ?)', ('valid', give_asset)) - if give_asset not in (config.BTC, config.XCP) and not cursor.fetchall(): - problems.append('no such asset to give ({})'.format(give_asset)) - cursor.execute('select * from issuances where (status = ? and asset = ?)', ('valid', get_asset)) - if get_asset not in (config.BTC, config.XCP) and not cursor.fetchall(): - problems.append('no such asset to get ({})'.format(get_asset)) + if give_asset not in (config.BTC, config.XCP) and not ledger.get_issuances(db, status='valid', asset=give_asset): + problems.append(f'no such asset to give ({give_asset})') + if get_asset not in (config.BTC, config.XCP) and not ledger.get_issuances(db, status='valid', asset=get_asset): + problems.append(f'no such asset to get ({get_asset})') if expiration > config.MAX_EXPIRATION: problems.append('expiration overflow') @@ -382,20 +366,20 @@ def compose (db, source, give_asset, give_quantity, get_asset, get_quantity, exp cursor = db.cursor() # resolve subassets - give_asset = util.resolve_subasset_longname(db, give_asset) - get_asset = util.resolve_subasset_longname(db, get_asset) + give_asset = ledger.resolve_subasset_longname(db, give_asset) + get_asset = ledger.resolve_subasset_longname(db, get_asset) # Check balance. if give_asset != config.BTC: - balances = list(cursor.execute('''SELECT * FROM balances WHERE (address = ? AND asset = ?)''', (source, give_asset))) - if (not balances or balances[0]['quantity'] < give_quantity): + balance = ledger.get_balance(db, source, give_asset) + if balance < give_quantity: raise exceptions.ComposeError('insufficient funds') - problems = validate(db, source, give_asset, give_quantity, get_asset, get_quantity, expiration, fee_required, util.CURRENT_BLOCK_INDEX) + problems = validate(db, source, give_asset, give_quantity, get_asset, get_quantity, expiration, fee_required, ledger.CURRENT_BLOCK_INDEX) if problems: raise exceptions.ComposeError(problems) - give_id = util.get_asset_id(db, give_asset, util.CURRENT_BLOCK_INDEX) - get_id = util.get_asset_id(db, get_asset, util.CURRENT_BLOCK_INDEX) + give_id = ledger.get_asset_id(db, give_asset, ledger.CURRENT_BLOCK_INDEX) + get_id = ledger.get_asset_id(db, get_asset, ledger.CURRENT_BLOCK_INDEX) data = message_type.pack(ID) data += struct.pack(FORMAT, give_id, give_quantity, get_id, get_quantity, expiration, fee_required) @@ -410,8 +394,8 @@ def parse (db, tx, message): if len(message) != LENGTH: raise exceptions.UnpackError give_id, give_quantity, get_id, get_quantity, expiration, fee_required = struct.unpack(FORMAT, message) - give_asset = util.get_asset_name(db, give_id, tx['block_index']) - get_asset = util.get_asset_name(db, get_id, tx['block_index']) + give_asset = ledger.get_asset_name(db, give_id, tx['block_index']) + get_asset = ledger.get_asset_name(db, get_id, tx['block_index']) status = 'open' except (exceptions.UnpackError, exceptions.AssetNameError, struct.error) as e: give_asset, give_quantity, get_asset, get_quantity, expiration, fee_required = 0, 0, 0, 0, 0, 0 @@ -420,19 +404,16 @@ def parse (db, tx, message): price = 0 if status == 'open': try: - price = util.price(get_quantity, give_quantity) + price = ledger.price(get_quantity, give_quantity) except ZeroDivisionError: price = 0 # Overorder - order_parse_cursor.execute('''SELECT * FROM balances \ - WHERE (address = ? AND asset = ?)''', (tx['source'], give_asset)) - balances = list(order_parse_cursor) + balance = ledger.get_balance(db, tx['source'], give_asset) if give_asset != config.BTC: - if not balances: + if balance == 0: give_quantity = 0 else: - balance = balances[0]['quantity'] if balance < give_quantity: give_quantity = balance get_quantity = int(price * give_quantity) @@ -440,9 +421,9 @@ def parse (db, tx, message): problems = validate(db, tx['source'], give_asset, give_quantity, get_asset, get_quantity, expiration, fee_required, tx['block_index']) if problems: status = 'invalid: ' + '; '.join(problems) - if util.enabled('btc_order_minimum'): + if ledger.enabled('btc_order_minimum'): min_btc_quantity = 0.001 * config.UNIT # 0.001 BTC - if util.enabled('btc_order_minimum_adjustment_1'): + if ledger.enabled('btc_order_minimum_adjustment_1'): min_btc_quantity = 0.00001 * config.UNIT # 0.00001 BTC if (give_asset == config.BTC and give_quantity < min_btc_quantity) or (get_asset == config.BTC and get_quantity < min_btc_quantity): @@ -454,7 +435,7 @@ def parse (db, tx, message): # Debit give quantity. (Escrow.) if status == 'open': if give_asset != config.BTC: # No need (or way) to debit BTC. - util.debit(db, tx['source'], give_asset, give_quantity, action='open order', event=tx['tx_hash']) + ledger.debit(db, tx['source'], give_asset, give_quantity, tx['tx_index'], action='open order', event=tx['tx_hash']) # Add parsed transaction to message-type–specific table. bindings = { @@ -480,8 +461,8 @@ def parse (db, tx, message): sql = 'insert into orders values(:tx_index, :tx_hash, :block_index, :source, :give_asset, :give_quantity, :give_remaining, :get_asset, :get_quantity, :get_remaining, :expiration, :expire_index, :fee_required, :fee_required_remaining, :fee_provided, :fee_provided_remaining, :status)' order_parse_cursor.execute(sql, bindings) else: - logger.warn("Not storing [order] tx [%s]: %s" % (tx['tx_hash'], status)) - logger.debug("Bindings: %s" % (json.dumps(bindings), )) + logger.debug(f"Not storing [order] tx [{tx['tx_hash']}]: {status}") + logger.debug(f"Bindings: {json.dumps(bindings)}") # Match. if status == 'open' and tx['block_index'] != config.MEMPOOL_BLOCK_INDEX: @@ -489,31 +470,34 @@ def parse (db, tx, message): order_parse_cursor.close() -def match (db, tx, block_index=None): +def match (db, tx, block_index = None): cursor = db.cursor() # Get order in question. - orders = list(cursor.execute('''SELECT * FROM orders\ - WHERE (tx_index = ? AND status = ?)''', (tx['tx_index'], 'open'))) + orders = ledger.get_order(db, tx_hash=tx['tx_hash']) if not orders: cursor.close() return else: assert len(orders) == 1 - tx1 = orders[0] + if orders[0]['status'] != 'open': + cursor.close() + return - cursor.execute('''SELECT * FROM orders \ - WHERE (give_asset=? AND get_asset=? AND status=? AND tx_hash != ?)''', - (tx1['get_asset'], tx1['give_asset'], 'open', tx1['tx_hash'])) + tx1 = orders[0] tx1_give_remaining = tx1['give_remaining'] tx1_get_remaining = tx1['get_remaining'] - order_matches = cursor.fetchall() + order_matches = ledger.get_matching_orders(db, + tx1['tx_hash'], + give_asset=tx1['give_asset'], + get_asset=tx1['get_asset']) + if tx['block_index'] > 284500 or config.TESTNET or config.REGTEST: # Protocol change. order_matches = sorted(order_matches, key=lambda x: x['tx_index']) # Sort by tx index second. - order_matches = sorted(order_matches, key=lambda x: util.price(x['get_quantity'], x['give_quantity'])) # Sort by price first. + order_matches = sorted(order_matches, key=lambda x: ledger.price(x['get_quantity'], x['give_quantity'])) # Sort by price first. # Get fee remaining. tx1_fee_required_remaining = tx1['fee_required_remaining'] @@ -523,7 +507,10 @@ def match (db, tx, block_index=None): for tx0 in order_matches: order_match_id = util.make_id(tx0['tx_hash'], tx1['tx_hash']) if not block_index: - block_index = max(tx0['block_index'], tx1['block_index']) + block_index = max( + ledger.get_order_first_block_index(cursor, tx0['tx_hash']), + ledger.get_order_first_block_index(cursor, tx1['tx_hash']), + ) if tx1_status != 'open': break logger.debug('Considering: ' + tx0['tx_hash']) @@ -531,14 +518,10 @@ def match (db, tx, block_index=None): tx0_get_remaining = tx0['get_remaining'] # Ignore previous matches. (Both directions, just to be sure.) - cursor.execute('''SELECT * FROM order_matches - WHERE id = ? ''', (util.make_id(tx0['tx_hash'], tx1['tx_hash']), )) - if list(cursor): + if ledger.get_order_match(db, id=util.make_id(tx0['tx_hash'], tx1['tx_hash'])): logger.debug('Skipping: previous match') continue - cursor.execute('''SELECT * FROM order_matches - WHERE id = ? ''', (util.make_id(tx1['tx_hash'], tx0['tx_hash']), )) - if list(cursor): + if ledger.get_order_match(db, id=util.make_id(tx1['tx_hash'], tx0['tx_hash'])): logger.debug('Skipping: previous match') continue @@ -572,22 +555,22 @@ def match (db, tx, block_index=None): # If the prices agree, make the trade. The found order sets the price, # and they trade as much as they can. - tx0_price = util.price(tx0['get_quantity'], tx0['give_quantity']) - tx1_price = util.price(tx1['get_quantity'], tx1['give_quantity']) - tx1_inverse_price = util.price(tx1['give_quantity'], tx1['get_quantity']) + tx0_price = ledger.price(tx0['get_quantity'], tx0['give_quantity']) + tx1_price = ledger.price(tx1['get_quantity'], tx1['give_quantity']) + tx1_inverse_price = ledger.price(tx1['give_quantity'], tx1['get_quantity']) # Protocol change. - if tx['block_index'] < 286000: tx1_inverse_price = util.price(1, tx1_price) + if tx['block_index'] < 286000: tx1_inverse_price = ledger.price(1, tx1_price) - logger.debug('Tx0 Price: {}; Tx1 Inverse Price: {}'.format(float(tx0_price), float(tx1_inverse_price))) + logger.debug(f'Tx0 Price: {float(tx0_price)}; Tx1 Inverse Price: {float(tx1_inverse_price)}') if tx0_price > tx1_inverse_price: logger.debug('Skipping: price mismatch.') else: - logger.debug('Potential forward quantities: {}, {}'.format(tx0_give_remaining, int(util.price(tx1_give_remaining, tx0_price)))) - forward_quantity = int(min(tx0_give_remaining, int(util.price(tx1_give_remaining, tx0_price)))) - logger.debug('Forward Quantity: {}'.format(forward_quantity)) + logger.debug(f'Potential forward quantities: {tx0_give_remaining}, {int(ledger.price(tx1_give_remaining, tx0_price))}') + forward_quantity = int(min(tx0_give_remaining, int(ledger.price(tx1_give_remaining, tx0_price)))) + logger.debug(f'Forward Quantity: {forward_quantity}') backward_quantity = round(forward_quantity * tx0_price) - logger.debug('Backward Quantity: {}'.format(backward_quantity)) + logger.debug(f'Backward Quantity: {backward_quantity}') if not forward_quantity: logger.debug('Skipping: zero forward quantity.') @@ -602,7 +585,7 @@ def match (db, tx, block_index=None): if block_index >= 313900 or config.TESTNET or config.REGTEST: # Protocol change. min_btc_quantity = 0.001 * config.UNIT # 0.001 BTC if (forward_asset == config.BTC and forward_quantity <= min_btc_quantity) or (backward_asset == config.BTC and backward_quantity <= min_btc_quantity): - logger.debug('Skipping: below minimum {} quantity'.format(config.BTC)) + logger.debug(f'Skipping: below minimum {config.BTC} quantity') continue # Check and update fee remainings. @@ -611,11 +594,11 @@ def match (db, tx, block_index=None): if tx1['get_asset'] == config.BTC: if block_index >= 310500 or config.TESTNET or config.REGTEST: # Protocol change. - fee = int(tx1['fee_required'] * util.price(backward_quantity, tx1['give_quantity'])) + fee = int(tx1['fee_required'] * ledger.price(backward_quantity, tx1['give_quantity'])) else: - fee = int(tx1['fee_required_remaining'] * util.price(forward_quantity, tx1_get_remaining)) + fee = int(tx1['fee_required_remaining'] * ledger.price(forward_quantity, tx1_get_remaining)) - logger.debug('Tx0 fee provided remaining: {}; required fee: {}'.format(tx0_fee_provided_remaining / config.UNIT, fee / config.UNIT)) + logger.debug(f'Tx0 fee provided remaining: {tx0_fee_provided_remaining / config.UNIT}; required fee: {fee / config.UNIT}') if tx0_fee_provided_remaining < fee: logger.debug('Skipping: tx0 fee provided remaining is too low.') continue @@ -627,11 +610,11 @@ def match (db, tx, block_index=None): elif tx1['give_asset'] == config.BTC: if block_index >= 310500 or config.TESTNET or config.REGTEST: # Protocol change. - fee = int(tx0['fee_required'] * util.price(backward_quantity, tx0['give_quantity'])) + fee = int(tx0['fee_required'] * ledger.price(backward_quantity, tx0['give_quantity'])) else: - fee = int(tx0['fee_required_remaining'] * util.price(backward_quantity, tx0_get_remaining)) + fee = int(tx0['fee_required_remaining'] * ledger.price(backward_quantity, tx0_get_remaining)) - logger.debug('Tx1 fee provided remaining: {}; required fee: {}'.format(tx1_fee_provided_remaining / config.UNIT, fee / config.UNIT)) + logger.debug(f'Tx1 fee provided remaining: {tx1_fee_provided_remaining / config.UNIT}; required fee: {fee / config.UNIT}') if tx1_fee_provided_remaining < fee: logger.debug('Skipping: tx1 fee provided remaining is too low.') continue @@ -651,10 +634,10 @@ def match (db, tx, block_index=None): else: status = 'completed' # Credit. - util.credit(db, tx1['source'], tx1['get_asset'], - forward_quantity, action='order match', event=order_match_id) - util.credit(db, tx0['source'], tx0['get_asset'], - backward_quantity, action='order match', event=order_match_id) + ledger.credit(db, tx1['source'], tx1['get_asset'], + forward_quantity, tx['block_index'], action='order match', event=order_match_id) + ledger.credit(db, tx0['source'], tx0['get_asset'], + backward_quantity, tx['block_index'], action='order match', event=order_match_id) # Debit the order, even if it involves giving bitcoins, and so one # can't debit the sending account. @@ -671,35 +654,33 @@ def match (db, tx, block_index=None): if tx0['give_asset'] != config.BTC and tx0['get_asset'] != config.BTC: # Fill order, and recredit give_remaining. tx0_status = 'filled' - util.credit(db, tx0['source'], tx0['give_asset'], tx0_give_remaining, event=tx1['tx_hash'], action='filled') - bindings = { + ledger.credit(db, tx0['source'], tx0['give_asset'], tx0_give_remaining, tx['block_index'], event=tx1['tx_hash'], action='filled') + set_data = { 'give_remaining': tx0_give_remaining, 'get_remaining': tx0_get_remaining, 'fee_required_remaining': tx0_fee_required_remaining, 'fee_provided_remaining': tx0_fee_provided_remaining, 'status': tx0_status, - 'tx_hash': tx0['tx_hash'] } - sql='update orders set give_remaining = :give_remaining, get_remaining = :get_remaining, fee_required_remaining = :fee_required_remaining, fee_provided_remaining = :fee_provided_remaining, status = :status where tx_hash = :tx_hash' - cursor.execute(sql, bindings) - log.message(db, block_index, 'update', 'orders', bindings) + ledger.update_order(db, tx0['tx_hash'], set_data) + + log.message(db, block_index, 'update', 'orders', set_data | {'tx_hash': tx0['tx_hash']}) # tx1 if tx1_give_remaining <= 0 or (tx1_get_remaining <= 0 and (block_index >= 292000 or config.TESTNET or config.REGTEST)): # Protocol change if tx1['give_asset'] != config.BTC and tx1['get_asset'] != config.BTC: # Fill order, and recredit give_remaining. tx1_status = 'filled' - util.credit(db, tx1['source'], tx1['give_asset'], tx1_give_remaining, event=tx0['tx_hash'], action='filled') - bindings = { + ledger.credit(db, tx1['source'], tx1['give_asset'], tx1_give_remaining, tx['block_index'], event=tx0['tx_hash'], action='filled') + set_data = { 'give_remaining': tx1_give_remaining, 'get_remaining': tx1_get_remaining, 'fee_required_remaining': tx1_fee_required_remaining, 'fee_provided_remaining': tx1_fee_provided_remaining, 'status': tx1_status, - 'tx_hash': tx1['tx_hash'] } - sql='update orders set give_remaining = :give_remaining, get_remaining = :get_remaining, fee_required_remaining = :fee_required_remaining, fee_provided_remaining = :fee_provided_remaining, status = :status where tx_hash = :tx_hash' - cursor.execute(sql, bindings) - log.message(db, block_index, 'update', 'orders', bindings) + ledger.update_order(db, tx1['tx_hash'], set_data) + + log.message(db, block_index, 'update', 'orders', set_data | {'tx_hash': tx1['tx_hash']}) # Calculate when the match will expire. if block_index >= 308000 or config.TESTNET or config.REGTEST: # Protocol change. @@ -744,51 +725,30 @@ def expire (db, block_index): cursor = db.cursor() # Expire orders and give refunds for the quantity give_remaining (if non-zero; if not BTC). - cursor.execute('''SELECT * FROM orders \ - WHERE (status = ? AND expire_index < ?)''', ('open', block_index)) - orders = list(cursor) + orders = ledger.get_orders_to_expire(db, block_index) for order in orders: - cancel_order(db, order, 'expired', block_index) + cancel_order(db, order, 'expired', block_index, 0) # tx_index=0 for block action # Expire order_matches for BTC with no BTC. - cursor.execute('''SELECT * FROM order_matches \ - WHERE (status = ? and match_expire_index < ?)''', ('pending', block_index)) - order_matches = list(cursor) + order_matches = ledger.get_order_matches_to_expire(db, block_index) for order_match in order_matches: - cancel_order_match(db, order_match, 'expired', block_index) + cancel_order_match(db, order_match, 'expired', block_index, 0) # tx_index=0 for block action # Expire btc sell order if match expires - if util.enabled('btc_sell_expire_on_match_expire'): + if ledger.enabled('btc_sell_expire_on_match_expire'): # Check for other pending order matches involving either tx0_hash or tx1_hash - bindings = { - 'status': 'pending', - 'tx0_hash': order_match['tx0_hash'], - 'tx1_hash': order_match['tx1_hash'] - } - sql='select * from order_matches where status = :status and ((tx0_hash in (:tx0_hash, :tx1_hash)) or ((tx1_hash in (:tx0_hash, :tx1_hash))))' - cursor.execute(sql, bindings) - order_matches_pending = cursor.fetchall() + order_matches_pending = ledger.get_pending_order_matches(db, tx0_hash=order_match['tx0_hash'], tx1_hash=order_match['tx1_hash']) # Set BTC sell order status as expired only if there are no pending order matches if len(order_matches_pending) == 0: if order_match['backward_asset'] == "BTC" and order_match['status'] == "expired": - cursor.execute('''SELECT * FROM orders \ - WHERE tx_hash = ?''', (order_match['tx1_hash'],)) - cancel_order(db, list(cursor)[0], 'expired', block_index) + cancel_order(db, ledger.get_order(db, tx_hash=order_match['tx1_hash'])[0], 'expired', block_index) if order_match['forward_asset'] == "BTC" and order_match['status'] == "expired": - cursor.execute('''SELECT * FROM orders \ - WHERE tx_hash = ?''', (order_match['tx0_hash'],)) - cancel_order(db, list(cursor)[0], 'expired', block_index) + cancel_order(db, ledger.get_order(db, tx_hash=order_match['tx0_hash'])[0], 'expired', block_index) if block_index >= 315000 or config.TESTNET or config.REGTEST: # Protocol change. # Re‐match. for order_match in order_matches: - cursor.execute('''SELECT * FROM transactions\ - WHERE tx_hash = ?''', (order_match['tx0_hash'],)) - match(db, list(cursor)[0], block_index) - cursor.execute('''SELECT * FROM transactions\ - WHERE tx_hash = ?''', (order_match['tx1_hash'],)) - match(db, list(cursor)[0], block_index) + match(db, ledger.get_order(db, tx_hash=order_match['tx0_hash'])[0], block_index) + match(db, ledger.get_order(db, tx_hash=order_match['tx1_hash'])[0], block_index) cursor.close() - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/messages/rps.py b/counterparty-lib/counterpartylib/lib/messages/rps.py similarity index 52% rename from counterpartylib/lib/messages/rps.py rename to counterparty-lib/counterpartylib/lib/messages/rps.py index bc7886bde6..6b3b332006 100644 --- a/counterpartylib/lib/messages/rps.py +++ b/counterparty-lib/counterpartylib/lib/messages/rps.py @@ -21,8 +21,7 @@ import struct import decimal -D = decimal.Decimal -import time +import logging import binascii import string @@ -31,6 +30,11 @@ from counterpartylib.lib import util from counterpartylib.lib import log from counterpartylib.lib import message_type +from counterpartylib.lib import ledger +from counterpartylib.lib import database + +logger = logging.getLogger(config.LOGGER_NAME) +D = decimal.Decimal # possible_moves wager move_random_hash expiration FORMAT = '>HQ32sI' @@ -40,150 +44,171 @@ def initialise (db): cursor = db.cursor() + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'source_idx', + 'matching_idx', + 'status_idx', + 'rps_match_expire_idx', + 'rps_tx0_address_idx', + 'rps_tx1_address_idx', + 'block_index_idx', + 'tx0_address_idx', + 'tx1_address_idx', + ]) + # RPS (Rock-Paper-Scissors) - cursor.execute('''CREATE TABLE IF NOT EXISTS rps( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - possible_moves INTEGER, - wager INTEGER, - move_random_hash TEXT, - expiration INTEGER, - expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_idx ON rps (source) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - matching_idx ON rps (wager, possible_moves) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - status_idx ON rps (status) - ''') + create_rps_query = '''CREATE TABLE IF NOT EXISTS rps( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + possible_moves INTEGER, + wager INTEGER, + move_random_hash TEXT, + expiration INTEGER, + expire_index INTEGER, + status TEXT) + ''' + # create table + cursor.execute(create_rps_query) + # migrate old table + if database.field_is_pk(cursor, 'rps', 'tx_index'): + database.copy_old_table(cursor, 'rps', create_rps_query) + # create indexes + database.create_indexes(cursor, 'rps', [ + ['source'], + ['wager', 'possible_moves'], + ['status'], + ['tx_index'], + ['tx_hash'], + ['expire_index'], + ['tx_index', 'tx_hash'], + ]) # RPS Matches - cursor.execute('''CREATE TABLE IF NOT EXISTS rps_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_move_random_hash TEXT, - tx1_move_random_hash TEXT, - wager INTEGER, - possible_moves INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - rps_match_expire_idx ON rps_matches (status, match_expire_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - rps_tx0_address_idx ON rps_matches (tx0_address) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - rps_tx1_address_idx ON rps_matches (tx1_address) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - status_idx ON rps_matches (status) - ''') + create_rps_matches_query = '''CREATE TABLE IF NOT EXISTS rps_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_move_random_hash TEXT, + tx1_move_random_hash TEXT, + wager INTEGER, + possible_moves INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + status TEXT) + ''' + # create table + cursor.execute(create_rps_matches_query) + # migrate old table + if database.field_is_pk(cursor, 'rps_matches', 'id'): + database.copy_old_table(cursor, 'rps_matches', create_rps_matches_query) + # create indexes + database.create_indexes(cursor, 'rps_matches', [ + ['tx0_address'], + ['tx1_address'], + ['status'], + ['id'], + ['match_expire_index'], + ]) # RPS Expirations - cursor.execute('''CREATE TABLE IF NOT EXISTS rps_expirations( - rps_index INTEGER PRIMARY KEY, - rps_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (rps_index, rps_hash) REFERENCES rps(tx_index, tx_hash)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON rps_expirations (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_idx ON rps_expirations (source) - ''') + create_rps_expirations_query = '''CREATE TABLE IF NOT EXISTS rps_expirations( + rps_index INTEGER PRIMARY KEY, + rps_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)) + ''' + # create table + cursor.execute(create_rps_expirations_query) + # migrate old table + if database.has_fk_on(cursor, "rps_expirations", "rps.tx_index"): + database.copy_old_table(cursor, 'rps_expirations', create_rps_expirations_query) + # create indexes + database.create_indexes(cursor, 'rps_expirations', [ + ['block_index'], + ['source'], + ]) # RPS Match Expirations - cursor.execute('''CREATE TABLE IF NOT EXISTS rps_match_expirations( - rps_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (rps_match_id) REFERENCES rps_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON rps_match_expirations (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - tx0_address_idx ON rps_match_expirations (tx0_address) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - tx1_address_idx ON rps_match_expirations (tx1_address) - ''') - - -def cancel_rps (db, rps, status, block_index): + create_rps_match_expirations_query = '''CREATE TABLE IF NOT EXISTS rps_match_expirations( + rps_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)) + ''' + # create table + cursor.execute(create_rps_match_expirations_query) + # migrate old table + if database.has_fk_on(cursor, "rps_match_expirations", "rps_matches.id"): + database.copy_old_table(cursor, 'rps_match_expirations', create_rps_match_expirations_query) + # create indexes + database.create_indexes(cursor, 'rps_match_expirations', [ + ['block_index'], + ['tx0_address'], + ['tx1_address'], + ]) + + +def cancel_rps (db, rps, status, block_index, tx_index): cursor = db.cursor() # Update status of rps. - bindings = { + ledger.update_rps_status(db, rps['tx_hash'], status) + + message_data = { 'status': status, 'tx_hash': rps['tx_hash'] } - sql='''UPDATE rps SET status = :status WHERE tx_hash = :tx_hash''' - cursor.execute(sql, bindings) - log.message(db, block_index, 'update', 'rps', bindings) + log.message(db, block_index, 'update', 'rps', message_data) - util.credit(db, rps['source'], 'XCP', rps['wager'], action='recredit wager', event=rps['tx_hash']) + ledger.credit(db, rps['source'], 'XCP', rps['wager'], tx_index, action='recredit wager', event=rps['tx_hash']) cursor.close() -def update_rps_match_status (db, rps_match, status, block_index): + +def update_rps_match_status (db, rps_match, status, block_index, tx_index): cursor = db.cursor() if status in ['expired', 'concluded: tie']: # Recredit tx0 address. - util.credit(db, rps_match['tx0_address'], 'XCP', - rps_match['wager'], action='recredit wager', event=rps_match['id']) + ledger.credit(db, rps_match['tx0_address'], 'XCP', + rps_match['wager'], tx_index, action='recredit wager', event=rps_match['id']) # Recredit tx1 address. - util.credit(db, rps_match['tx1_address'], 'XCP', - rps_match['wager'], action='recredit wager', event=rps_match['id']) + ledger.credit(db, rps_match['tx1_address'], 'XCP', + rps_match['wager'], tx_index, action='recredit wager', event=rps_match['id']) elif status.startswith('concluded'): # Credit the winner winner = rps_match['tx0_address'] if status == 'concluded: first player wins' else rps_match['tx1_address'] - util.credit(db, winner, 'XCP', - 2 * rps_match['wager'], action='wins', event=rps_match['id']) + ledger.credit(db, winner, 'XCP', + 2 * rps_match['wager'], tx_index, action='wins', event=rps_match['id']) # Update status of rps match. - bindings = { + ledger.update_rps_match_status(db, rps_match['id'], status) + # Log + log.message(db, block_index, 'update', 'rps_matches', { 'status': status, 'rps_match_id': rps_match['id'] - } - sql='UPDATE rps_matches SET status = :status WHERE id = :rps_match_id' - cursor.execute(sql, bindings) - log.message(db, block_index, 'update', 'rps_matches', bindings) + }) cursor.close() + def validate (db, source, possible_moves, wager, move_random_hash, expiration, block_index): problems = [] - if util.enabled('disable_rps'): + if ledger.enabled('disable_rps'): problems.append('rps disabled') if not isinstance(possible_moves, int): @@ -217,9 +242,10 @@ def validate (db, source, possible_moves, wager, move_random_hash, expiration, b return problems + def compose(db, source, possible_moves, wager, move_random_hash, expiration): - problems = validate(db, source, possible_moves, wager, move_random_hash, expiration, util.CURRENT_BLOCK_INDEX) + problems = validate(db, source, possible_moves, wager, move_random_hash, expiration, ledger.CURRENT_BLOCK_INDEX) if problems: raise exceptions.ComposeError(problems) @@ -228,6 +254,7 @@ def compose(db, source, possible_moves, wager, move_random_hash, expiration): return (source, [], data) + def parse(db, tx, message): rps_parse_cursor = db.cursor() # Unpack message. @@ -243,22 +270,19 @@ def parse(db, tx, message): if status == 'open': move_random_hash = binascii.hexlify(move_random_hash).decode('utf8') # Overbet - rps_parse_cursor.execute('''SELECT * FROM balances \ - WHERE (address = ? AND asset = ?)''', (tx['source'], 'XCP')) - balances = list(rps_parse_cursor) - if not balances: + balance = ledger.get_balance(db, tx['source'], 'XCP') + if balance == 0: wager = 0 else: - balance = balances[0]['quantity'] if balance < wager: wager = balance problems = validate(db, tx['source'], possible_moves, wager, move_random_hash, expiration, tx['block_index']) - if problems: status = 'invalid: {}'.format(', '.join(problems)) + if problems: status = f"invalid: {', '.join(problems)}" # Debit quantity wagered. (Escrow.) if status == 'open': - util.debit(db, tx['source'], 'XCP', wager, action="open RPS", event=tx['tx_hash']) + ledger.debit(db, tx['source'], 'XCP', wager, tx['tx_index'], action="open RPS", event=tx['tx_hash']) # Add parsed transaction to message-type–specific table. bindings = { @@ -282,48 +306,47 @@ def parse(db, tx, message): rps_parse_cursor.close() + def match (db, tx, block_index): cursor = db.cursor() # Get rps in question. - rps = list(cursor.execute('''SELECT * FROM rps WHERE tx_index = ? AND status = ?''', (tx['tx_index'], 'open'))) + rps = ledger.get_rps(db, tx['tx_hash']) if not rps: cursor.close() return else: assert len(rps) == 1 + if rps[0]['status'] != 'open': + cursor.close() + return tx1 = rps[0] possible_moves = tx1['possible_moves'] wager = tx1['wager'] tx1_status = 'open' # Get rps match - bindings = (possible_moves, 'open', wager, tx1['source']) # dont match twice same RPS already_matched = [] - old_rps_matches = cursor.execute('''SELECT * FROM rps_matches WHERE tx0_hash = ? OR tx1_hash = ?''', (tx1['tx_hash'], tx1['tx_hash'])) + old_rps_matches = ledger.get_already_matched_rps(db, tx1['tx_hash']) for old_rps_match in old_rps_matches: counter_tx_hash = old_rps_match['tx1_hash'] if tx1['tx_hash'] == old_rps_match['tx0_hash'] else old_rps_match['tx0_hash'] already_matched.append(counter_tx_hash) - already_matched_cond = '' - if already_matched: - already_matched_cond = '''AND tx_hash NOT IN ({})'''.format(','.join(['?' for e in range(0, len(already_matched))])) - bindings += tuple(already_matched) - sql = '''SELECT * FROM rps WHERE (possible_moves = ? AND status = ? AND wager = ? AND source != ? {}) ORDER BY tx_index LIMIT 1'''.format(already_matched_cond) - rps_matches = list(cursor.execute(sql, bindings)) + rps_matches = ledger.get_matching_rps(db, possible_moves, wager, tx1['source'], already_matched) if rps_matches: tx0 = rps_matches[0] # update status for txn in [tx0, tx1]: - bindings = { + ledger.update_rps_status(db, txn['tx_hash'], 'matched') + + message_data = { 'status': 'matched', 'tx_index': txn['tx_index'] } - cursor.execute('''UPDATE rps SET status = :status WHERE tx_index = :tx_index''', bindings) - log.message(db, block_index, 'update', 'rps', bindings) + log.message(db, block_index, 'update', 'rps', message_data) bindings = { 'id': util.make_id(tx0['tx_hash'], tx1['tx_hash']), @@ -353,13 +376,14 @@ def match (db, tx, block_index): cursor.close() + def expire (db, block_index): cursor = db.cursor() # Expire rps and give refunds for the quantity wager. - cursor.execute('''SELECT * FROM rps WHERE (status = ? AND expire_index < ?)''', ('open', block_index)) - for rps in cursor.fetchall(): - cancel_rps(db, rps, 'expired', block_index) + for rps in ledger.get_rps_to_expire(db, block_index): + # use tx_index=0 for block actions + cancel_rps(db, rps, 'expired', block_index, 0) # Record rps expiration. bindings = { @@ -372,9 +396,7 @@ def expire (db, block_index): cursor.execute(sql, bindings) # Expire rps matches - expire_bindings = ('pending', 'pending and resolved', 'resolved and pending', block_index) - cursor.execute('''SELECT * FROM rps_matches WHERE (status IN (?, ?, ?) AND match_expire_index < ?)''', expire_bindings) - for rps_match in cursor.fetchall(): + for rps_match in ledger.get_rps_matches_to_expire(db, block_index): new_rps_match_status = 'expired' # pending loses against resolved @@ -382,7 +404,8 @@ def expire (db, block_index): new_rps_match_status = 'concluded: second player wins' elif rps_match['status'] == 'resolved and pending': new_rps_match_status = 'concluded: first player wins' - update_rps_match_status(db, rps_match, new_rps_match_status, block_index) + # use tx_index=0 for block actions + update_rps_match_status(db, rps_match, new_rps_match_status, block_index, 0) # Record rps match expiration. bindings = { @@ -396,17 +419,15 @@ def expire (db, block_index): # Rematch not expired and not resolved RPS if new_rps_match_status == 'expired': - sql = '''SELECT * FROM rps WHERE tx_hash IN (?, ?) AND status = ? AND expire_index >= ?''' - bindings = (rps_match['tx0_hash'], rps_match['tx1_hash'], 'matched', block_index) - matched_rps = list(cursor.execute(sql, bindings)) + matched_rps = ledger.get_matched_not_expired_rps(db, rps_match['tx0_hash'], rps_match['tx1_hash'], expire_index=block_index) for rps in matched_rps: - cursor.execute('''UPDATE rps SET status = ? WHERE tx_index = ?''', ('open', rps['tx_index'])) + ledger.update_rps_status(db, rps['tx_hash'], 'open') # Re-debit XCP refund by close_rps_match. - util.debit(db, rps['source'], 'XCP', rps['wager'], action='reopen RPS after matching expiration', event=rps_match['id']) + ledger.debit(db, rps['source'], 'XCP', rps['wager'], 0, action='reopen RPS after matching expiration', event=rps_match['id']) # Rematch - match(db, {'tx_index': rps['tx_index']}, block_index) + match(db, { + 'tx_index': rps['tx_index'], + 'tx_hash': rps['tx_hash'], + }, block_index) cursor.close() - - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/messages/rpsresolve.py b/counterparty-lib/counterpartylib/lib/messages/rpsresolve.py similarity index 79% rename from counterpartylib/lib/messages/rpsresolve.py rename to counterparty-lib/counterpartylib/lib/messages/rpsresolve.py index c56f21c9e9..bc96b869d6 100644 --- a/counterpartylib/lib/messages/rpsresolve.py +++ b/counterparty-lib/counterpartylib/lib/messages/rpsresolve.py @@ -3,12 +3,13 @@ import binascii import struct import logging -logger = logging.getLogger(__name__) import string -from counterpartylib.lib import (config, exceptions, util, message_type) +from counterpartylib.lib import (database, exceptions, util, message_type, ledger, config) from . import rps +logger = logging.getLogger(config.LOGGER_NAME) + # move random rps_match_id FORMAT = '>H16s32s32s' LENGTH = 2 + 16 + 32 + 32 @@ -16,6 +17,14 @@ def initialise (db): cursor = db.cursor() + + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'block_index_idx', + 'source_idx', + 'rps_match_id_idx' + ]) + cursor.execute('''CREATE TABLE IF NOT EXISTS rpsresolves( tx_index INTEGER PRIMARY KEY, tx_hash TEXT UNIQUE, @@ -27,15 +36,13 @@ def initialise (db): status TEXT, FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON rpsresolves (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_idx ON rpsresolves (source) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - rps_match_id_idx ON rpsresolves (rps_match_id) - ''') + + database.create_indexes(cursor, 'rpsresolves', [ + ['block_index'], + ['source'], + ['rps_match_id'], + ]) + def validate (db, source, move, random, rps_match_id): problems = [] @@ -54,9 +61,7 @@ def validate (db, source, move, random, rps_match_id): problems.append('random must be 16 bytes in hexadecimal format') return None, None, problems - cursor = db.cursor() - rps_matches = list(cursor.execute('''SELECT * FROM rps_matches WHERE id = ?''', (rps_match_id,))) - cursor.close() + rps_matches = ledger.get_rps_match(db, id=rps_match_id) if len(rps_matches) == 0: problems.append('no such rps match') return None, rps_match, problems @@ -68,7 +73,7 @@ def validate (db, source, move, random, rps_match_id): if move<1: problems.append('move must be greater than 0') elif move > rps_match['possible_moves']: - problems.append('move must be lower than {}'.format(rps_match['possible_moves'])) + problems.append(f"move must be lower than {rps_match['possible_moves']}") if source not in [rps_match['tx0_address'], rps_match['tx1_address']]: problems.append('invalid source address') @@ -83,7 +88,7 @@ def validate (db, source, move, random, rps_match_id): move_random_hash = util.dhash(random_bytes + int(move).to_bytes(2, byteorder='big')) move_random_hash = binascii.hexlify(move_random_hash).decode('utf-8') - if rps_match['tx{}_move_random_hash'.format(txn)] != move_random_hash: + if rps_match[f'tx{txn}_move_random_hash'] != move_random_hash: problems.append('invalid move or random value') return txn, rps_match, problems @@ -98,6 +103,7 @@ def validate (db, source, move, random, rps_match_id): return txn, rps_match, problems + def compose (db, source, move, random, rps_match_id): tx0_hash, tx1_hash = util.parse_id(rps_match_id) @@ -105,9 +111,9 @@ def compose (db, source, move, random, rps_match_id): if problems: raise exceptions.ComposeError(problems) # Warn if down to the wire. - time_left = rps_match['match_expire_index'] - util.CURRENT_BLOCK_INDEX + time_left = rps_match['match_expire_index'] - ledger.CURRENT_BLOCK_INDEX if time_left < 4: - logger.warning('Only {} blocks until that rps match expires. The conclusion might not make into the blockchain in time.'.format(time_left)) + logger.warning(f'Only {time_left} blocks until that rps match expires. The conclusion might not make into the blockchain in time.') tx0_hash_bytes = binascii.unhexlify(bytes(tx0_hash, 'utf-8')) tx1_hash_bytes = binascii.unhexlify(bytes(tx1_hash, 'utf-8')) @@ -116,6 +122,7 @@ def compose (db, source, move, random, rps_match_id): data += struct.pack(FORMAT, move, random_bytes, tx0_hash_bytes, tx1_hash_bytes) return (source, [], data) + def parse (db, tx, message): cursor = db.cursor() @@ -158,9 +165,8 @@ def parse (db, tx, message): if rps_match_status == 'concluded': counter_txn = 0 if txn == 1 else 1 - counter_source = rps_match['tx{}_address'.format(counter_txn)] - sql = '''SELECT * FROM rpsresolves WHERE rps_match_id = ? AND source = ? AND status = ?''' - counter_games = list(cursor.execute(sql, (rps_match_id, counter_source, 'valid'))) + counter_source = rps_match[f'tx{counter_txn}_address'] + counter_games = ledger.get_rpsresolves(db, source=counter_source, status='valid', rps_match_id=rps_match_id) assert len(counter_games) == 1 counter_game = counter_games[0] @@ -169,17 +175,18 @@ def parse (db, tx, message): if winner == 0: rps_match_status = 'concluded: tie' elif winner == counter_game['tx_index']: - rps_match_status = 'concluded: {} player wins'.format('first' if counter_txn == 0 else 'second') + rps_match_status = f"concluded: {'first' if counter_txn == 0 else 'second'} player wins" else: - rps_match_status = 'concluded: {} player wins'.format('first' if txn == 0 else 'second') + rps_match_status = f"concluded: {'first' if txn == 0 else 'second'} player wins" - rps.update_rps_match_status(db, rps_match, rps_match_status, tx['block_index']) + rps.update_rps_match_status(db, rps_match, rps_match_status, tx['block_index'], tx['tx_index']) sql = '''INSERT INTO rpsresolves VALUES (:tx_index, :tx_hash, :block_index, :source, :move, :random, :rps_match_id, :status)''' cursor.execute(sql, rpsresolves_bindings) cursor.close() + # https://en.wikipedia.org/wiki/Rock-paper-scissors#Additional_weapons: def resolve_game(db, resovlerps1, resovlerps2): diff --git a/counterpartylib/lib/messages/send.py b/counterparty-lib/counterpartylib/lib/messages/send.py similarity index 90% rename from counterpartylib/lib/messages/send.py rename to counterparty-lib/counterpartylib/lib/messages/send.py index b777a924c6..dd25fd1962 100644 --- a/counterpartylib/lib/messages/send.py +++ b/counterparty-lib/counterpartylib/lib/messages/send.py @@ -6,11 +6,23 @@ from counterpartylib.lib import util from counterpartylib.lib import exceptions from counterpartylib.lib import config +from counterpartylib.lib import ledger +from counterpartylib.lib import database ID = send1.ID def initialise (db): cursor = db.cursor() + + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'block_index_idx', + 'source_idx', + 'destination_idx', + 'asset_idx', + 'memo_idx', + ]) + cursor.execute('''CREATE TABLE IF NOT EXISTS sends( tx_index INTEGER PRIMARY KEY, tx_hash TEXT UNIQUE, @@ -68,42 +80,36 @@ def initialise (db): cursor.execute('DROP TABLE sends') cursor.execute('ALTER TABLE new_sends RENAME TO sends') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON sends (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_idx ON sends (source) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - destination_idx ON sends (destination) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - asset_idx ON sends (asset) - ''') - # Adds a memo to sends # SQLite can’t do `ALTER TABLE IF COLUMN NOT EXISTS`. if 'memo' not in columns: cursor.execute('''ALTER TABLE sends ADD COLUMN memo BLOB''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - memo_idx ON sends (memo) - ''') + database.create_indexes(cursor, 'sends', [ + ['block_index'], + ['source'], + ['destination'], + ['asset'], + ['memo'], + ]) + def unpack(db, message, block_index): return send1.unpack(db, message, block_index) + def validate (db, source, destination, asset, quantity, block_index): return send1.validate(db, source, destination, asset, quantity, block_index) + def compose (db, source, destination, asset, quantity, memo=None, memo_is_hex=False, use_enhanced_send=None): # special case - enhanced_send replaces send by default when it is enabled # but it can be explicitly disabled with an API parameter - if util.enabled('enhanced_sends'): + if ledger.enabled('enhanced_sends'): # Another special case, if destination, asset and quantity are arrays, it's an MPMA send if isinstance(destination, list) and isinstance(asset, list) and isinstance(quantity, list): - if util.enabled('mpma_sends'): + if ledger.enabled('mpma_sends'): if len(destination) == len(asset) and len(asset) == len(quantity): # Sending memos in a MPMA message can be done by several approaches: # 1. Send a list of memos, there must be one for each send and they correspond to the sends by index @@ -115,7 +121,7 @@ def compose (db, source, destination, asset, quantity, memo=None, memo_is_hex=Fa # 3. Send one memo (either bytes or string) and True/False in memo_is_hex. This will be interpreted as a message wide memo. if (len(destination) > config.MPMA_LIMIT): raise exceptions.ComposeError('mpma sends have a maximum of '+str(config.MPMA_LIMIT)+' sends') - + if isinstance(memo, list) and isinstance(memo_is_hex, list): # (1) implemented here if len(memo) != len(memo_is_hex): @@ -148,8 +154,6 @@ def compose (db, source, destination, asset, quantity, memo=None, memo_is_hex=Fa return send1.compose(db, source, destination, asset, quantity) + def parse (db, tx, message): # TODO: *args return send1.parse(db, tx, message) - - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/messages/sweep.py b/counterparty-lib/counterpartylib/lib/messages/sweep.py similarity index 68% rename from counterpartylib/lib/messages/sweep.py rename to counterparty-lib/counterpartylib/lib/messages/sweep.py index cedff8ec68..d203b34014 100644 --- a/counterpartylib/lib/messages/sweep.py +++ b/counterparty-lib/counterpartylib/lib/messages/sweep.py @@ -1,15 +1,18 @@ #! /usr/bin/python3 import struct +import logging from counterpartylib.lib import exceptions from counterpartylib.lib import config -from counterpartylib.lib import util -from counterpartylib.lib import log +from counterpartylib.lib import database +from counterpartylib.lib import ledger from counterpartylib.lib import message_type from counterpartylib.lib import address from counterpartylib.lib.exceptions import * +logger = logging.getLogger(config.LOGGER_NAME) + FORMAT = '>21sB' LENGTH = 22 MAX_MEMO_LENGTH = 34 # Could be higher, but we will keep it consistent with enhanced send @@ -25,6 +28,15 @@ def initialise(db): cursor = db.cursor() + + # remove misnamed indexes + database.drop_indexes(cursor, [ + 'block_index_idx', + 'source_idx', + 'destination_idx', + 'memo_idx', + ]) + cursor.execute('''CREATE TABLE IF NOT EXISTS sweeps( tx_index INTEGER PRIMARY KEY, tx_hash TEXT UNIQUE, @@ -37,18 +49,13 @@ def initialise(db): fee_paid INTEGER, FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON sweeps (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - source_idx ON sweeps (source) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - destination_idx ON sweeps (destination) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - memo_idx ON sweeps (memo) - ''') + + database.create_indexes(cursor, 'sweeps', [ + ['block_index'], + ['source'], + ['destination'], + ['memo'], + ]) def validate (db, source, destination, flags, memo, block_index): @@ -58,33 +65,28 @@ def validate (db, source, destination, flags, memo, block_index): problems.append('destination cannot be the same as source') cursor = db.cursor() - cursor.execute('''SELECT * FROM balances WHERE (address = ? AND asset = ?)''', (source, 'XCP')) - result = cursor.fetchall() - antispamfee = util.get_value_by_block_index("sweep_antispam_fee", block_index)*config.UNIT + result = ledger.get_balance(db, source, 'XCP') + + antispamfee = ledger.get_value_by_block_index("sweep_antispam_fee", block_index)*config.UNIT total_fee = ANTISPAM_FEE if antispamfee > 0: - cursor.execute('''SELECT count(*) cnt FROM balances WHERE address = ?''', (source, )) - balances_count = cursor.fetchall()[0]['cnt'] - - cursor.execute('''SELECT COUNT(DISTINCT(asset)) cnt FROM issuances WHERE issuer = ?''', (source, )) - issuances_count = cursor.fetchall()[0]['cnt'] + balances_count = ledger.get_balances_count(db, source)[0]['cnt'] + issuances_count = ledger.get_issuances_count(db, source) total_fee = int(balances_count * antispamfee * 2 + issuances_count * antispamfee * 4) - - if result[0]['quantity'] < total_fee: - problems.append('insufficient XCP balance for sweep. Need %s XCP for antispam fee' % total_fee) + + if result < total_fee: + problems.append(f'insufficient XCP balance for sweep. Need {total_fee} XCP for antispam fee') else: - if len(result) == 0: - problems.append('insufficient XCP balance for sweep. Need %s XCP for antispam fee' % ANTISPAM_FEE_DECIMAL) - elif result[0]['quantity'] < ANTISPAM_FEE: - problems.append('insufficient XCP balance for sweep. Need %s XCP for antispam fee' % ANTISPAM_FEE_DECIMAL) + if result < ANTISPAM_FEE: + problems.append(f'insufficient XCP balance for sweep. Need {ANTISPAM_FEE_DECIMAL} XCP for antispam fee') cursor.close() if flags > FLAGS_ALL: - problems.append('invalid flags %i' % flags) + problems.append(f'invalid flags {flags}') elif not(flags & (FLAG_BALANCES | FLAG_OWNERSHIP)): problems.append('must specify which kind of transfer in flags') @@ -93,6 +95,7 @@ def validate (db, source, destination, flags, memo, block_index): return problems, total_fee + def compose (db, source, destination, flags, memo): if memo is None: memo = b'' @@ -100,9 +103,9 @@ def compose (db, source, destination, flags, memo): memo = bytes.fromhex(memo) else: memo = memo.encode('utf-8') - memo = struct.pack(">{}s".format(len(memo)), memo) + memo = struct.pack(f">{len(memo)}s", memo) - block_index = util.CURRENT_BLOCK_INDEX + block_index = ledger.CURRENT_BLOCK_INDEX problems, total_fee = validate(db, source, destination, flags, memo, block_index) if problems: raise exceptions.ComposeError(problems) @@ -114,6 +117,7 @@ def compose (db, source, destination, flags, memo): return (source, [], data) + def unpack(db, message, block_index): try: memo_bytes_length = len(message) - LENGTH @@ -122,7 +126,7 @@ def unpack(db, message, block_index): if memo_bytes_length > MAX_MEMO_LENGTH: raise exceptions.UnpackError('memo too long') - struct_format = FORMAT + ('{}s'.format(memo_bytes_length)) + struct_format = FORMAT + f'{memo_bytes_length}s' short_address_bytes, flags, memo_bytes = struct.unpack(struct_format, message) if len(memo_bytes) == 0: memo_bytes = None @@ -132,16 +136,17 @@ def unpack(db, message, block_index): # unpack address full_address = address.unpack(short_address_bytes) except (struct.error) as e: - logger.warning("sweep send unpack error: {}".format(e)) + logger.warning(f"sweep send unpack error: {e}") raise exceptions.UnpackError('could not unpack') unpacked = { - 'destination': full_address, + 'destination': full_address, 'flags': flags, 'memo': memo_bytes, } return unpacked + def parse (db, tx, message): cursor = db.cursor() @@ -155,7 +160,7 @@ def parse (db, tx, message): status = 'valid' except (exceptions.UnpackError, exceptions.AssetNameError, struct.error) as e: destination, flags, memo_bytes = None, None, None - status = 'invalid: could not unpack ({})'.format(e) + status = f'invalid: could not unpack ({e})' except BalanceError: destination, flags, memo_bytes = None, None, None status = 'invalid: insufficient balance for antispam fee for sweep' @@ -169,37 +174,33 @@ def parse (db, tx, message): if status == 'valid': try: - antispamfee = util.get_value_by_block_index("sweep_antispam_fee", tx['block_index'])*config.UNIT - + antispamfee = ledger.get_value_by_block_index("sweep_antispam_fee", tx['block_index'])*config.UNIT + if antispamfee > 0: - util.debit(db, tx['source'], 'XCP', total_fee, action='sweep fee', event=tx['tx_hash']) + ledger.debit(db, tx['source'], 'XCP', total_fee, tx['tx_index'], action='sweep fee', event=tx['tx_hash']) else: - util.debit(db, tx['source'], 'XCP', fee_paid, action='sweep fee', event=tx['tx_hash']) + ledger.debit(db, tx['source'], 'XCP', fee_paid, tx['tx_index'], action='sweep fee', event=tx['tx_hash']) except BalanceError: destination, flags, memo_bytes = None, None, None status = 'invalid: insufficient balance for antispam fee for sweep' if status == 'valid': - cursor.execute('''SELECT * FROM balances WHERE address = ?''', (tx['source'],)) - balances = cursor.fetchall() + balances = ledger.get_address_balances(db, tx['source']) + if flags & FLAG_BALANCES: for balance in balances: - util.debit(db, tx['source'], balance['asset'], balance['quantity'], action='sweep', event=tx['tx_hash']) - util.credit(db, destination, balance['asset'], balance['quantity'], action='sweep', event=tx['tx_hash']) + ledger.debit(db, tx['source'], balance['asset'], balance['quantity'], tx['tx_index'], action='sweep', event=tx['tx_hash']) + ledger.credit(db, destination, balance['asset'], balance['quantity'], tx['tx_index'], action='sweep', event=tx['tx_hash']) if flags & FLAG_OWNERSHIP: sweep_pos = 0 - + assets_issued = balances - if util.enabled("zero_balance_ownership_sweep_fix", tx["block_index"]): - cursor.execute('''SELECT DISTINCT(asset) FROM issuances WHERE issuer = ?''', (tx['source'],)) - assets_issued = cursor.fetchall() - + if ledger.enabled("zero_balance_ownership_sweep_fix", tx["block_index"]): + assets_issued = ledger.get_asset_issued(db, tx['source']) + for next_asset_issued in assets_issued: - cursor.execute('''SELECT * FROM issuances \ - WHERE (status = ? AND asset = ?) - ORDER BY tx_index ASC''', ('valid', next_asset_issued['asset'])) - issuances = cursor.fetchall() + issuances =ledger.get_issuances(db, asset=next_asset_issued['asset'], status='valid', first=True) if len(issuances) > 0: last_issuance = issuances[-1] if last_issuance['issuer'] == tx['source']: diff --git a/counterpartylib/lib/kickstart/__init__.py b/counterparty-lib/counterpartylib/lib/messages/versions/__init__.py similarity index 100% rename from counterpartylib/lib/kickstart/__init__.py rename to counterparty-lib/counterpartylib/lib/messages/versions/__init__.py diff --git a/counterpartylib/lib/messages/versions/enhanced_send.py b/counterparty-lib/counterpartylib/lib/messages/versions/enhanced_send.py similarity index 72% rename from counterpartylib/lib/messages/versions/enhanced_send.py rename to counterparty-lib/counterpartylib/lib/messages/versions/enhanced_send.py index 549556d74d..d243f215d0 100644 --- a/counterpartylib/lib/messages/versions/enhanced_send.py +++ b/counterparty-lib/counterpartylib/lib/messages/versions/enhanced_send.py @@ -3,9 +3,10 @@ import struct import json import logging -logger = logging.getLogger(__name__) -from counterpartylib.lib import (config, util, exceptions, util, message_type, address) +from counterpartylib.lib import (config, util, exceptions, util, message_type, address, ledger) + +logger = logging.getLogger(config.LOGGER_NAME) FORMAT = '>QQ21s' LENGTH = 8 + 8 + 21 @@ -21,7 +22,7 @@ def unpack(db, message, block_index): if memo_bytes_length > MAX_MEMO_LENGTH: raise exceptions.UnpackError('memo too long') - struct_format = FORMAT + ('{}s'.format(memo_bytes_length)) + struct_format = FORMAT + f'{memo_bytes_length}s' asset_id, quantity, short_address_bytes, memo_bytes = struct.unpack(struct_format, message) if len(memo_bytes) == 0: memo_bytes = None @@ -30,20 +31,20 @@ def unpack(db, message, block_index): full_address = address.unpack(short_address_bytes) # asset id to name - asset = util.generate_asset_name(asset_id, block_index) + asset = ledger.generate_asset_name(asset_id, block_index) if asset == config.BTC: - raise exceptions.AssetNameError('{} not allowed'.format(config.BTC)) + raise exceptions.AssetNameError(f'{config.BTC} not allowed') except (struct.error) as e: - logger.warning("enhanced send unpack error: {}".format(e)) + logger.warning(f"enhanced send unpack error: {e}") raise exceptions.UnpackError('could not unpack') except (exceptions.AssetNameError, exceptions.AssetIDError) as e: - logger.warning("enhanced send invalid asset id: {}".format(e)) + logger.warning(f"enhanced send invalid asset id: {e}") raise exceptions.UnpackError('asset id invalid') unpacked = { - 'asset': asset, + 'asset': asset, 'quantity': quantity, 'address': full_address, 'memo': memo_bytes, @@ -53,7 +54,7 @@ def unpack(db, message, block_index): def validate (db, source, destination, asset, quantity, memo_bytes, block_index): problems = [] - if asset == config.BTC: problems.append('cannot send {}'.format(config.BTC)) + if asset == config.BTC: problems.append(f'cannot send {config.BTC}') if not isinstance(quantity, int): problems.append('quantity must be in satoshis') @@ -75,14 +76,14 @@ def validate (db, source, destination, asset, quantity, memo_bytes, block_index) # check memo if memo_bytes is not None and len(memo_bytes) > MAX_MEMO_LENGTH: - problems.append('memo is too long') + problems.append('memo is too long') - if util.enabled('options_require_memo'): + if ledger.enabled('options_require_memo'): cursor = db.cursor() try: - results = cursor.execute('SELECT options FROM addresses WHERE address=?', (destination,)) + results = ledger.get_addresses(db, address=destination) if results: - result = results.fetchone() + result = results[0] if result and util.active_options(result['options'], config.ADDRESS_OPTION_REQUIRE_MEMO): if memo_bytes is None or (len(memo_bytes) == 0): problems.append('destination requires memo') @@ -99,15 +100,15 @@ def compose (db, source, destination, asset, quantity, memo, memo_is_hex): return (source, [(destination, quantity)], None) # resolve subassets - asset = util.resolve_subasset_longname(db, asset) + asset = ledger.resolve_subasset_longname(db, asset) #quantity must be in int satoshi (not float, string, etc) if not isinstance(quantity, int): raise exceptions.ComposeError('quantity must be an int (in satoshi)') # Only for outgoing (incoming will overburn). - balances = list(cursor.execute('''SELECT * FROM balances WHERE (address = ? AND asset = ?)''', (source, asset))) - if not balances or balances[0]['quantity'] < quantity: + balance = ledger.get_balance(db, source, asset) + if balance < quantity: raise exceptions.ComposeError('insufficient funds') # convert memo to memo_bytes based on memo_is_hex setting @@ -117,14 +118,14 @@ def compose (db, source, destination, asset, quantity, memo, memo_is_hex): memo_bytes = bytes.fromhex(memo) else: memo = memo.encode('utf-8') - memo_bytes = struct.pack(">{}s".format(len(memo)), memo) + memo_bytes = struct.pack(f">{len(memo)}s", memo) - block_index = util.CURRENT_BLOCK_INDEX + block_index = ledger.CURRENT_BLOCK_INDEX problems = validate(db, source, destination, asset, quantity, memo_bytes, block_index) if problems: raise exceptions.ComposeError(problems) - asset_id = util.get_asset_id(db, asset, block_index) + asset_id = ledger.get_asset_id(db, asset, block_index) short_address_bytes = address.pack(destination) @@ -148,7 +149,7 @@ def parse (db, tx, message): except (exceptions.UnpackError, exceptions.AssetNameError, struct.error) as e: asset, quantity, destination, memo_bytes = None, None, None, None - status = 'invalid: could not unpack ({})'.format(e) + status = f'invalid: could not unpack ({e})' except: asset, quantity, destination, memo_bytes = None, None, None, None status = 'invalid: could not unpack' @@ -165,23 +166,20 @@ def parse (db, tx, message): if status == 'valid': # verify balance is present - cursor.execute('''SELECT * FROM balances \ - WHERE (address = ? AND asset = ?)''', (tx['source'], asset)) - balances = cursor.fetchall() - if not balances or balances[0]['quantity'] < quantity: + balance = ledger.get_balance(db, tx['source'], asset) + if balance == 0 or balance < quantity: status = 'invalid: insufficient funds' if status == 'valid': - util.debit(db, tx['source'], asset, quantity, action='send', event=tx['tx_hash']) - util.credit(db, destination, asset, quantity, action='send', event=tx['tx_hash']) + ledger.debit(db, tx['source'], asset, quantity, tx['tx_index'], action='send', event=tx['tx_hash']) + ledger.credit(db, destination, asset, quantity, tx['tx_index'], action='send', event=tx['tx_hash']) # log invalid transactions if status != 'valid': if quantity is None: - logger.warn("Invalid send from %s with status %s. (%s)" % (tx['source'], status, tx['tx_hash'])) + logger.warning(f"Invalid send from {tx['source']} with status {status}. ({tx['tx_hash']})") else: - logger.warn("Invalid send of %s %s from %s to %s. status is %s. (%s)" % (quantity, asset, tx['source'], destination, status, tx['tx_hash'])) - + logger.warning(f"Invalid send of {quantity} {asset} from {tx['source']} to {destination}. status is {status}. ({tx['tx_hash']})") # Add parsed transaction to message-type–specific table. bindings = { @@ -199,9 +197,8 @@ def parse (db, tx, message): sql = 'insert into sends (tx_index, tx_hash, block_index, source, destination, asset, quantity, status, memo) values(:tx_index, :tx_hash, :block_index, :source, :destination, :asset, :quantity, :status, :memo)' cursor.execute(sql, bindings) else: - logger.warn("Not storing [send] tx [%s]: %s" % (tx['tx_hash'], status)) - logger.debug("Bindings: %s" % (json.dumps(bindings), )) - + logger.debug(f"Not storing [send] tx [{tx['tx_hash']}]: {status}") + logger.debug(f"Bindings: {json.dumps(bindings)}") cursor.close() diff --git a/counterpartylib/lib/messages/versions/mpma.py b/counterparty-lib/counterpartylib/lib/messages/versions/mpma.py similarity index 63% rename from counterpartylib/lib/messages/versions/mpma.py rename to counterparty-lib/counterpartylib/lib/messages/versions/mpma.py index d6265f1b9c..e20dfc6caa 100644 --- a/counterpartylib/lib/messages/versions/mpma.py +++ b/counterparty-lib/counterpartylib/lib/messages/versions/mpma.py @@ -9,19 +9,19 @@ from functools import reduce from itertools import groupby -logger = logging.getLogger(__name__) - from bitstring import ReadError -from counterpartylib.lib import (config, util, exceptions, util, message_type, address) +from counterpartylib.lib import (config, util, exceptions, util, message_type, ledger) + +from .mpma_util.internals import (_decode_mpma_send_decode, _encode_mpma_send) -from .mpma_util.internals import (_decode_mpmaSendDecode, _encode_mpmaSend) +logger = logging.getLogger(config.LOGGER_NAME) ID = 3 # 0x03 is this specific message type ## expected functions for message version def unpack(db, message, block_index): try: - unpacked = _decode_mpmaSendDecode(message, block_index) + unpacked = _decode_mpma_send_decode(message, block_index) except (struct.error) as e: raise exceptions.UnpackError('could not unpack') except (exceptions.AssetNameError, exceptions.AssetIDError) as e: @@ -55,35 +55,35 @@ def validate (db, source, asset_dest_quant_list, block_index): destination = t[1] quantity = t[2] - sendMemo = None + send_memo = None if len(t) > 3: - sendMemo = t[3] + send_memo = t[3] - if asset == config.BTC: problems.append('cannot send {} to {}'.format(config.BTC, destination)) + if asset == config.BTC: problems.append(f'cannot send {config.BTC} to {destination}') if not isinstance(quantity, int): - problems.append('quantities must be an int (in satoshis) for {} to {}'.format(asset, destination)) + problems.append(f'quantities must be an int (in satoshis) for {asset} to {destination}') if quantity < 0: - problems.append('negative quantity for {} to {}'.format(asset, destination)) + problems.append(f'negative quantity for {asset} to {destination}') if quantity == 0: - problems.append('zero quantity for {} to {}'.format(asset, destination)) + problems.append(f'zero quantity for {asset} to {destination}') # For SQLite3 if quantity > config.MAX_INT: - problems.append('integer overflow for {} to {}'.format(asset, destination)) + problems.append(f'integer overflow for {asset} to {destination}') # destination is always required if not destination: - problems.append('destination is required for {}'.format(asset)) + problems.append(f'destination is required for {asset}') - if util.enabled('options_require_memo'): - results = cursor.execute('SELECT options FROM addresses WHERE address=?', (destination,)) + if ledger.enabled('options_require_memo'): + results = ledger.get_addresses(db, address=destination) if destination else None if results: - result = results.fetchone() - if result and result['options'] & config.ADDRESS_OPTION_REQUIRE_MEMO and (sendMemo is None): - problems.append('destination {} requires memo'.format(destination)) + result = results[0] + if result and result['options'] & config.ADDRESS_OPTION_REQUIRE_MEMO and (send_memo is None): + problems.append(f'destination {destination} requires memo') cursor.close() @@ -94,18 +94,18 @@ def compose (db, source, asset_dest_quant_list, memo, memo_is_hex): out_balances = util.accumulate([(t[0], t[2]) for t in asset_dest_quant_list]) for (asset, quantity) in out_balances: - if util.enabled('mpma_subasset_support'): + if ledger.enabled('mpma_subasset_support'): # resolve subassets - asset = util.resolve_subasset_longname(db, asset) + asset = ledger.resolve_subasset_longname(db, asset) if not isinstance(quantity, int): - raise exceptions.ComposeError('quantities must be an int (in satoshis) for {}'.format(asset)) + raise exceptions.ComposeError(f'quantities must be an int (in satoshis) for {asset}') - balances = list(cursor.execute('''SELECT * FROM balances WHERE (address = ? AND asset = ?)''', (source, asset))) - if not balances or balances[0]['quantity'] < quantity: - raise exceptions.ComposeError('insufficient funds for {}'.format(asset)) + balance = ledger.get_balance(db, source, asset) + if balance < quantity: + raise exceptions.ComposeError(f'insufficient funds for {asset}') - block_index = util.CURRENT_BLOCK_INDEX + block_index = ledger.CURRENT_BLOCK_INDEX cursor.close() @@ -113,7 +113,7 @@ def compose (db, source, asset_dest_quant_list, memo, memo_is_hex): if problems: raise exceptions.ComposeError(problems) data = message_type.pack(ID) - data += _encode_mpmaSend(db, asset_dest_quant_list, block_index, memo=memo, memo_is_hex=memo_is_hex) + data += _encode_mpma_send(db, asset_dest_quant_list, block_index, memo=memo, memo_is_hex=memo_is_hex) return (source, [], data) @@ -126,7 +126,7 @@ def parse (db, tx, message): except (exceptions.AssetNameError, exceptions.AssetIDError) as e: status = 'invalid: invalid asset name/id' except (Exception) as e: - status = 'invalid: couldn\'t unpack; %s' % e + status = f'invalid: couldn\'t unpack; {e}' cursor = db.cursor() @@ -136,29 +136,26 @@ def parse (db, tx, message): if status == 'valid': for asset_id in unpacked: try: - asset = util.get_asset_name(db, asset_id, tx['block_index']) + asset = ledger.get_asset_name(db, asset_id, tx['block_index']) except (exceptions.AssetNameError) as e: - status = 'invalid: asset %s invalid at block index %i' % (asset_id, tx['block_index']) + status = f"invalid: asset {asset_id} invalid at block index {tx['block_index']}" break - cursor.execute('''SELECT * FROM balances \ - WHERE (address = ? AND asset = ?)''', (tx['source'], asset_id)) - - balances = cursor.fetchall() - if not balances: - status = 'invalid: insufficient funds for asset %s, address %s has no balance' % (asset_id, tx['source']) + balance = ledger.get_balance(db, tx['source'], asset_id) + if not balance: + status = f"invalid: insufficient funds for asset {asset_id}, address {tx['source']} has no balance" break credits = unpacked[asset_id] total_sent = reduce(lambda p, t: p + t[1], credits, 0) - if balances[0]['quantity'] < total_sent: - status = 'invalid: insufficient funds for asset %s, needs %i' % (asset_id, total_sent) + if balance < total_sent: + status = f'invalid: insufficient funds for asset {asset_id}, needs {total_sent}' break if status == 'valid': - plain_sends += map(lambda t: util.py34TupleAppend(asset_id, t), credits) + plain_sends += map(lambda t: util.py34_tuple_append(asset_id, t), credits) all_credits += map(lambda t: {"asset": asset_id, "destination": t[0], "quantity": t[1]}, credits) all_debits.append({"asset": asset_id, "quantity": total_sent}) @@ -169,10 +166,10 @@ def parse (db, tx, message): if status == 'valid': for op in all_credits: - util.credit(db, op['destination'], op['asset'], op['quantity'], action='mpma send', event=tx['tx_hash']) + ledger.credit(db, op['destination'], op['asset'], op['quantity'], tx['tx_index'], action='mpma send', event=tx['tx_hash']) for op in all_debits: - util.debit(db, tx['source'], op['asset'], op['quantity'], action='mpma send', event=tx['tx_hash']) + ledger.debit(db, tx['source'], op['asset'], op['quantity'], tx['tx_index'], action='mpma send', event=tx['tx_hash']) # Enumeration of the plain sends needs to be deterministic, so we sort them by asset and then by address plain_sends = sorted(plain_sends, key=lambda x: ''.join([x[0], x[1]])) @@ -199,7 +196,7 @@ def parse (db, tx, message): cursor.execute(sql, bindings) if status != 'valid': - logger.warn("Not storing [mpma] tx [%s]: %s" % (tx['tx_hash'], status)) + logger.debug(f"Not storing [mpma] tx [{tx['tx_hash']}]: {status}") cursor.close() diff --git a/counterpartylib/lib/messages/versions/__init__.py b/counterparty-lib/counterpartylib/lib/messages/versions/mpma_util/__init__.py similarity index 100% rename from counterpartylib/lib/messages/versions/__init__.py rename to counterparty-lib/counterpartylib/lib/messages/versions/mpma_util/__init__.py diff --git a/counterparty-lib/counterpartylib/lib/messages/versions/mpma_util/internals.py b/counterparty-lib/counterpartylib/lib/messages/versions/mpma_util/internals.py new file mode 100644 index 0000000000..8cba461739 --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/messages/versions/mpma_util/internals.py @@ -0,0 +1,234 @@ +import struct +import json +import logging +import binascii +import math +from bitcoin.core import key +from functools import reduce +from itertools import groupby + +from bitstring import BitArray, BitStream, ConstBitStream, ReadError + +from counterpartylib.lib import (config, util, exceptions, util, ledger, address) + +logger = logging.getLogger(config.LOGGER_NAME) + +## encoding functions + +def _encode_construct_base_lut(snds): + # t is a tuple of the form (asset, addr, amnt [, memo, is_hex]) + return sorted(list(set([t[1] for t in snds]))) # Sorted to make list determinist + +def _encode_construct_base_assets(sends): + # t is a tuple of the form (asset, addr, amnt [, memo, is_hex]) + return sorted(list(set([t[0] for t in sends]))) # Sorted to make list determinist + +def _encode_construct_lut(sends): + base_lut = _encode_construct_base_lut(sends) + + # What's this? It calculates the minimal number of bits needed to represent an item index inside the base_lut + lut_nbits = math.ceil(math.log2(len(base_lut))) + + return { + "nbits": lut_nbits, + "addrs": base_lut + } + +def _encode_compress_lut(lut): + return b''.join([struct.pack('>H', len(lut['addrs']))] + + [ + address.pack(addr) + for addr in lut['addrs'] + ]) + +def _encode_memo(memo=None, is_hex=False): + '''Tightly pack a memo as a Bit array''' + + if memo is not None: + # signal a 1 bit for existence of the memo + barr = BitArray('0b1') + + if is_hex: + # signal a 1 bit for hex encoded memos + barr.append('0b1') + if type(memo) is str: # append the string as hex-string + barr.append(f'uint:6={len(memo) >> 1}') + memo = f'0x{memo}' + else: + barr.append(f'uint:6={len(memo)}') + + barr.append(memo) + else: + # signal a 0 bit for a string encoded memo + barr.append('0b0') + barr.append(f'uint:6={len(memo)}') + barr.append(BitArray(memo.encode('utf-8'))) + + return barr + else: + # if the memo is None, return just a 0 bit + return BitArray('0b0') + +def _safe_tuple_index(t, i): + '''Get an element from a tuple, returning None if it's out of bounds''' + + if len(t) <= i: + return None + else: + return t[i] + +def _encode_construct_send_list(send_asset, lut, sends): + # t is a tuple of the form (asset, addr, amnt, memo, is_hex) + # if there's no memo specified, memo and is_hex are None + return [ + (lut['addrs'].index(t[1]), t[2], _safe_tuple_index(t, 3), _safe_tuple_index(t, 4)) + for t in sends + if t[0] == send_asset + ] + +def _solve_asset(db, asset_name, block_index): + asset = ledger.resolve_subasset_longname(db, asset_name) + return ledger.get_asset_id(db, asset, block_index) + +def _encode_compress_send_list(db, nbits, send, block_index): + r = BitArray() + r.append(f"uintbe:64={_solve_asset(db, send['assetName'], block_index)}") + r.append(f"uint:{nbits}={len(send['sendList'])-1}") + + for send_item in send['sendList']: + idx = send_item[0] + amnt = send_item[1] + r.append(f'uint:{nbits}={idx}') + r.append(f'uintbe:64={amnt}') + + try: + memo_str = _encode_memo(memo=send_item[2], is_hex=send_item[3]) + except: + memo_str = BitArray('0b0') + + r.append(memo_str) + return r + +def _encode_construct_sends(sends): + lut = _encode_construct_lut(sends) + assets = _encode_construct_base_assets(sends) + + send_lists = [ + { + "assetName": asset, + "sendList": _encode_construct_send_list(asset, lut, sends) + } + for asset in assets + ] + + return { + "lut": lut, + "sendLists": send_lists + } + +def _encode_compress_sends(db, mpma_send, block_index, memo=None, memo_is_hex=False): + compressed_lut = _encode_compress_lut(mpma_send['lut']) + memo_arr = _encode_memo(memo, memo_is_hex).bin + + isends = '0b' + memo_arr + ''.join([ + ''.join(['1', _encode_compress_send_list(db, mpma_send['lut']['nbits'], send_list, block_index).bin]) + for send_list in mpma_send['sendLists'] + ]) + bstr = ''.join([isends, '0']) + pad = '0' * ((8 - (len(bstr) - 2)) % 8) # That -2 is because the prefix 0b is there + barr = BitArray(bstr + pad) + return b''.join([ + compressed_lut, + barr.bytes + ]) + +def _encode_mpma_send(db, sends, block_index, memo=None, memo_is_hex=False): + mpma = _encode_construct_sends(sends) + send = _encode_compress_sends(db, mpma, block_index, memo=memo, memo_is_hex=memo_is_hex) + + return send + +## decoding functions + +def _decode_decode_lut(data): + (num_addresses,) = struct.unpack('>H', data[0:2]) + if num_addresses == 0: + raise exceptions.DecodeError('address list can\'t be empty') + p = 2 + address_list = [] + bytes_per_address = 21 + + for i in range(0, num_addresses): + addr_raw = data[p:p+bytes_per_address] + + address_list.append(address.unpack(addr_raw)) + p += bytes_per_address + + lut_nbits = math.ceil(math.log2(num_addresses)) + + return address_list, lut_nbits, data[p:] + +def _decode_decode_send_list(stream, nbits, lut, block_index): + asset_id = stream.read('uintbe:64') + + if nbits > 0: + num_recipients = stream.read(f'uint:{nbits}') + range_limit = num_recipients + 1 + else: + num_recipients = 1 + range_limit = num_recipients + send_list = [] + asset = ledger.generate_asset_name(asset_id, block_index) + for i in range(0, range_limit): + if nbits > 0: + idx = stream.read(f'uint:{nbits}') + else: + idx = 0 + addr = lut[idx] + amount = stream.read('uintbe:64') + + memo, is_hex = _decode_memo(stream) + if memo is not None: + send_list.append((addr, amount, memo, is_hex)) + else: + send_list.append((addr, amount)) + + return asset, send_list + +def _decode_decode_sends(stream, nbits, lut, block_index): + #stream = ConstBitStream(data) + sends = {} + + while stream.read('bool'): + asset, send_list = _decode_decode_send_list(stream, nbits, lut, block_index) + sends[asset] = send_list + + return sends + +def _decode_memo(stream): + if stream.read('bool'): + is_hex = stream.read('bool') + mlen = stream.read('uint:6') + data = stream.read(f'bytes:{mlen}') + + if not(is_hex): + # is an utf8 string + data = data.decode('utf-8') + + return data, is_hex + else: + return None, None + +def _decode_mpma_send_decode(data, block_index): + lut, nbits, remain = _decode_decode_lut(data) + stream = ConstBitStream(remain) + memo, is_hex = _decode_memo(stream) + sends = _decode_decode_sends(stream, nbits, lut, block_index) + if memo is not None: + for asset in sends: + send_list = sends[asset] + for idx, send in enumerate(send_list): + if len(send) == 2: + send_list[idx] = (send[0], send[1], memo, is_hex) + + return sends diff --git a/counterpartylib/lib/messages/versions/send1.py b/counterparty-lib/counterpartylib/lib/messages/versions/send1.py similarity index 71% rename from counterpartylib/lib/messages/versions/send1.py rename to counterparty-lib/counterpartylib/lib/messages/versions/send1.py index d0029b7d65..ab8f869c31 100644 --- a/counterpartylib/lib/messages/versions/send1.py +++ b/counterparty-lib/counterpartylib/lib/messages/versions/send1.py @@ -5,9 +5,10 @@ import struct import json import logging -logger = logging.getLogger(__name__) -from ... import (config, exceptions, util, message_type) +from ... import (config, exceptions, util, message_type, ledger) + +logger = logging.getLogger(config.LOGGER_NAME) FORMAT = '>QQ' LENGTH = 8 + 8 @@ -17,12 +18,12 @@ def unpack(db, message, block_index): # Only used for `unpack` API call at the moment. try: asset_id, quantity = struct.unpack(FORMAT, message) - asset = util.get_asset_name(db, asset_id, block_index) + asset = ledger.get_asset_name(db, asset_id, block_index) except struct.error: raise exceptions.UnpackError('could not unpack') - except AssetNameError: + except exceptions.AssetNameError: raise exceptions.UnpackError('asset id invalid') unpacked = { @@ -47,17 +48,17 @@ def validate (db, source, destination, asset, quantity, block_index): if quantity > config.MAX_INT: problems.append('integer overflow') - if util.enabled('send_destination_required'): # Protocol change. + if ledger.enabled('send_destination_required'): # Protocol change. if not destination: problems.append('destination is required') - if util.enabled('options_require_memo'): + if ledger.enabled('options_require_memo'): # Check destination address options cursor = db.cursor() - results = cursor.execute('SELECT options FROM addresses WHERE address=?', (destination,)) + results = ledger.get_addresses(db, address=destination) if results: - result = results.fetchone() + result = results[0] if result and util.active_options(result['options'], config.ADDRESS_OPTION_REQUIRE_MEMO): problems.append('destination requires memo') cursor.close() @@ -72,23 +73,23 @@ def compose (db, source, destination, asset, quantity): return (source, [(destination, quantity)], None) # resolve subassets - asset = util.resolve_subasset_longname(db, asset) + asset = ledger.resolve_subasset_longname(db, asset) #quantity must be in int satoshi (not float, string, etc) if not isinstance(quantity, int): raise exceptions.ComposeError('quantity must be an int (in satoshi)') # Only for outgoing (incoming will overburn). - balances = list(cursor.execute('''SELECT * FROM balances WHERE (address = ? AND asset = ?)''', (source, asset))) - if not balances or balances[0]['quantity'] < quantity: + balance = ledger.get_balance(db, source, asset) + if balance < quantity: raise exceptions.ComposeError('insufficient funds') - block_index = util.CURRENT_BLOCK_INDEX + block_index = ledger.CURRENT_BLOCK_INDEX problems = validate(db, source, destination, asset, quantity, block_index) if problems: raise exceptions.ComposeError(problems) - asset_id = util.get_asset_id(db, asset, block_index) + asset_id = ledger.get_asset_id(db, asset, block_index) data = message_type.pack(ID) data += struct.pack(FORMAT, asset_id, quantity) @@ -103,7 +104,7 @@ def parse (db, tx, message): if len(message) != LENGTH: raise exceptions.UnpackError asset_id, quantity = struct.unpack(FORMAT, message) - asset = util.get_asset_name(db, asset_id, tx['block_index']) + asset = ledger.get_asset_name(db, asset_id, tx['block_index']) status = 'valid' except (exceptions.UnpackError, exceptions.AssetNameError, struct.error) as e: asset, quantity = None, None @@ -111,13 +112,13 @@ def parse (db, tx, message): if status == 'valid': # Oversend - cursor.execute('''SELECT * FROM balances \ - WHERE (address = ? AND asset = ?)''', (tx['source'], asset)) - balances = cursor.fetchall() - if not balances: + # doesn't make sense (0 and no balance should be the same) but let's not break the protocol + try: + balance = ledger.get_balance(db, tx['source'], asset, raise_error_if_no_balance=True) + if balance < quantity: + quantity = min(balance, quantity) + except exceptions.BalanceError: status = 'invalid: insufficient funds' - elif balances[0]['quantity'] < quantity: - quantity = min(balances[0]['quantity'], quantity) # For SQLite3 if quantity: @@ -128,8 +129,8 @@ def parse (db, tx, message): if problems: status = 'invalid: ' + '; '.join(problems) if status == 'valid': - util.debit(db, tx['source'], asset, quantity, action='send', event=tx['tx_hash']) - util.credit(db, tx['destination'], asset, quantity, action='send', event=tx['tx_hash']) + ledger.debit(db, tx['source'], asset, quantity, tx['tx_index'], action='send', event=tx['tx_hash']) + ledger.credit(db, tx['destination'], asset, quantity, tx['tx_index'], action='send', event=tx['tx_hash']) # Add parsed transaction to message-type–specific table. bindings = { @@ -146,9 +147,8 @@ def parse (db, tx, message): sql = 'insert into sends (tx_index, tx_hash, block_index, source, destination, asset, quantity, status, memo) values(:tx_index, :tx_hash, :block_index, :source, :destination, :asset, :quantity, :status, NULL)' cursor.execute(sql, bindings) else: - logger.warn("Not storing [send] tx [%s]: %s" % (tx['tx_hash'], status)) - logger.debug("Bindings: %s" % (json.dumps(bindings), )) - + logger.debug(f"Not storing [send] tx [{tx['tx_hash']}]: {status}") + logger.debug(f"Bindings: {json.dumps(bindings)}") cursor.close() diff --git a/counterparty-lib/counterpartylib/lib/opcodes.py b/counterparty-lib/counterpartylib/lib/opcodes.py new file mode 100644 index 0000000000..09ae45a6d6 --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/opcodes.py @@ -0,0 +1,145 @@ +# push value +def to_bytes(i): + return i.to_bytes(1, 'big') + + +OP_0 = to_bytes(0x00) +OP_FALSE = OP_0 +OP_PUSHDATA1 = to_bytes(0x4c) +OP_PUSHDATA2 = to_bytes(0x4d) +OP_PUSHDATA4 = to_bytes(0x4e) +OP_1NEGATE = to_bytes(0x4f) +OP_RESERVED = to_bytes(0x50) +OP_1 = to_bytes(0x51) +OP_TRUE = OP_1 +OP_2 = to_bytes(0x52) +OP_3 = to_bytes(0x53) +OP_4 = to_bytes(0x54) +OP_5 = to_bytes(0x55) +OP_6 = to_bytes(0x56) +OP_7 = to_bytes(0x57) +OP_8 = to_bytes(0x58) +OP_9 = to_bytes(0x59) +OP_10 = to_bytes(0x5a) +OP_11 = to_bytes(0x5b) +OP_12 = to_bytes(0x5c) +OP_13 = to_bytes(0x5d) +OP_14 = to_bytes(0x5e) +OP_15 = to_bytes(0x5f) +OP_16 = to_bytes(0x60) + +# control +OP_NOP = to_bytes(0x61) +OP_VER = to_bytes(0x62) +OP_IF = to_bytes(0x63) +OP_NOTIF = to_bytes(0x64) +OP_VERIF = to_bytes(0x65) +OP_VERNOTIF = to_bytes(0x66) +OP_ELSE = to_bytes(0x67) +OP_ENDIF = to_bytes(0x68) +OP_VERIFY = to_bytes(0x69) +OP_RETURN = to_bytes(0x6a) + +# stack ops +OP_TOALTSTACK = to_bytes(0x6b) +OP_FROMALTSTACK = to_bytes(0x6c) +OP_2DROP = to_bytes(0x6d) +OP_2DUP = to_bytes(0x6e) +OP_3DUP = to_bytes(0x6f) +OP_2OVER = to_bytes(0x70) +OP_2ROT = to_bytes(0x71) +OP_2SWAP = to_bytes(0x72) +OP_IFDUP = to_bytes(0x73) +OP_DEPTH = to_bytes(0x74) +OP_DROP = to_bytes(0x75) +OP_DUP = to_bytes(0x76) +OP_NIP = to_bytes(0x77) +OP_OVER = to_bytes(0x78) +OP_PICK = to_bytes(0x79) +OP_ROLL = to_bytes(0x7a) +OP_ROT = to_bytes(0x7b) +OP_SWAP = to_bytes(0x7c) +OP_TUCK = to_bytes(0x7d) + +# splice ops +OP_CAT = to_bytes(0x7e) +OP_SUBSTR = to_bytes(0x7f) +OP_LEFT = to_bytes(0x80) +OP_RIGHT = to_bytes(0x81) +OP_SIZE = to_bytes(0x82) + +# bit logic +OP_INVERT = to_bytes(0x83) +OP_AND = to_bytes(0x84) +OP_OR = to_bytes(0x85) +OP_XOR = to_bytes(0x86) +OP_EQUAL = to_bytes(0x87) +OP_EQUALVERIFY = to_bytes(0x88) +OP_RESERVED1 = to_bytes(0x89) +OP_RESERVED2 = to_bytes(0x8a) + +# numeric +OP_1ADD = to_bytes(0x8b) +OP_1SUB = to_bytes(0x8c) +OP_2MUL = to_bytes(0x8d) +OP_2DIV = to_bytes(0x8e) +OP_NEGATE = to_bytes(0x8f) +OP_ABS = to_bytes(0x90) +OP_NOT = to_bytes(0x91) +OP_0NOTEQUAL = to_bytes(0x92) + +OP_ADD = to_bytes(0x93) +OP_SUB = to_bytes(0x94) +OP_MUL = to_bytes(0x95) +OP_DIV = to_bytes(0x96) +OP_MOD = to_bytes(0x97) +OP_LSHIFT = to_bytes(0x98) +OP_RSHIFT = to_bytes(0x99) + +OP_BOOLAND = to_bytes(0x9a) +OP_BOOLOR = to_bytes(0x9b) +OP_NUMEQUAL = to_bytes(0x9c) +OP_NUMEQUALVERIFY = to_bytes(0x9d) +OP_NUMNOTEQUAL = to_bytes(0x9e) +OP_LESSTHAN = to_bytes(0x9f) +OP_GREATERTHAN = to_bytes(0xa0) +OP_LESSTHANOREQUAL = to_bytes(0xa1) +OP_GREATERTHANOREQUAL = to_bytes(0xa2) +OP_MIN = to_bytes(0xa3) +OP_MAX = to_bytes(0xa4) + +OP_WITHIN = to_bytes(0xa5) + +# crypto +OP_RIPEMD160 = to_bytes(0xa6) +OP_SHA1 = to_bytes(0xa7) +OP_SHA256 = to_bytes(0xa8) +OP_HASH160 = to_bytes(0xa9) +OP_HASH256 = to_bytes(0xaa) +OP_CODESEPARATOR = to_bytes(0xab) +OP_CHECKSIG = to_bytes(0xac) +OP_CHECKSIGVERIFY = to_bytes(0xad) +OP_CHECKMULTISIG = to_bytes(0xae) +OP_CHECKMULTISIGVERIFY = to_bytes(0xaf) + +# expansion +OP_NOP1 = to_bytes(0xb0) +OP_NOP2 = to_bytes(0xb1) +OP_CHECKLOCKTIMEVERIFY = OP_NOP2 +OP_NOP3 = to_bytes(0xb2) +OP_CHECKSEQUENCEVERIFY = OP_NOP3 +OP_NOP4 = to_bytes(0xb3) +OP_NOP5 = to_bytes(0xb4) +OP_NOP6 = to_bytes(0xb5) +OP_NOP7 = to_bytes(0xb6) +OP_NOP8 = to_bytes(0xb7) +OP_NOP9 = to_bytes(0xb8) +OP_NOP10 = to_bytes(0xb9) + +# template matching params +OP_SMALLINTEGER = to_bytes(0xfa) +OP_PUBKEYS = to_bytes(0xfb) +OP_PUBKEYHASH = to_bytes(0xfd) +OP_PUBKEY = to_bytes(0xfe) + +OP_INVALIDOPCODE = to_bytes(0xff) diff --git a/counterparty-lib/counterpartylib/lib/prefetcher.py b/counterparty-lib/counterpartylib/lib/prefetcher.py new file mode 100644 index 0000000000..2cab9ca05f --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/prefetcher.py @@ -0,0 +1,75 @@ +import time +import threading +import queue +import logging + +import bitcoin as bitcoinlib + +from counterpartylib.lib import backend, ledger, config + +logger = logging.getLogger(config.LOGGER_NAME) + + +BLOCKCHAIN_CACHE = {} +BLOCKCHAIN_CACHE_MAX_SIZE = 100 +PREFETCHER_THREADS = [] +NEXT_BLOCK_TO_PREFETCH = queue.Queue() + +def next_block_index(): + block_index = NEXT_BLOCK_TO_PREFETCH.get() + NEXT_BLOCK_TO_PREFETCH.put(block_index + 1) + return block_index + +class Prefetcher(threading.Thread): + + def __init__(self, thread_index): + threading.Thread.__init__(self) + self.stop_event = threading.Event() + self.thread_index = thread_index + + def stop(self): + self.stop_event.set() + + def run(self): + logger.info(f'Starting Prefetcher process {self.thread_index}.') + + while True: + if self.stop_event.is_set(): + break + + if len(BLOCKCHAIN_CACHE) >= BLOCKCHAIN_CACHE_MAX_SIZE: + logger.debug(f'Blockchain cache is full. Sleeping Prefetcher thread {self.thread_index}.') + time.sleep(10) + continue + + block_index = next_block_index() + if not block_index: + continue + + logger.debug(f'Fetching block {block_index} with Prefetcher thread {self.thread_index}.') + block_hash = backend.getblockhash(block_index) + block = backend.getblock(block_hash) + txhash_list, raw_transactions = backend.get_tx_list(block, block_index=block_index) + BLOCKCHAIN_CACHE[block_index] = {'block_hash': block_hash, + 'txhash_list': txhash_list, + 'raw_transactions': raw_transactions, + 'previous_block_hash': bitcoinlib.core.b2lx(block.hashPrevBlock), + 'block_time': block.nTime, + 'block_difficulty': block.difficulty} + + +def start_all(num_prefetcher_threads): + # Block Prefetcher and Indexer + block_first = config.BLOCK_FIRST_TESTNET if config.TESTNET else config.BLOCK_FIRST + block_first = ledger.CURRENT_BLOCK_INDEX or block_first + NEXT_BLOCK_TO_PREFETCH.put(block_first) + for thread_index in range(1, num_prefetcher_threads + 1): + prefetcher_thread = Prefetcher(thread_index) + prefetcher_thread.daemon = True + time.sleep(0.05) # avoid DOS + prefetcher_thread.start() + PREFETCHER_THREADS.append(prefetcher_thread) + +def stop_all(): + for prefetcher_thread in PREFETCHER_THREADS: + prefetcher_thread.stop_event.set() diff --git a/counterpartylib/lib/script.py b/counterparty-lib/counterpartylib/lib/script.py similarity index 71% rename from counterpartylib/lib/script.py rename to counterparty-lib/counterpartylib/lib/script.py index a931d2d37f..6dfea1e221 100644 --- a/counterpartylib/lib/script.py +++ b/counterparty-lib/counterpartylib/lib/script.py @@ -5,17 +5,24 @@ """ import hashlib -import bitcoin as bitcoinlib import binascii +import bitcoin as bitcoinlib from bitcoin.core.key import CPubKey from bitcoin.bech32 import CBech32Data +# We are using PyCryptodome not PyCrypto +#from Crypto.Hash import RIPEMD160 +from ripemd import ripemd160 as RIPEMD160 # nosec B413 +from counterparty_rs import b58, utils from counterpartylib.lib import util from counterpartylib.lib import config from counterpartylib.lib import exceptions +from counterpartylib.lib import ledger +from counterpartylib.lib import opcodes +from counterpartylib.lib.opcodes import * -b58_digits = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' +B58_DIGITS = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' class InputError (Exception): pass @@ -45,7 +52,7 @@ def validate(address, allow_p2sh=True): # Check validity by attempting to decode. for pubkeyhash in pubkeyhashes: try: - if util.enabled('segwit_support'): + if ledger.enabled('segwit_support'): if not is_bech32(pubkeyhash): base58_check_decode(pubkeyhash, config.ADDRESSVERSION) else: @@ -55,11 +62,10 @@ def validate(address, allow_p2sh=True): raise e base58_check_decode(pubkeyhash, config.P2SH_ADDRESSVERSION) except Base58Error as e: - if not util.enabled('segwit_support') or not is_bech32(pubkeyhash): + if not ledger.enabled('segwit_support') or not is_bech32(pubkeyhash): raise e - def base58_encode(binary): """Encode the address in base58.""" # Convert big‐endian bytes to integer @@ -69,13 +75,13 @@ def base58_encode(binary): res = [] while n > 0: n, r = divmod(n, 58) - res.append(b58_digits[r]) + res.append(B58_DIGITS[r]) res = ''.join(res[::-1]) return res -def base58_check_encode(original, version): +def base58_check_encode_py(original, version): """Check if base58 encoding is valid.""" b = binascii.unhexlify(bytes(original, 'utf-8')) d = version + b @@ -92,7 +98,7 @@ def base58_check_encode(original, version): else: break - address = b58_digits[0] * pad + res + address = B58_DIGITS[0] * pad + res if original != util.hexlify(base58_check_decode(address, version)): raise AddressError('encoded address does not decode properly') @@ -100,18 +106,22 @@ def base58_check_encode(original, version): return address +def base58_check_encode(original, version): + return b58.b58_encode(version + binascii.unhexlify(original)) + + def base58_decode(s): # Convert the string to an integer n = 0 for c in s: n *= 58 - if c not in b58_digits: - raise Base58Error('Not a valid Base58 character: ‘{}’'.format(c)) - digit = b58_digits.index(c) + if c not in B58_DIGITS: + raise Base58Error(f'Not a valid Base58 character: ‘{c}’') + digit = B58_DIGITS.index(c) n += digit # Convert the integer to bytes - h = '%x' % n + h = f'{n:x}' if len(h) % 2: h = '0' + h res = binascii.unhexlify(h.encode('utf8')) @@ -119,7 +129,7 @@ def base58_decode(s): # Add padding back. pad = 0 for c in s[:-1]: - if c == b58_digits[0]: + if c == B58_DIGITS[0]: pad += 1 else: break @@ -138,7 +148,7 @@ def base58_check_decode_parts(s): return addrbyte, data, chk0 -def base58_check_decode(s, version): +def base58_check_decode_py(s, version): """Decode from base58 and return data part.""" addrbyte, data, chk0 = base58_check_decode_parts(s) @@ -148,16 +158,29 @@ def base58_check_decode(s, version): chk1 = util.dhash(addrbyte + data)[:4] if chk0 != chk1: - raise Base58ChecksumError('Checksum mismatch: 0x{} ≠ 0x{}'.format(util.hexlify(chk0), util.hexlify(chk1))) + raise Base58ChecksumError(f'Checksum mismatch: 0x{util.hexlify(chk0)} ≠ 0x{util.hexlify(chk1)}') return data +def base58_check_decode(s, version): + try: + decoded = b58.b58_decode(s) + except BaseException: # TODO: update pycoin_rs to raise a specific exception + raise Base58Error('invalid base58 string') + + if decoded[0] != ord(version): + raise VersionByteError('incorrect version byte') + + return decoded[1:] + + def is_multisig(address): """Check if the address is multi‐signature.""" array = address.split('_') return len(array) > 1 + def is_p2sh(address): if is_multisig(address): return False @@ -168,6 +191,7 @@ def is_p2sh(address): except (VersionByteError, Base58Error): return False + def is_bech32(address): try: b32data = CBech32Data(address) @@ -175,11 +199,13 @@ def is_bech32(address): except: return False + def is_fully_valid(pubkey_bin): """Check if the public key is valid.""" cpubkey = CPubKey(pubkey_bin) return cpubkey.is_fullyvalid + def make_canonical(address): """Return canonical version of the address.""" if is_multisig(address): @@ -192,6 +218,7 @@ def make_canonical(address): else: return address + def test_array(signatures_required, pubs, signatures_possible): """Check if multi‐signature data is valid.""" try: @@ -208,12 +235,14 @@ def test_array(signatures_required, pubs, signatures_possible): if signatures_possible != len(pubs): raise InputError('Incorrect number of pubkeys/pubkeyhashes in multi‐signature address.') + def construct_array(signatures_required, pubs, signatures_possible): """Create a multi‐signature address.""" test_array(signatures_required, pubs, signatures_possible) address = '_'.join([str(signatures_required)] + sorted(pubs) + [str(signatures_possible)]) return address + def extract_array(address): """Extract data from multi‐signature address.""" assert is_multisig(address) @@ -222,6 +251,7 @@ def extract_array(address): test_array(signatures_required, pubs, signatures_possible) return int(signatures_required), pubs, int(signatures_possible) + def pubkeyhash_array(address): """Return PubKeyHashes from an address.""" signatures_required, pubs, signatures_possible = extract_array(address) @@ -230,28 +260,33 @@ def pubkeyhash_array(address): pubkeyhashes = pubs return pubkeyhashes + def hash160(x): x = hashlib.sha256(x).digest() - m = hashlib.new('ripemd160') + m = RIPEMD160.new() m.update(x) return m.digest() + def pubkey_to_pubkeyhash(pubkey): """Convert public key to PubKeyHash.""" pubkeyhash = hash160(pubkey) pubkey = base58_check_encode(binascii.hexlify(pubkeyhash).decode('utf-8'), config.ADDRESSVERSION) return pubkey + def pubkey_to_p2whash(pubkey): """Convert public key to PayToWitness.""" pubkeyhash = hash160(pubkey) pubkey = CBech32Data.from_bytes(0, pubkeyhash) return str(pubkey) + def bech32_to_scripthash(address): bech32 = CBech32Data(address) return bytes(bech32) + def get_asm(scriptpubkey): # TODO: When is an exception thrown here? Can this `try` block be tighter? Can it be replaced by a conditional? try: @@ -260,7 +295,7 @@ def get_asm(scriptpubkey): for op in scriptpubkey: if type(op) == bitcoinlib.core.script.CScriptOp: # TODO: `op = element` - asm.append(str(op)) + asm.append(getattr(opcodes, str(op))) else: # TODO: `data = element` (?) asm.append(op) @@ -270,30 +305,59 @@ def get_asm(scriptpubkey): raise exceptions.DecodeError('empty output') return asm + +def script_to_asm(scriptpubkey): + try: + script = bytes(scriptpubkey, 'utf-8') if type(scriptpubkey) == str else bytes(scriptpubkey) + asm = utils.script_to_asm(script) + if asm[-1] == OP_CHECKMULTISIG: + asm[-2] = int.from_bytes(asm[-2], 'big') + asm[0] = int.from_bytes(asm[0], 'big') + return asm + except BaseException as e: + raise exceptions.DecodeError('invalid script') + + +def script_to_address(scriptpubkey): + try: + network = 'mainnet' if config.TESTNET == False else 'testnet' + script = bytes(scriptpubkey, 'utf-8') if type(scriptpubkey) == str else bytes(scriptpubkey) + return utils.script_to_address(script, network) + except BaseException as e: + raise exceptions.DecodeError('scriptpubkey decoding error') + + def get_checksig(asm): - if len(asm) == 5 and asm[0] == 'OP_DUP' and asm[1] == 'OP_HASH160' and asm[3] == 'OP_EQUALVERIFY' and asm[4] == 'OP_CHECKSIG': - pubkeyhash = asm[2] - if type(pubkeyhash) == bytes: - return pubkeyhash + try: + op_dup, op_hash160, pubkeyhash, op_equalverify, op_checksig = asm + except ValueError: + raise exceptions.DecodeError('invalid OP_CHECKSIG') from None + + if (op_dup, op_hash160, op_equalverify, op_checksig) == (OP_DUP, OP_HASH160, OP_EQUALVERIFY, OP_CHECKSIG) and type(pubkeyhash) == bytes: + return pubkeyhash + raise exceptions.DecodeError('invalid OP_CHECKSIG') + def get_checkmultisig(asm): # N‐of‐2 - if len(asm) == 5 and asm[3] == 2 and asm[4] == 'OP_CHECKMULTISIG': + if len(asm) == 5 and asm[3] == 2 and asm[4] == OP_CHECKMULTISIG: pubkeys, signatures_required = asm[1:3], asm[0] if all([type(pubkey) == bytes for pubkey in pubkeys]): return pubkeys, signatures_required # N‐of‐3 - if len(asm) == 6 and asm[4] == 3 and asm[5] == 'OP_CHECKMULTISIG': + if len(asm) == 6 and asm[4] == 3 and asm[5] == OP_CHECKMULTISIG: pubkeys, signatures_required = asm[1:4], asm[0] if all([type(pubkey) == bytes for pubkey in pubkeys]): return pubkeys, signatures_required raise exceptions.DecodeError('invalid OP_CHECKMULTISIG') + +# TODO: Not used ? def scriptpubkey_to_address(scriptpubkey): - asm = get_asm(scriptpubkey) + asm = script_to_asm(scriptpubkey) - if asm[-1] == 'OP_CHECKSIG': + if asm[-1] == OP_CHECKSIG: try: checksig = get_checksig(asm) except exceptions.DecodeError: # coinbase @@ -301,20 +365,51 @@ def scriptpubkey_to_address(scriptpubkey): return base58_check_encode(binascii.hexlify(checksig).decode('utf-8'), config.ADDRESSVERSION) - elif asm[-1] == 'OP_CHECKMULTISIG': + elif asm[-1] == OP_CHECKMULTISIG: pubkeys, signatures_required = get_checkmultisig(asm) pubkeyhashes = [pubkey_to_pubkeyhash(pubkey) for pubkey in pubkeys] return construct_array(signatures_required, pubkeyhashes, len(pubkeyhashes)) - elif len(asm) == 3 and asm[0] == 'OP_HASH160' and asm[2] == 'OP_EQUAL': + elif len(asm) == 3 and asm[0] == OP_HASH160 and asm[2] == OP_EQUAL: return base58_check_encode(binascii.hexlify(asm[1]).decode('utf-8'), config.P2SH_ADDRESSVERSION) return None # TODO: Use `python-bitcointools` instead. (Get rid of `pycoin` dependency.) -from pycoin.encoding import wif_to_tuple_of_secret_exponent_compressed, public_pair_to_sec, EncodingError -from pycoin.ecdsa import generator_secp256k1, public_pair_for_secret_exponent +from pycoin.encoding.sec import public_pair_to_sec +from pycoin.encoding.exceptions import EncodingError +from pycoin.encoding.bytes32 import from_bytes_32 +from pycoin.encoding.b58 import a2b_hashed_base58 +from pycoin.ecdsa.secp256k1 import secp256k1_generator as generator_secp256k1 + + +def wif_to_tuple_of_prefix_secret_exponent_compressed(wif): + """ + Return a tuple of (prefix, secret_exponent, is_compressed). + """ + decoded = a2b_hashed_base58(wif) + actual_prefix, private_key = decoded[:1], decoded[1:] + compressed = len(private_key) > 32 + return actual_prefix, from_bytes_32(private_key[:32]), compressed + + +def wif_to_tuple_of_secret_exponent_compressed(wif, allowable_wif_prefixes=None): + """Convert a WIF string to the corresponding secret exponent. Private key manipulation. + Returns a tuple: the secret exponent, as a bignum integer, and a boolean indicating if the + WIF corresponded to a compressed key or not. + + Not that it matters, since we can use the secret exponent to generate both the compressed + and uncompressed Bitcoin address.""" + actual_prefix, secret_exponent, is_compressed = wif_to_tuple_of_prefix_secret_exponent_compressed(wif) + if allowable_wif_prefixes and actual_prefix not in allowable_wif_prefixes: + raise EncodingError(f"unexpected first byte of WIF {wif}") + return secret_exponent, is_compressed + + +def public_pair_for_secret_exponent(generator, secret_exponent): + return (generator*secret_exponent).pair() + class AltcoinSupportError (Exception): pass def private_key_to_public_key(private_key_wif): @@ -335,6 +430,7 @@ def private_key_to_public_key(private_key_wif): public_key_hex = binascii.hexlify(public_key).decode('utf-8') return public_key_hex + def is_pubkeyhash(monosig_address): """Check if PubKeyHash is valid P2PKH address. """ assert not is_multisig(monosig_address) @@ -344,6 +440,7 @@ def is_pubkeyhash(monosig_address): except (Base58Error, VersionByteError): return False + def make_pubkeyhash(address): """Create a new PubKeyHash.""" if is_multisig(address): @@ -357,7 +454,7 @@ def make_pubkeyhash(address): pubkeyhashes.append(pubkeyhash) pubkeyhash_address = construct_array(signatures_required, pubkeyhashes, signatures_possible) else: - if util.enabled('segwit_support') and is_bech32(address): + if ledger.enabled('segwit_support') and is_bech32(address): pubkeyhash_address = address # Some bech32 addresses are valid base58 data elif is_pubkeyhash(address): pubkeyhash_address = address @@ -367,6 +464,7 @@ def make_pubkeyhash(address): pubkeyhash_address = pubkey_to_pubkeyhash(binascii.unhexlify(bytes(address, 'utf-8'))) return pubkeyhash_address + def extract_pubkeys(pub): """Assume pubkey if not pubkeyhash. (Check validity later.)""" pubkeys = [] @@ -377,11 +475,9 @@ def extract_pubkeys(pub): pubkeys.append(pub) elif is_p2sh(pub): pass - elif util.enabled('segwit_support') and is_bech32(pub): + elif ledger.enabled('segwit_support') and is_bech32(pub): pass else: if not is_pubkeyhash(pub): pubkeys.append(pub) return pubkeys - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/transaction.py b/counterparty-lib/counterpartylib/lib/transaction.py similarity index 89% rename from counterpartylib/lib/transaction.py rename to counterparty-lib/counterpartylib/lib/transaction.py index e6494c282f..a1f5eb2c5b 100644 --- a/counterpartylib/lib/transaction.py +++ b/counterparty-lib/counterpartylib/lib/transaction.py @@ -13,7 +13,6 @@ import time import decimal import logging -logger = logging.getLogger(__name__) import requests import bitcoin as bitcoinlib from bitcoin.core.script import CScript @@ -30,8 +29,12 @@ from counterpartylib.lib import script from counterpartylib.lib import backend from counterpartylib.lib import arc4 +from counterpartylib.lib import ledger +from counterpartylib.lib import gettxinfo from counterpartylib.lib.transaction_helper import serializer, p2sh_encoding +from counterpartylib.lib.kickstart.blocks_parser import BlockchainParser +logger = logging.getLogger(config.LOGGER_NAME) # Constants OP_RETURN = b'\x6a' @@ -73,7 +76,7 @@ def initialise(): def print_coin(coin): - return 'amount: {:.8f}; txid: {}; vout: {}; confirmations: {}'.format(coin['amount'], coin['txid'], coin['vout'], coin.get('confirmations', '?')) # simplify and make deterministic + return f"amount: {coin['amount']:.8f}; txid: {coin['txid']}; vout: {coin['vout']}; confirmations: {coin.get('confirmations', '?')}" # simplify and make deterministic def chunks(l, n): @@ -84,7 +87,7 @@ def chunks(l, n): def make_outkey(output): - return '{}{}'.format(output['txid'], output['vout']) + return f"{output['txid']}{output['vout']}" def make_outkey_vin_txid(txid, vout): @@ -103,7 +106,7 @@ def make_outkey_vin(txhex, vout): tx = bitcoinlib.core.CTransaction.deserialize(txbin) outkey = [(vin.prevout.hash, vin.prevout.n) for vin in tx.vin] - outkey = hashlib.sha256(("%s%s" % (outkey, vout)).encode('ascii')).digest() + outkey = hashlib.sha256((f"{outkey}{vout}").encode('ascii')).digest() return outkey @@ -161,10 +164,10 @@ def construct_coin_selection(encoding, data_array, source, allow_unconfirmed_inp if encoding == 'multisig': dust = config.DEFAULT_MULTISIG_DUST_SIZE else: - dust = config.DEFAULT_REGULAR_DUST_SIZE - + dust = config.DEFAULT_REGULAR_DUST_SIZE + unspent = backend.sort_unspent_txouts(unspent, dust_size=dust) - logger.debug('Sorted candidate UTXOs: {}'.format([print_coin(coin) for coin in unspent])) + logger.debug(f'Sorted candidate UTXOs: {[print_coin(coin) for coin in unspent]}') use_inputs = unspent # use backend estimated fee_per_kb @@ -173,7 +176,7 @@ def construct_coin_selection(encoding, data_array, source, allow_unconfirmed_inp if estimated_fee_per_kb is not None: fee_per_kb = max(estimated_fee_per_kb, fee_per_kb) # never drop below the default fee_per_kb - logger.debug('Fee/KB {:.8f}'.format(fee_per_kb / config.UNIT)) + logger.debug(f'Fee/KB {fee_per_kb / config.UNIT:.8f}') inputs = [] btc_in = 0 @@ -182,14 +185,13 @@ def construct_coin_selection(encoding, data_array, source, allow_unconfirmed_inp final_fee = fee_per_kb desired_input_count = 1 - if encoding == 'multisig' and data_array and util.enabled('bytespersigop'): + if encoding == 'multisig' and data_array and ledger.enabled('bytespersigop'): desired_input_count = len(data_array) * 2 - # pop inputs until we can pay for the fee use_inputs_index = 0 for coin in use_inputs: - logger.debug('New input: {}'.format(print_coin(coin))) + logger.debug(f'New input: {print_coin(coin)}') inputs.append(coin) btc_in += round(coin['amount'] * config.UNIT) @@ -201,32 +203,32 @@ def construct_coin_selection(encoding, data_array, source, allow_unconfirmed_inp else: necessary_fee = int(size / 1000 * fee_per_kb) final_fee = max(fee_provided, necessary_fee) - logger.getChild('p2shdebug').debug('final_fee inputs: %d size: %d final_fee %s' % (len(inputs), size, final_fee)) + logger.debug(f'final_fee inputs: {len(inputs)} size: {size} final_fee {final_fee}') # Check if good. btc_out = destination_btc_out + data_btc_out change_quantity = btc_in - (btc_out + final_fee) - logger.debug('Size: {} Fee: {:.8f} Change quantity: {:.8f} BTC'.format(size, final_fee / config.UNIT, change_quantity / config.UNIT)) - + logger.debug(f'Size: {size} Fee: {final_fee / config.UNIT:.8f} Change quantity: {change_quantity / config.UNIT:.8f} BTC') + #If after the sum of all the utxos the change is dust, then it will be added to the miners instead of returning an error if (use_inputs_index == len(use_inputs)-1) and (change_quantity > 0) and (change_quantity < regular_dust_size): sufficient_funds = True final_fee = final_fee + change_quantity change_quantity = 0 - # If change is necessary, must not be a dust output. + # If change is necessary, must not be a dust output. elif change_quantity == 0 or change_quantity >= regular_dust_size: sufficient_funds = True if len(inputs) >= desired_input_count: break - - use_inputs_index = use_inputs_index + 1 + + use_inputs_index = use_inputs_index + 1 if not sufficient_funds: # Approximate needed change, fee by with most recently calculated # quantities. btc_out = destination_btc_out + data_btc_out total_btc_out = btc_out + max(change_quantity, 0) + final_fee - raise exceptions.BalanceError('Insufficient {} at address {}. (Need approximately {} {}.) To spend unconfirmed coins, use the flag `--unconfirmed`. (Unconfirmed coins cannot be spent from multi‐sig addresses.)'.format(config.BTC, source, total_btc_out / config.UNIT, config.BTC)) + raise exceptions.BalanceError(f'Insufficient {config.BTC} at address {source}. (Need approximately {total_btc_out / config.UNIT} {config.BTC}.) To spend unconfirmed coins, use the flag `--unconfirmed`. (Unconfirmed coins cannot be spent from multi‐sig addresses.)') # Lock the source's inputs (UTXOs) chosen for this transaction if UTXO_LOCKS is not None and not disable_utxo_locks: @@ -237,9 +239,10 @@ def construct_coin_selection(encoding, data_array, source, allow_unconfirmed_inp for input in inputs: UTXO_LOCKS[source][make_outkey(input)] = input - logger.debug("UTXO locks: Potentials ({}): {}, Used: {}, locked UTXOs: {}".format( - len(unspent), [make_outkey(coin) for coin in unspent], - [make_outkey(input) for input in inputs], list(UTXO_LOCKS[source].keys()))) + list_unspent = [make_outkey(coin) for coin in unspent] + list_used = [make_outkey(input) for input in inputs] + list_locked = list(UTXO_LOCKS[source].keys()) + logger.debug(f"UTXO locks: Potentials ({len(unspent)}): {list_unspent}, Used: {list_used}, locked UTXOs: {list_locked}") # ensure inputs have scriptPubKey # this is not provided by indexd @@ -285,18 +288,18 @@ def select_any_coin_from_source(source, allow_unconfirmed_inputs=True, disable_u def return_result(tx_hexes, old_style_api): - tx_hexes = list(filter(None, tx_hexes)) # filter out None + tx_hexes = list(filter(None, tx_hexes)) # filter out None - if old_style_api: - if len(tx_hexes) != 1: - raise Exception("Can't do 2 TXs with old_style_api") + if old_style_api: + if len(tx_hexes) != 1: + raise Exception("Can't do 2 TXs with old_style_api") + return tx_hexes[0] + else: + if len(tx_hexes) == 1: return tx_hexes[0] else: - if len(tx_hexes) == 1: - return tx_hexes[0] - else: - return tx_hexes + return tx_hexes def construct (db, tx_info, encoding='auto', fee_per_kb=config.DEFAULT_FEE_PER_KB, @@ -357,9 +360,9 @@ def construct (db, tx_info, encoding='auto', if len(data) + len(config.PREFIX) <= config.OP_RETURN_MAX_SIZE: encoding = 'opreturn' else: - encoding = 'p2sh' if not old_style_api and util.enabled('p2sh_encoding') else 'multisig' # p2sh is not possible with old_style_api + encoding = 'p2sh' if not old_style_api and ledger.enabled('p2sh_encoding') else 'multisig' # p2sh is not possible with old_style_api - elif desired_encoding == 'p2sh' and not util.enabled('p2sh_encoding'): + elif desired_encoding == 'p2sh' and not ledger.enabled('p2sh_encoding'): raise exceptions.TransactionError('P2SH encoding not enabled yet') elif encoding not in ('pubkeyhash', 'multisig', 'opreturn', 'p2sh'): @@ -371,8 +374,8 @@ def construct (db, tx_info, encoding='auto', '''Destinations''' # Destination outputs. - # Replace multi‐sig addresses with multi‐sig pubkeys. Check that the - # destination output isn’t a dust output. Set null values to dust size. + # Replace multi‐sig addresses with multi‐sig pubkeys. Check that the + # destination output isn’t a dust output. Set null values to dust size. destination_outputs_new = [] if encoding != 'p2sh': for (address, value) in destination_outputs: @@ -397,7 +400,6 @@ def construct (db, tx_info, encoding='auto', destination_outputs = destination_outputs_new destination_btc_out = sum([value for address, value in destination_outputs]) - '''Data''' if data: @@ -455,7 +457,7 @@ def construct (db, tx_info, encoding='auto', dust_return_pubkey = None data_btc_out = data_value * len(data_array) - logger.getChild('p2shdebug').debug('data_btc_out=%s (data_value=%d len(data_array)=%d)' % (data_btc_out, data_value, len(data_array))) + logger.debug(f'data_btc_out={data_btc_out} (data_value={data_value} len(data_array)={len(data_array)})') '''Inputs''' btc_in = 0 @@ -539,7 +541,7 @@ def construct (db, tx_info, encoding='auto', txid_ba = bytearray(ptx.GetTxid()) txid_ba.reverse() pretx_txid = bytes(txid_ba) # gonna leave the malleability problem to upstream - logger.getChild('p2shdebug').debug('pretx_txid %s' % pretx_txid) + logger.debug(f'pretx_txid {pretx_txid}') print('pretx txid:', binascii.hexlify(pretx_txid)) if unsigned_pretx: @@ -568,7 +570,7 @@ def construct (db, tx_info, encoding='auto', unsigned_tx_hex = unsigned_datatx_hex else: # we're just gonna return the pretx, it doesn't require any of the further checks - logger.warn('old_style_api = %s' % old_style_api) + logger.warning(f'old_style_api = {old_style_api}') return return_result([unsigned_pretx_hex], old_style_api=old_style_api) else: @@ -578,7 +580,6 @@ def construct (db, tx_info, encoding='auto', dust_return_pubkey=dust_return_pubkey) unsigned_tx_hex = binascii.hexlify(unsigned_tx).decode('utf-8') - '''Sanity Check''' # Desired transaction info. @@ -590,7 +591,7 @@ def construct (db, tx_info, encoding='auto', # if desired_destination == '': # desired_destination = desired_source # else: - # desired_destination += '-{}'.format(desired_source) + # desired_destination += f'-{desired_source}' # NOTE if desired_data == None: desired_data = b'' @@ -599,7 +600,12 @@ def construct (db, tx_info, encoding='auto', try: if pretx_txid and unsigned_pretx: backend.cache_pretx(pretx_txid, unsigned_pretx) - parsed_source, parsed_destination, x, y, parsed_data, extra = blocks._get_tx_info(unsigned_tx_hex, p2sh_is_segwit=script.is_bech32(desired_source)) + parsed_source, parsed_destination, x, y, parsed_data, extra = gettxinfo._get_tx_info( + db, + BlockchainParser().deserialize_tx(unsigned_tx_hex), + ledger.CURRENT_BLOCK_INDEX, + p2sh_is_segwit=script.is_bech32(desired_source) + ) if encoding == 'p2sh': # make_canonical can't determine the address, so we blindly change the desired to the parsed @@ -617,7 +623,7 @@ def construct (db, tx_info, encoding='auto', 'btc_fee': final_fee, 'tx_hex': unsigned_tx_hex, } - logger.getChild('p2shdebug').debug('BTC-ONLY') + logger.debug('BTC-ONLY') return return_result([unsigned_pretx_hex, unsigned_tx_hex], old_style_api=old_style_api) desired_source = script.make_canonical(desired_source) @@ -630,7 +636,7 @@ def construct (db, tx_info, encoding='auto', for input in inputs: UTXO_LOCKS[source].pop(make_outkey(input), None) - raise exceptions.TransactionError('Constructed transaction does not parse correctly: {} ≠ {}'.format(desired, parsed)) + raise exceptions.TransactionError(f'Constructed transaction does not parse correctly: {desired} ≠ {parsed}') if extended_tx_info: return { diff --git a/counterpartylib/lib/messages/versions/mpma_util/__init__.py b/counterparty-lib/counterpartylib/lib/transaction_helper/__init__.py similarity index 100% rename from counterpartylib/lib/messages/versions/mpma_util/__init__.py rename to counterparty-lib/counterpartylib/lib/transaction_helper/__init__.py diff --git a/counterpartylib/lib/transaction_helper/p2sh_encoding.py b/counterparty-lib/counterpartylib/lib/transaction_helper/p2sh_encoding.py similarity index 56% rename from counterpartylib/lib/transaction_helper/p2sh_encoding.py rename to counterparty-lib/counterpartylib/lib/transaction_helper/p2sh_encoding.py index 07a8c21dd9..03c5a471c3 100644 --- a/counterpartylib/lib/transaction_helper/p2sh_encoding.py +++ b/counterparty-lib/counterpartylib/lib/transaction_helper/p2sh_encoding.py @@ -8,8 +8,6 @@ import logging import traceback # not needed if not printing exceptions on p2sh decoding -logger = logging.getLogger(__name__) - import bitcoin as bitcoinlib from bitcoin.core.script import CScript @@ -17,6 +15,8 @@ from counterpartylib.lib import script from counterpartylib.lib import exceptions +logger = logging.getLogger(config.LOGGER_NAME) + def maximum_data_chunk_size(pubkeylength): if pubkeylength >= 0: return bitcoinlib.core.script.MAX_SCRIPT_ELEMENT_SIZE - len(config.PREFIX) - pubkeylength - 12 #Two bytes are for unique offset. This will work for a little more than 1000 outputs @@ -51,12 +51,12 @@ def calculate_outputs(destination_outputs, data_array, fee_per_kb, exact_fee=Non data_value = [data_value for i in range(len(data_array))] data_value[len(data_array)-1] = data_value[len(data_array)-1] + remain_fee data_btc_out = exact_fee - - data_output = (data_array, data_value) - logger.getChild('p2shdebug').debug('datatx size: %d fee: %d' % (datatx_size, datatx_necessary_fee)) - logger.getChild('p2shdebug').debug('pretx output size: %d' % (pretx_output_size, )) - logger.getChild('p2shdebug').debug('size_for_fee: %d' % (size_for_fee, )) + data_output = (data_array, data_value) + + logger.debug(f'datatx size: {datatx_size} fee: {datatx_necessary_fee}') + logger.debug(f'pretx output size: {pretx_output_size}') + logger.debug(f'size_for_fee: {size_for_fee}') return size_for_fee, datatx_necessary_fee, data_value, data_btc_out @@ -66,17 +66,17 @@ def decode_p2sh_input(asm, p2sh_is_segwit=False): ''' pubkey, source, redeem_script_is_valid, found_data = decode_data_redeem_script(asm[-1], p2sh_is_segwit) if redeem_script_is_valid: - # this is a signed transaction, so we got {sig[,sig]} {datachunk} {redeemScript} + # this is a signed transaction, so we got {sig[,sig]} {datachunk} {redeem_script} datachunk = found_data - redeemScript = asm[-1] #asm[-2:] + redeem_script = asm[-1] #asm[-2:] else: #print('ASM:', len(asm)) pubkey, source, redeem_script_is_valid, found_data = decode_data_redeem_script(asm[-1], p2sh_is_segwit) if not redeem_script_is_valid or len(asm) != 3: return None, None, None - # this is an unsigned transaction (last is outputScript), so we got [datachunk] [redeemScript] [temporaryOutputScript] - datachunk, redeemScript, _substituteScript = asm + # this is an unsigned transaction (last is outputScript), so we got [datachunk] [redeem_script] [temporaryOutputScript] + datachunk, redeem_script, _substitute_script = asm data = datachunk if data[:len(config.PREFIX)] == config.PREFIX: @@ -107,51 +107,51 @@ def decode_data_push(arr, pos): return pos + pushlen, arr[pos:pos + pushlen] -def decode_data_redeem_script(redeemScript, p2sh_is_segwit=False): - script_len = len(redeemScript) +def decode_data_redeem_script(redeem_script, p2sh_is_segwit=False): + script_len = len(redeem_script) found_data = b'' if script_len == 41 and \ - redeemScript[0] == bitcoinlib.core.script.OP_DROP and \ - redeemScript[35] == bitcoinlib.core.script.OP_CHECKSIGVERIFY and \ - redeemScript[37] == bitcoinlib.core.script.OP_DROP and \ - redeemScript[38] == bitcoinlib.core.script.OP_DEPTH and \ - redeemScript[39] == bitcoinlib.core.script.OP_0 and \ - redeemScript[40] == bitcoinlib.core.script.OP_EQUAL: - # - OP_DROP [push] [33-byte pubkey] OP_CHECKSIGVERIFY [n] OP_DROP OP_DEPTH 0 OP_EQUAL - pubkey = redeemScript[2:35] - if p2sh_is_segwit: - source = script.pubkey_to_p2whash(pubkey) - else: - source = script.pubkey_to_pubkeyhash(pubkey) - redeem_script_is_valid = True + redeem_script[0] == bitcoinlib.core.script.OP_DROP and \ + redeem_script[35] == bitcoinlib.core.script.OP_CHECKSIGVERIFY and \ + redeem_script[37] == bitcoinlib.core.script.OP_DROP and \ + redeem_script[38] == bitcoinlib.core.script.OP_DEPTH and \ + redeem_script[39] == bitcoinlib.core.script.OP_0 and \ + redeem_script[40] == bitcoinlib.core.script.OP_EQUAL: + # - OP_DROP [push] [33-byte pubkey] OP_CHECKSIGVERIFY [n] OP_DROP OP_DEPTH 0 OP_EQUAL + pubkey = redeem_script[2:35] + if p2sh_is_segwit: + source = script.pubkey_to_p2whash(pubkey) + else: + source = script.pubkey_to_pubkeyhash(pubkey) + redeem_script_is_valid = True elif script_len > 41 and \ - redeemScript[0] == bitcoinlib.core.script.OP_DROP and \ - redeemScript[script_len-4] == bitcoinlib.core.script.OP_DROP and \ - redeemScript[script_len-3] == bitcoinlib.core.script.OP_DEPTH and \ - redeemScript[script_len-2] == bitcoinlib.core.script.OP_0 and \ - redeemScript[script_len-1] == bitcoinlib.core.script.OP_EQUAL: - # - OP_DROP {arbitrary multisig script} [n] OP_DROP OP_DEPTH 0 OP_EQUAL - pubkey = None - source = None - redeem_script_is_valid = True + redeem_script[0] == bitcoinlib.core.script.OP_DROP and \ + redeem_script[script_len-4] == bitcoinlib.core.script.OP_DROP and \ + redeem_script[script_len-3] == bitcoinlib.core.script.OP_DEPTH and \ + redeem_script[script_len-2] == bitcoinlib.core.script.OP_0 and \ + redeem_script[script_len-1] == bitcoinlib.core.script.OP_EQUAL: + # - OP_DROP {arbitrary multisig script} [n] OP_DROP OP_DEPTH 0 OP_EQUAL + pubkey = None + source = None + redeem_script_is_valid = True else: pubkey = None source = None redeem_script_is_valid = False try: - opcode = bitcoinlib.core.script.CScriptOp(redeemScript[0]) + opcode = bitcoinlib.core.script.CScriptOp(redeem_script[0]) if opcode > bitcoinlib.core.script.OP_0 and opcode < bitcoinlib.core.script.OP_PUSHDATA1 or \ opcode in (bitcoinlib.core.script.OP_PUSHDATA1, bitcoinlib.core.script.OP_PUSHDATA2, bitcoinlib.core.script.OP_PUSHDATA4): pos = 0 - pos, found_data = decode_data_push(redeemScript, 0) + pos, found_data = decode_data_push(redeem_script, 0) - if redeemScript[pos] == bitcoinlib.core.script.OP_DROP: + if redeem_script[pos] == bitcoinlib.core.script.OP_DROP: pos += 1 valid_sig = False - opcode = redeemScript[pos] + opcode = redeem_script[pos] if type(opcode) != type(''): if opcode >= bitcoinlib.core.script.OP_2 and opcode <= bitcoinlib.core.script.OP_15: # it's multisig @@ -161,84 +161,84 @@ def decode_data_redeem_script(redeemScript, p2sh_is_segwit=False): num_sigs = 0 found_sigs = False while not found_sigs: - pos, npubkey = decode_data_push(redeemScript, pos) + pos, npubkey = decode_data_push(redeem_script, pos) num_sigs += 1 - if redeemScript[pos] - bitcoinlib.core.script.OP_1 + 1 == num_sigs: + if redeem_script[pos] - bitcoinlib.core.script.OP_1 + 1 == num_sigs: found_sigs = True pos += 1 - valid_sig = redeemScript[pos] == bitcoinlib.core.script.OP_CHECKMULTISIGVERIFY + valid_sig = redeem_script[pos] == bitcoinlib.core.script.OP_CHECKMULTISIGVERIFY else: # it's p2pkh - pos, pubkey = decode_data_push(redeemScript, pos) + pos, pubkey = decode_data_push(redeem_script, pos) if p2sh_is_segwit: source = script.pubkey_to_p2whash(pubkey) else: source = script.pubkey_to_pubkeyhash(pubkey) - valid_sig = redeemScript[pos] == bitcoinlib.core.script.OP_CHECKSIGVERIFY + valid_sig = redeem_script[pos] == bitcoinlib.core.script.OP_CHECKSIGVERIFY pos += 1 if valid_sig: - uniqueOffsetLength = 0 + unique_offfset_length = 0 - for i in range(pos+1, len(redeemScript)): - if redeemScript[i] == bitcoinlib.core.script.OP_DROP: - uniqueOffsetLength = i-pos-1 + for i in range(pos+1, len(redeem_script)): + if redeem_script[i] == bitcoinlib.core.script.OP_DROP: + unique_offfset_length = i-pos-1 break - redeem_script_is_valid = redeemScript[pos + 1 + uniqueOffsetLength] == bitcoinlib.core.script.OP_DROP and \ - redeemScript[pos + 2 + uniqueOffsetLength] == bitcoinlib.core.script.OP_DEPTH and \ - redeemScript[pos + 3 + uniqueOffsetLength] == 0 and \ - redeemScript[pos + 4 + uniqueOffsetLength] == bitcoinlib.core.script.OP_EQUAL + redeem_script_is_valid = redeem_script[pos + 1 + unique_offfset_length] == bitcoinlib.core.script.OP_DROP and \ + redeem_script[pos + 2 + unique_offfset_length] == bitcoinlib.core.script.OP_DEPTH and \ + redeem_script[pos + 3 + unique_offfset_length] == 0 and \ + redeem_script[pos + 4 + unique_offfset_length] == bitcoinlib.core.script.OP_EQUAL except Exception as e: - pass #traceback.print_exc() + return None, None, False, None return pubkey, source, redeem_script_is_valid, found_data -def make_p2sh_encoding_redeemscript(datachunk, n, pubKey=None, multisig_pubkeys=None, multisig_pubkeys_required=None): - _logger = logger.getChild('p2sh_encoding') +def make_p2sh_encoding_redeemscript(datachunk, n, pub_key=None, multisig_pubkeys=None, multisig_pubkeys_required=None): + _logger = logger assert len(datachunk) <= bitcoinlib.core.script.MAX_SCRIPT_ELEMENT_SIZE - dataDropScript = [datachunk, bitcoinlib.core.script.OP_DROP] # just drop the data chunk - cleanupScript = [n, bitcoinlib.core.script.OP_DROP, bitcoinlib.core.script.OP_DEPTH, 0, bitcoinlib.core.script.OP_EQUAL] # unique offset + prevent scriptSig malleability + data_drop_script = [datachunk, bitcoinlib.core.script.OP_DROP] # just drop the data chunk + cleanup_script = [n, bitcoinlib.core.script.OP_DROP, bitcoinlib.core.script.OP_DEPTH, 0, bitcoinlib.core.script.OP_EQUAL] # unique offset + prevent scriptSig malleability - if pubKey is not None: + if pub_key is not None: # a p2pkh script looks like this: {pubkey} OP_CHECKSIGVERIFY - verifyOwnerScript = [pubKey, bitcoinlib.core.script.OP_CHECKSIGVERIFY] + verify_owner_script = [pub_key, bitcoinlib.core.script.OP_CHECKSIGVERIFY] elif multisig_pubkeys_required is not None and multisig_pubkeys: # a 2-of-3 multisig looks like this: # 2 {pubkey1} {pubkey2} {pubkey3} 3 OP_CHECKMULTISIGVERIFY multisig_pubkeys_required = int(multisig_pubkeys_required) if multisig_pubkeys_required < 2 or multisig_pubkeys_required > 15: raise exceptions.TransactionError('invalid multisig pubkeys value') - verifyOwnerScript = [multisig_pubkeys_required] + verify_owner_script = [multisig_pubkeys_required] for multisig_pubkey in multisig_pubkeys: - verifyOwnerScript.append(multisig_pubkey) - verifyOwnerScript = verifyOwnerScript + [len(multisig_pubkeys), bitcoinlib.core.script.OP_CHECKMULTISIGVERIFY] + verify_owner_script.append(multisig_pubkey) + verify_owner_script = verify_owner_script + [len(multisig_pubkeys), bitcoinlib.core.script.OP_CHECKMULTISIGVERIFY] else: - raise exceptions.TransactionError('Either pubKey or multisig pubKeys must be provided') + raise exceptions.TransactionError('Either pub_key or multisig pub_keys must be provided') - #redeemScript = CScript(datachunk) + CScript(dataDropScript + verifyOwnerScript + cleanupScript) - redeemScript = CScript(dataDropScript + verifyOwnerScript + cleanupScript) + #redeem_script = CScript(datachunk) + CScript(data_drop_script + verify_owner_script + cleanup_script) + redeem_script = CScript(data_drop_script + verify_owner_script + cleanup_script) - _logger.debug('datachunk %s' % (binascii.hexlify(datachunk))) - _logger.debug('dataDropScript %s (%s)' % (repr(CScript(dataDropScript)), binascii.hexlify(CScript(dataDropScript)))) - _logger.debug('verifyOwnerScript %s (%s)' % (repr(CScript(verifyOwnerScript)), binascii.hexlify(CScript(verifyOwnerScript)))) - _logger.debug('entire redeemScript %s (%s)' % (repr(redeemScript), binascii.hexlify(redeemScript))) + _logger.debug(f'datachunk {binascii.hexlify(datachunk)}') + _logger.debug(f'data_drop_script {repr(CScript(data_drop_script))} ({binascii.hexlify(CScript(data_drop_script))})') + _logger.debug(f'verifyOwnerScript {repr(CScript(verify_owner_script))} ({binascii.hexlify(CScript(verify_owner_script))})') + _logger.debug(f'entire redeem_script {repr(redeem_script)} ({binascii.hexlify(redeem_script)})') - #scriptSig = CScript([]) + redeemScript # PUSH(datachunk) + redeemScript - scriptSig = CScript([redeemScript]) - outputScript = redeemScript.to_p2sh_scriptPubKey() + #script_sig = CScript([]) + redeem_script # PUSH(datachunk) + redeem_script + script_sig = CScript([redeem_script]) + output_script = redeem_script.to_p2sh_scriptPubKey() - _logger.debug('scriptSig %s (%s)' % (repr(scriptSig), binascii.hexlify(scriptSig))) - _logger.debug('outputScript %s (%s)' % (repr(outputScript), binascii.hexlify(outputScript))) + _logger.debug(f'scriptSig {repr(script_sig)} ({binascii.hexlify(script_sig)})') + _logger.debug(f'outputScript {repr(output_script)} ({binascii.hexlify(output_script)})') - # outputScript looks like OP_HASH160 {{ hash160([redeemScript]) }} OP_EQUALVERIFY - # redeemScript looks like OP_DROP {{ pubkey }} OP_CHECKSIGVERIFY {{ n }} OP_DROP OP_DEPTH 0 OP_EQUAL - # scriptSig is {{ datachunk }} OP_DROP {{ pubkey }} OP_CHECKSIGVERIFY {{ n }} OP_DROP OP_DEPTH 0 OP_EQUAL - return scriptSig, redeemScript, outputScript + # outputScript looks like OP_HASH160 {{ hash160([redeem_script]) }} OP_EQUALVERIFY + # redeem_script looks like OP_DROP {{ pubkey }} OP_CHECKSIGVERIFY {{ n }} OP_DROP OP_DEPTH 0 OP_EQUAL + # script_sig is {{ datachunk }} OP_DROP {{ pubkey }} OP_CHECKSIGVERIFY {{ n }} OP_DROP OP_DEPTH 0 OP_EQUAL + return script_sig, redeem_script, output_script def make_standard_p2sh_multisig_script(multisig_pubkeys, multisig_pubkeys_required): # a 2-of-3 multisig looks like this: diff --git a/counterpartylib/lib/transaction_helper/serializer.py b/counterparty-lib/counterpartylib/lib/transaction_helper/serializer.py similarity index 95% rename from counterpartylib/lib/transaction_helper/serializer.py rename to counterparty-lib/counterpartylib/lib/transaction_helper/serializer.py index 0e55ec7552..29a8a90705 100644 --- a/counterpartylib/lib/transaction_helper/serializer.py +++ b/counterparty-lib/counterpartylib/lib/transaction_helper/serializer.py @@ -13,7 +13,6 @@ import time import decimal import logging -logger = logging.getLogger(__name__) import requests import bitcoin as bitcoinlib from bitcoin.core import Hash160 @@ -30,6 +29,8 @@ from counterpartylib.lib.transaction_helper import p2sh_encoding from bitcoin.bech32 import CBech32Data +logger = logging.getLogger(config.LOGGER_NAME) + # Constants OP_RETURN = b'\x6a' OP_PUSHDATA1 = b'\x4c' @@ -47,7 +48,7 @@ D = decimal.Decimal UTXO_LOCKS = None UTXO_LOCKS_PER_ADDRESS_MAXSIZE = 5000 # set higher than the max number of UTXOs we should expect to - # manage in an aging cache for any one source address, at any one period +# manage in an aging cache for any one source address, at any one period def var_int (i): if i < 0xfd: @@ -345,7 +346,6 @@ def serialise(encoding, inputs, destination_outputs, data_output=None, change_ou return s - def serialise_p2sh_pretx(inputs, source, source_value, data_output, change_output=None, pubkey=None, multisig_pubkeys=None, multisig_pubkeys_required=None): assert data_output # we don't do this unless there's data @@ -380,15 +380,15 @@ def serialise_p2sh_pretx(inputs, source, source_value, data_output, change_outpu data_chunk = config.PREFIX + data_chunk # prefix the data_chunk # get the scripts - scriptSig, redeemScript, outputScript = p2sh_encoding.make_p2sh_encoding_redeemscript(data_chunk, n, pubkey, multisig_pubkeys, multisig_pubkeys_required) + script_sig, redeem_script, output_script = p2sh_encoding.make_p2sh_encoding_redeemscript(data_chunk, n, pubkey, multisig_pubkeys, multisig_pubkeys_required) #if data_value is an array, then every output fee is specified in it if type(data_value) == list: s += data_value[n].to_bytes(8, byteorder='little') # Value else: s += data_value.to_bytes(8, byteorder='little') # Value - s += var_int(int(len(outputScript))) # Script length - s += outputScript # Script + s += var_int(int(len(output_script))) # Script length + s += output_script # Script # Change output. if change_output: @@ -437,8 +437,8 @@ def serialise_p2sh_datatx(txid, source, source_input, destination_outputs, data_ data_chunk = config.PREFIX + data_chunk # prefix the data_chunk # get the scripts - scriptSig, redeemScript, outputScript = p2sh_encoding.make_p2sh_encoding_redeemscript(data_chunk, n, pubkey, multisig_pubkeys, multisig_pubkeys_required) - #substituteScript = scriptSig + outputScript + script_sig, redeem_script, output_script = p2sh_encoding.make_p2sh_encoding_redeemscript(data_chunk, n, pubkey, multisig_pubkeys, multisig_pubkeys_required) + #substituteScript = script_sig + output_script s += txhash # TxOutHash s += (n).to_bytes(4, byteorder='little') # TxOutIndex (assumes 0-based) @@ -446,9 +446,9 @@ def serialise_p2sh_datatx(txid, source, source_input, destination_outputs, data_ #s += var_int(len(substituteScript)) # Script length #s += substituteScript # Script - s += var_int(len(scriptSig))# + len(outputScript)) # Script length - s += scriptSig # Script - #s += outputScript # Script + s += var_int(len(script_sig))# + len(output_script)) # Script length + s += script_sig # Script + #s += output_script # Script s += b'\xff' * 4 # Sequence diff --git a/counterparty-lib/counterpartylib/lib/util.py b/counterparty-lib/counterpartylib/lib/util.py new file mode 100644 index 0000000000..d9510ac1b5 --- /dev/null +++ b/counterparty-lib/counterpartylib/lib/util.py @@ -0,0 +1,381 @@ +import time +import decimal +import sys +import json +import logging +from operator import itemgetter +import fractions +import binascii +import re +import hashlib +import os +import collections +import threading +import random +import itertools + +import requests + +from counterpartylib.lib import exceptions +from counterpartylib.lib import config + +logger = logging.getLogger(config.LOGGER_NAME) + +D = decimal.Decimal +B26_DIGITS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + +# subasset contain only characters a-zA-Z0-9.-_@! +SUBASSET_DIGITS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_@!' +SUBASSET_REVERSE = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6,'g':7,'h':8,'i':9,'j':10,'k':11,'l':12,'m':13,'n':14, + 'o':15,'p':16,'q':17,'r':18,'s':19,'t':20,'u':21,'v':22,'w':23,'x':24,'y':25,'z':26, + 'A':27,'B':28,'C':29,'D':30,'E':31,'F':32,'G':33,'H':34,'I':35,'J':36,'K':37,'L':38,'M':39, + 'N':40,'O':41,'P':42,'Q':43,'R':44,'S':45,'T':46,'U':47,'V':48,'W':49,'X':50,'Y':51,'Z':52, + '0':53,'1':54,'2':55,'3':56,'4':57,'5':58,'6':59,'7':60,'8':61,'9':62,'.':63,'-':64,'_':65,'@':66,'!':67} + +# Obsolete in Python 3.4, with enum module. +BET_TYPE_NAME = {0: 'BullCFD', 1: 'BearCFD', 2: 'Equal', 3: 'NotEqual'} +BET_TYPE_ID = {'BullCFD': 0, 'BearCFD': 1, 'Equal': 2, 'NotEqual': 3} + +json_dump = lambda x: json.dumps(x, sort_keys=True, indent=4) +json_print = lambda x: print(json_dump(x)) + +class RPCError (Exception): pass + + +# TODO: Move to `util_test.py`. +# TODO: This doesn’t timeout properly. (If server hangs, then unhangs, no result.) +def api(method, params): + """Poll API via JSON-RPC.""" + headers = {'content-type': 'application/json'} + payload = { + "method": method, + "params": params, + "jsonrpc": "2.0", + "id": 0, + } + + response = requests.post(config.RPC, data=json.dumps(payload), headers=headers, timeout=10) + if response == None: + raise RPCError(f'Cannot communicate with {config.XCP_NAME} server.') + elif response.status_code != 200: + if response.status_code == 500: + raise RPCError('Malformed API call.') + else: + raise RPCError(str(response.status_code) + ' ' + response.reason) + + response_json = response.json() + if 'error' not in response_json.keys() or response_json['error'] == None: + try: + return response_json['result'] + except KeyError: + raise RPCError(response_json) + else: + raise RPCError(f"{response_json['error']['message']} ({response_json['error']['code']})") + + +def chunkify(l, n): + n = max(1, n) + return [l[i:i + n] for i in range(0, len(l), n)] + + +def flat(z): + return [x for x in z] + + +def py34_tuple_append(first_elem, t): + # Had to do it this way to support python 3.4, if we start + # using the 3.5 runtime this can be replaced by: + # (first_elem, *t) + + l = list(t) + l.insert(0, first_elem) + return tuple(l) + + +def accumulate(l): + it = itertools.groupby(l, itemgetter(0)) + for key, subiter in it: + yield key, sum(item[1] for item in subiter) + + +def date_passed(date): + """Check if the date has already passed.""" + return date <= int(time.time()) + + +# checks and validates subassets (PARENT.SUBASSET) +# throws exceptions for assset or subasset names with invalid syntax +# returns (None, None) if the asset is not a subasset name +def parse_subasset_from_asset_name(asset): + subasset_parent = None + subasset_child = None + subasset_longname = None + chunks = asset.split('.', 1) + if (len(chunks) == 2): + subasset_parent = chunks[0] + subasset_child = chunks[1] + subasset_longname = asset + + # validate parent asset + validate_subasset_parent_name(subasset_parent) + + # validate child asset + validate_subasset_longname(subasset_longname, subasset_child) + + return (subasset_parent, subasset_longname) + + +# throws exceptions for invalid subasset names +def validate_subasset_longname(subasset_longname, subasset_child=None): + if subasset_child is None: + chunks = subasset_longname.split('.', 1) + if (len(chunks) == 2): + subasset_child = chunks[1] + else: + subasset_child = '' + + if len(subasset_child) < 1: + raise exceptions.AssetNameError('subasset name too short') + if len(subasset_longname) > 250: + raise exceptions.AssetNameError('subasset name too long') + + # can't start with period, can't have consecutive periods, can't contain anything not in SUBASSET_DIGITS + previous_digit = '.' + for c in subasset_child: + if c not in SUBASSET_DIGITS: + raise exceptions.AssetNameError('subasset name contains invalid character:', c) + if c == '.' and previous_digit == '.': + raise exceptions.AssetNameError('subasset name contains consecutive periods') + previous_digit = c + if previous_digit == '.': + raise exceptions.AssetNameError('subasset name ends with a period') + + return True + + +# throws exceptions for invalid subasset names +def validate_subasset_parent_name(asset_name): + if asset_name == config.BTC: + raise exceptions.AssetNameError(f'parent asset cannot be {config.BTC}') + if asset_name == config.XCP: + raise exceptions.AssetNameError(f'parent asset cannot be {config.XCP}') + if len(asset_name) < 4: + raise exceptions.AssetNameError('parent asset name too short') + if len(asset_name) >= 13: + raise exceptions.AssetNameError('parent asset name too long') + if asset_name[0] == 'A': + raise exceptions.AssetNameError('parent asset name starts with ‘A’') + for c in asset_name: + if c not in B26_DIGITS: + raise exceptions.AssetNameError('parent asset name contains invalid character:', c) + return True + + +def compact_subasset_longname(string): + """Compacts a subasset name string into an array of bytes to save space using a base68 encoding scheme. + Assumes all characters provided belong to SUBASSET_DIGITS. + """ + name_int = 0 + for i, c in enumerate(string[::-1]): + name_int += (68 ** i) * SUBASSET_REVERSE[c] + return name_int.to_bytes((name_int.bit_length() + 7) // 8, byteorder='big') + + +def expand_subasset_longname(raw_bytes): + """Expands an array of bytes into a subasset name string.""" + integer = int.from_bytes(raw_bytes, byteorder='big') + if integer == 0: + return '' + ret = '' + while integer != 0: + ret = SUBASSET_DIGITS[integer % 68 - 1] + ret + integer //= 68 + return ret + + +def generate_random_asset (): + # Standard pseudo-random generators are suitable for our purpose. + return 'A' + str(random.randint(26**12 + 1, 2**64 - 1)) # nosec B311 + + +def parse_options_from_string(string): + """Parse options integer from string, if exists.""" + string_list = string.split(" ") + if len(string_list) == 2: + try: + options = int(string_list.pop()) + except: + raise exceptions.OptionsError('options not an integer') + return options + else: + return False + + +def validate_address_options(options): + """Ensure the options are all valid and in range.""" + if (options > config.MAX_INT) or (options < 0): + raise exceptions.OptionsError('options integer overflow') + elif options > config.ADDRESS_OPTION_MAX_VALUE: + raise exceptions.OptionsError('options out of range') + elif not active_options(config.ADDRESS_OPTION_MAX_VALUE, options): + raise exceptions.OptionsError('options not possible') + + +def active_options(config, options): + """Checks if options active in some given config.""" + return config & options == options + +class QuantityError(Exception): pass + + +def value_input(quantity, asset, divisible): + if asset == 'leverage': + return round(quantity) + + if asset in ('value', 'fraction', 'price', 'odds'): + return float(quantity) # TODO: Float?! + + if divisible: + quantity = D(quantity) * config.UNIT + if quantity == quantity.to_integral(): + return int(quantity) + else: + raise QuantityError('Divisible assets have only eight decimal places of precision.') + else: + quantity = D(quantity) + if quantity != round(quantity): + raise QuantityError('Fractional quantities of indivisible assets.') + return round(quantity) + + +def value_output(quantity, asset, divisible): + + def norm(num, places): + """Round only if necessary.""" + num = round(num, places) + fmt = '{:.' + str(places) + 'f}' + # pylint: disable=C0209 + num = fmt.format(num) + return num.rstrip('0')+'0' if num.rstrip('0')[-1] == '.' else num.rstrip('0') + + if asset == 'fraction': + return str(norm(D(quantity) * D(100), 6)) + '%' + + if asset in ('leverage', 'value', 'price', 'odds'): + return norm(quantity, 6) + + if divisible: + quantity = D(quantity) / D(config.UNIT) + if quantity == quantity.to_integral(): + return str(quantity) + '.0' # For divisible assets, display the decimal point. + else: + return norm(quantity, 8) + else: + quantity = D(quantity) + if quantity != round(quantity): + raise QuantityError('Fractional quantities of indivisible assets.') + return round(quantity) + + +class GetURLError (Exception): pass +def get_url(url, abort_on_error=False, is_json=True, fetch_timeout=5): + """Fetch URL using requests.get.""" + try: + r = requests.get(url, timeout=fetch_timeout) + except Exception as e: + raise GetURLError(f"Got get_url request error: {e}") + else: + if r.status_code != 200 and abort_on_error: + raise GetURLError(f"Bad status code returned: '{r.status_code}'. result body: '{r.text}'.") + result = json.loads(r.text) if is_json else r.text + return result + + +def dhash(text): + if not isinstance(text, bytes): + text = bytes(str(text), 'utf-8') + + return hashlib.sha256(hashlib.sha256(text).digest()).digest() + + +def dhash_string(text): + return binascii.hexlify(dhash(text)).decode() + + +# Why on Earth does `binascii.hexlify()` return bytes?! +def hexlify(x): + """Return the hexadecimal representation of the binary data. Decode from ASCII to UTF-8.""" + return binascii.hexlify(x).decode('ascii') +def unhexlify(hex_string): + return binascii.unhexlify(bytes(hex_string, 'utf-8')) + + +ID_SEPARATOR = '_' +def make_id(hash_1, hash_2): + return hash_1 + ID_SEPARATOR + hash_2 +def parse_id(match_id): + assert match_id[64] == ID_SEPARATOR + return match_id[:64], match_id[65:] # UTF-8 encoding means that the indices are doubled. + + +def sizeof(v): + if isinstance(v, dict) or isinstance(v, DictCache): + s = 0 + for dk, dv in v.items(): + s += sizeof(dk) + s += sizeof(dv) + + return s + else: + return sys.getsizeof(v) + + +class DictCache: + """Threadsafe FIFO dict cache""" + + def __init__(self, size=100): + if int(size) < 1 : + raise AttributeError('size < 1 or not a number') + self.size = size + self.dict = collections.OrderedDict() + self.lock = threading.Lock() + + def __getitem__(self,key): + with self.lock: + return self.dict[key] + + def __setitem__(self,key,value): + with self.lock: + while len(self.dict) >= self.size: + self.dict.popitem(last=False) + self.dict[key] = value + + def __delitem__(self,key): + with self.lock: + del self.dict[key] + + def __len__(self): + with self.lock: + return len(self.dict) + + def __contains__(self, key): + with self.lock: + return key in self.dict + + def refresh(self, key): + with self.lock: + self.dict.move_to_end(key, last=True) + + +URL_USERNAMEPASS_REGEX = re.compile('.+://(.+)@') +def clean_url_for_log(url): + m = URL_USERNAMEPASS_REGEX.match(url) + if m and m.group(1): + url = url.replace(m.group(1), 'XXXXXXXX') + + return url + + +# ORACLES +def satoshirate_to_fiat(satoshirate): + return round(satoshirate/100.0,2) diff --git a/counterpartylib/lib/util_windows.py b/counterparty-lib/counterpartylib/lib/util_windows.py similarity index 72% rename from counterpartylib/lib/util_windows.py rename to counterparty-lib/counterpartylib/lib/util_windows.py index 7840c7ff66..4fb6f07920 100644 --- a/counterpartylib/lib/util_windows.py +++ b/counterparty-lib/counterpartylib/lib/util_windows.py @@ -2,12 +2,15 @@ import copy import logging import logging.handlers -logger = logging.getLogger(__name__) import unicodedata import codecs from ctypes import WINFUNCTYPE, windll, POINTER, byref, c_int from ctypes.wintypes import BOOL, HANDLE, DWORD, LPWSTR, LPCWSTR, LPVOID +from counterpartylib.lib import config + +logger = logging.getLogger(config.LOGGER_NAME) + class SanitizedRotatingFileHandler(logging.handlers.RotatingFileHandler): def emit(self, record): # If the message doesn't need to be rendered we take a shortcut. @@ -48,7 +51,7 @@ def _complain(message): try: # # HANDLE WINAPI GetStdHandle(DWORD nStdHandle); - # returns INVALID_HANDLE_VALUE, NULL, or a valid handle + # returns invalid_handle_value, NULL, or a valid handle # # # DWORD WINAPI GetFileType(DWORD hFile); @@ -56,20 +59,20 @@ def _complain(message): # # BOOL WINAPI GetConsoleMode(HANDLE hConsole, LPDWORD lpMode); - GetStdHandle = WINFUNCTYPE(HANDLE, DWORD)(("GetStdHandle", windll.kernel32)) - STD_OUTPUT_HANDLE = DWORD(-11) - STD_ERROR_HANDLE = DWORD(-12) - GetFileType = WINFUNCTYPE(DWORD, DWORD)(("GetFileType", windll.kernel32)) - FILE_TYPE_CHAR = 0x0002 - FILE_TYPE_REMOTE = 0x8000 - GetConsoleMode = WINFUNCTYPE(BOOL, HANDLE, POINTER(DWORD))(("GetConsoleMode", windll.kernel32)) - INVALID_HANDLE_VALUE = DWORD(-1).value + get_std_handle = WINFUNCTYPE(HANDLE, DWORD)(("GetStdHandle", windll.kernel32)) + std_output_handle = DWORD(-11) + std_error_handle = DWORD(-12) + get_file_type = WINFUNCTYPE(DWORD, DWORD)(("GetFileType", windll.kernel32)) + file_type_char = 0x0002 + file_type_remote = 0x8000 + get_console_mode = WINFUNCTYPE(BOOL, HANDLE, POINTER(DWORD))(("GetConsoleMode", windll.kernel32)) + invalid_handle_value = DWORD(-1).value def not_a_console(handle): - if handle == INVALID_HANDLE_VALUE or handle is None: + if handle == invalid_handle_value or handle is None: return True - return ((GetFileType(handle) & ~FILE_TYPE_REMOTE) != FILE_TYPE_CHAR - or GetConsoleMode(handle, byref(DWORD())) == 0) + return ((get_file_type(handle) & ~file_type_remote) != file_type_char + or get_console_mode(handle, byref(DWORD())) == 0) old_stdout_fileno = None old_stderr_fileno = None @@ -78,30 +81,30 @@ def not_a_console(handle): if hasattr(sys.stderr, 'fileno'): old_stderr_fileno = sys.stderr.fileno() - STDOUT_FILENO = 1 - STDERR_FILENO = 2 - real_stdout = (old_stdout_fileno == STDOUT_FILENO) - real_stderr = (old_stderr_fileno == STDERR_FILENO) + stdout_fileno = 1 + stderr_fileno = 2 + real_stdout = (old_stdout_fileno == stdout_fileno) + real_stderr = (old_stderr_fileno == stderr_fileno) if real_stdout: - hStdout = GetStdHandle(STD_OUTPUT_HANDLE) - if not_a_console(hStdout): + h_std_out = get_std_handle(std_output_handle) + if not_a_console(h_std_out): real_stdout = False if real_stderr: - hStderr = GetStdHandle(STD_ERROR_HANDLE) - if not_a_console(hStderr): + h_std_err = get_std_handle(std_error_handle) + if not_a_console(h_std_err): real_stderr = False if real_stdout or real_stderr: # BOOL WINAPI WriteConsoleW(HANDLE hOutput, LPWSTR lpBuffer, DWORD nChars, # LPDWORD lpCharsWritten, LPVOID lpReserved); - WriteConsoleW = WINFUNCTYPE(BOOL, HANDLE, LPWSTR, DWORD, POINTER(DWORD), LPVOID)(("WriteConsoleW", windll.kernel32)) + write_console_w = WINFUNCTYPE(BOOL, HANDLE, LPWSTR, DWORD, POINTER(DWORD), LPVOID)(("WriteConsoleW", windll.kernel32)) class UnicodeOutput: - def __init__(self, hConsole, stream, fileno, name): - self._hConsole = hConsole + def __init__(self, h_console, stream, fileno, name): + self._h_console = h_console self._stream = stream self._fileno = fileno self.closed = False @@ -123,16 +126,16 @@ def fileno(self): return self._fileno def flush(self): - if self._hConsole is None: + if self._h_console is None: try: self._stream.flush() except Exception as e: - _complain("%s.flush: %r from %r" % (self.name, e, self._stream)) + _complain(f"{self.name}.flush: {e!r} from {self._stream!r}") raise def write(self, text): try: - if self._hConsole is None: + if self._h_console is None: if isinstance(text, str): text = text.encode('utf-8') self._stream.write(text) @@ -145,15 +148,15 @@ def write(self, text): # There is a shorter-than-documented limitation on the # length of the string passed to WriteConsoleW (see # . - retval = WriteConsoleW(self._hConsole, text, min(remaining, 10000), byref(n), None) + retval = write_console_w(self._h_console, text, min(remaining, 10000), byref(n), None) if retval == 0 or n.value == 0: - raise IOError("WriteConsoleW returned %r, n.value = %r" % (retval, n.value)) + raise IOError(f"write_console_w returned {retval!r}, n.value = {n.value!r}") remaining -= n.value if not remaining: break text = text[n.value:] except Exception as e: - _complain("%s.write: %r" % (self.name, e)) + _complain(f"{self.name}.write: {e!r}") raise def writelines(self, lines): @@ -161,30 +164,29 @@ def writelines(self, lines): for line in lines: self.write(line) except Exception as e: - _complain("%s.writelines: %r" % (self.name, e)) + _complain(f"{self.name}.writelines: {e!r}") raise if real_stdout: - sys.stdout = UnicodeOutput(hStdout, None, STDOUT_FILENO, '') + sys.stdout = UnicodeOutput(h_std_out, None, stdout_fileno, '') else: sys.stdout = UnicodeOutput(None, sys.stdout, old_stdout_fileno, '') if real_stderr: - sys.stderr = UnicodeOutput(hStderr, None, STDERR_FILENO, '') + sys.stderr = UnicodeOutput(h_std_err, None, stderr_fileno, '') else: sys.stderr = UnicodeOutput(None, sys.stderr, old_stderr_fileno, '') except Exception as e: - _complain("exception %r while fixing up sys.stdout and sys.stderr" % (e,)) - + _complain(f"exception {e!r} while fixing up sys.stdout and sys.stderr") # While we're at it, let's unmangle the command-line arguments: # This works around . - GetCommandLineW = WINFUNCTYPE(LPWSTR)(("GetCommandLineW", windll.kernel32)) - CommandLineToArgvW = WINFUNCTYPE(POINTER(LPWSTR), LPCWSTR, POINTER(c_int))(("CommandLineToArgvW", windll.shell32)) + get_command_line_w = WINFUNCTYPE(LPWSTR)(("GetCommandLineW", windll.kernel32)) + command_line_to_argv_w = WINFUNCTYPE(POINTER(LPWSTR), LPCWSTR, POINTER(c_int))(("CommandLineToArgvW", windll.shell32)) argc = c_int(0) - argv_unicode = CommandLineToArgvW(GetCommandLineW(), byref(argc)) + argv_unicode = command_line_to_argv_w(get_command_line_w(), byref(argc)) argv = [argv_unicode[i].encode('utf-8').decode('utf-8') for i in range(0, argc.value)] diff --git a/counterpartylib/mainnet_burns.csv b/counterparty-lib/counterpartylib/mainnet_burns.csv similarity index 100% rename from counterpartylib/mainnet_burns.csv rename to counterparty-lib/counterpartylib/mainnet_burns.csv diff --git a/counterpartylib/protocol_changes.json b/counterparty-lib/counterpartylib/protocol_changes.json similarity index 97% rename from counterpartylib/protocol_changes.json rename to counterparty-lib/counterpartylib/protocol_changes.json index 5f4e7ce3eb..8948f6ab67 100644 --- a/counterpartylib/protocol_changes.json +++ b/counterparty-lib/counterpartylib/protocol_changes.json @@ -303,6 +303,7 @@ "testnet_block_index": 2288000 }, "issuance_asset_serialization_format": { + "minimum_version_major": 0, "mainnet":{ "1":{ "value":">QQ??If" @@ -327,6 +328,7 @@ } }, "issuance_asset_serialization_length": { + "minimum_version_major": 0, "mainnet":{ "1":{ "value":26 @@ -351,6 +353,7 @@ } }, "issuance_subasset_serialization_format": { + "minimum_version_major": 0, "mainnet":{ "1":{ "value":">QQ?B" @@ -372,6 +375,7 @@ } }, "issuance_subasset_serialization_length": { + "minimum_version_major": 0, "mainnet":{ "1":{ "value":18 @@ -455,25 +459,8 @@ "block_index": 819300, "testnet_block_index": 2505725 }, - "addrindexrs_required_version": { - "mainnet":{ - "1":{ - "value":"0.4.0" - }, - "819300":{ - "value":"0.4.1" - } - }, - "testnet":{ - "1":{ - "value":"0.4.0" - }, - "2505725":{ - "value":"0.4.1" - } - } - }, "max_dispenses_limit": { + "minimum_version_major": 0, "mainnet":{ "1":{ "value":0 @@ -492,6 +479,7 @@ } }, "dispenser_close_delay": { + "minimum_version_major": 0, "mainnet":{ "1":{ "value":0 @@ -510,6 +498,7 @@ } }, "max_refills": { + "minimum_version_major": 0, "mainnet":{ "1":{ "value":0 @@ -528,6 +517,7 @@ } }, "sweep_antispam_fee": { + "minimum_version_major": 0, "mainnet":{ "1":{ "value":0 diff --git a/counterpartylib/server.py b/counterparty-lib/counterpartylib/server.py similarity index 81% rename from counterpartylib/server.py rename to counterparty-lib/counterpartylib/server.py index fdc0c6dce0..bdd9f39d12 100755 --- a/counterpartylib/server.py +++ b/counterparty-lib/counterpartylib/server.py @@ -6,9 +6,6 @@ import sys import apsw import time -import dateutil.parser -import calendar -import traceback import binascii import socket import signal @@ -16,16 +13,21 @@ import platform import bitcoin as bitcoinlib import logging +import traceback from urllib.parse import quote_plus as urlencode -from counterpartylib.lib import log -logger = logging.getLogger(__name__) -log.set_logger(logger) # set root logger +from halo import Halo +from termcolor import colored, cprint -from counterpartylib.lib import api, config, util, exceptions, blocks, check, backend, database, transaction, script +from counterpartylib.lib import log +from counterpartylib.lib import api, config, util, ledger, blocks, backend, database, transaction, check +from counterpartylib.lib import kickstart as kickstarter +logger = logging.getLogger(config.LOGGER_NAME) D = decimal.Decimal +OK_GREEN = colored("[OK]", "green") +SPINNER_STYLE = "bouncingBar" class ConfigurationError(Exception): pass @@ -38,7 +40,7 @@ def sigterm_handler(_signo, _stack_frame): signal_name = 'SIGINT' else: assert False - logger.info('Received {}.'.format(signal_name)) + logger.info(f'Received {signal_name}.') if 'api_server' in globals(): logger.info('Stopping API server.') @@ -49,6 +51,8 @@ def sigterm_handler(_signo, _stack_frame): logger.info('Shutting down.') logging.shutdown() sys.exit(0) + + signal.signal(signal.SIGTERM, sigterm_handler) signal.signal(signal.SIGINT, sigterm_handler) @@ -68,7 +72,7 @@ def get_lock(): else: socket_family = socket.AF_UNIX socket_address = '\0' + config.DATABASE - error = 'Another copy of server is currently writing to database {}'.format(config.DATABASE) + error = f'Another copy of server is currently writing to database {config.DATABASE}' lock_socket = socket.socket(socket_family, socket.SOCK_DGRAM) try: @@ -83,7 +87,7 @@ def initialise(*args, **kwargs): return initialise_db() -def initialise_config(database_file=None, log_file=None, api_log_file=None, +def initialise_config(database_file=None, log_file=None, api_log_file=None, no_log_files=False, testnet=False, testcoin=False, regtest=False, api_limit_rows=1000, backend_name=None, backend_connect=None, backend_port=None, @@ -94,7 +98,7 @@ def initialise_config(database_file=None, log_file=None, api_log_file=None, rpc_host=None, rpc_port=None, rpc_user=None, rpc_password=None, rpc_no_allow_cors=False, - force=False, verbose=False, console_logfilter=None, + force=False, verbose=False, quiet=False, requests_timeout=config.DEFAULT_REQUESTS_TIMEOUT, rpc_batch_size=config.DEFAULT_RPC_BATCH_SIZE, check_asset_conservation=config.DEFAULT_CHECK_ASSET_CONSERVATION, @@ -102,7 +106,7 @@ def initialise_config(database_file=None, log_file=None, api_log_file=None, utxo_locks_max_addresses=config.DEFAULT_UTXO_LOCKS_MAX_ADDRESSES, utxo_locks_max_age=config.DEFAULT_UTXO_LOCKS_MAX_AGE, estimate_fee_per_kb=None, - customnet=None, checkdb=False): + customnet=None): # Data directory data_dir = appdirs.user_data_dir(appauthor=config.XCP_NAME, appname=config.APP_NAME, roaming=True) @@ -152,47 +156,34 @@ def initialise_config(database_file=None, log_file=None, api_log_file=None, if database_file: config.DATABASE = database_file else: - filename = '{}{}.db'.format(config.APP_NAME, network) + filename = f'{config.APP_NAME}{network}.db' config.DATABASE = os.path.join(data_dir, filename) - if checkdb: - config.CHECKDB = True - else: - config.CHECKDB = False - # Log directory log_dir = appdirs.user_log_dir(appauthor=config.XCP_NAME, appname=config.APP_NAME) if not os.path.isdir(log_dir): os.makedirs(log_dir, mode=0o755) # Log - if log_file is False: # no file logging + if no_log_files: config.LOG = None elif not log_file: # default location - filename = 'server{}.log'.format(network) + filename = f'server{network}.log' config.LOG = os.path.join(log_dir, filename) else: # user-specified location config.LOG = log_file # Set up logging. - log.set_up(log.ROOT_LOGGER, verbose=verbose, logfile=config.LOG, console_logfilter=console_logfilter) - if config.LOG: - logger.debug('Writing server log to file: `{}`'.format(config.LOG)) + config.VERBOSE = verbose + config.QUIET = quiet - if api_log_file is False: # no file logging + if no_log_files: # no file logging config.API_LOG = None elif not api_log_file: # default location - filename = 'server{}.access.log'.format(network) + filename = f'server{network}.access.log' config.API_LOG = os.path.join(log_dir, filename) else: # user-specified location config.API_LOG = api_log_file - if config.API_LOG: - logger.debug('Writing API accesses log to file: `{}`'.format(config.API_LOG)) - - # Log unhandled errors. - def handle_exception(exc_type, exc_value, exc_traceback): - logger.error("Unhandled Exception", exc_info=(exc_type, exc_value, exc_traceback)) - sys.excepthook = handle_exception config.API_LIMIT_ROWS = api_limit_rows @@ -230,13 +221,13 @@ def handle_exception(exc_type, exc_value, exc_traceback): if backend_user: config.BACKEND_USER = backend_user else: - config.BACKEND_USER = 'bitcoinrpc' + config.BACKEND_USER = 'rpc' # Backend Core RPC password (Bitcoin Core) if backend_password: config.BACKEND_PASSWORD = backend_password else: - raise ConfigurationError('backend RPC password not set. (Use configuration file or --backend-password=PASSWORD)') + raise ConfigurationError("Please specific a valid password backend-password configuration parameter") # Backend Core RPC SSL if backend_ssl: @@ -246,7 +237,7 @@ def handle_exception(exc_type, exc_value, exc_traceback): # Backend Core RPC SSL Verify if backend_ssl_verify is not None: - logger.warning('The server parameter `backend_ssl_verify` is deprecated. Use `backend_ssl_no_verify` instead.') + cprint('The server parameter `backend_ssl_verify` is deprecated. Use `backend_ssl_no_verify` instead.', 'yellow') config.BACKEND_SSL_NO_VERIFY = not backend_ssl_verify else: if backend_ssl_no_verify: @@ -267,7 +258,6 @@ def handle_exception(exc_type, exc_value, exc_traceback): else: config.BACKEND_URL = 'http://' + config.BACKEND_URL - # Indexd RPC host if indexd_connect: config.INDEXD_CONNECT = indexd_connect @@ -343,7 +333,7 @@ def handle_exception(exc_type, exc_value, exc_traceback): # RPC CORS if rpc_allow_cors is not None: - logger.warning('The server parameter `rpc_allow_cors` is deprecated. Use `rpc_no_allow_cors` instead.') + cprint('The server parameter `rpc_allow_cors` is deprecated. Use `rpc_no_allow_cors` instead.', 'yellow') config.RPC_NO_ALLOW_CORS = not rpc_allow_cors else: if rpc_no_allow_cors: @@ -448,35 +438,47 @@ def handle_exception(exc_type, exc_value, exc_traceback): if estimate_fee_per_kb is not None: config.ESTIMATE_FEE_PER_KB = estimate_fee_per_kb - logger.info('Running v{} of counterparty-lib.'.format(config.VERSION_STRING)) - + logger.info(f'Running v{config.VERSION_STRING} of counterparty-lib.') def initialise_db(): if config.FORCE: - logger.warning('THE OPTION `--force` IS NOT FOR USE ON PRODUCTION SYSTEMS.') + cprint('THE OPTION `--force` IS NOT FOR USE ON PRODUCTION SYSTEMS.', 'yellow') # Lock if not config.FORCE: get_lock() # Database - logger.info('Connecting to database (SQLite %s).' % apsw.apswversion()) - db = database.get_connection(read_only=False,foreign_keys=config.CHECKDB,integrity_check=config.CHECKDB) + logger.info(f'Connecting to database (SQLite {apsw.apswversion()}).') + db = database.get_connection(read_only=False) - util.CURRENT_BLOCK_INDEX = blocks.last_db_index(db) + ledger.CURRENT_BLOCK_INDEX = blocks.last_db_index(db) return db def connect_to_backend(): if not config.FORCE: - logger.info('Connecting to backend.') backend.getblockcount() -def start_all(db): +def connect_to_addrindexrs(): + step = 'Connecting to `addrindexrs`...' + with Halo(text=step, spinner=SPINNER_STYLE): + ledger.CURRENT_BLOCK_INDEX = 0 + backend.backend() + check_addrindexrs = {} + while check_addrindexrs == {}: + check_address = "mrHFGUKSiNMeErqByjX97qPKfumdZxe6mC" if config.TESTNET else "1GsjsKKT4nH4GPmDnaxaZEDWgoBpmexwMA" + check_addrindexrs = backend.get_oldest_tx(check_address, 99999999999) + if check_addrindexrs == {}: + logger.info('`addrindexrs` is not ready. Waiting one second.') + time.sleep(1) + print(f'{OK_GREEN} {step}') + +def start_all(db): # Backend. connect_to_backend() @@ -490,30 +492,60 @@ def start_all(db): api_server.daemon = True api_server.start() - # Server. + # Server blocks.follow(db) -def reparse(db, block_index=None, quiet=True): - connect_to_backend() - blocks.reparse(db, block_index=block_index, quiet=quiet) +def reparse(db, block_index): + blocks.reparse(db, block_index=block_index) -def kickstart(db, bitcoind_dir): - blocks.kickstart(db, bitcoind_dir=bitcoind_dir) +def rollback(db, block_index=None): + blocks.rollback(db, block_index=block_index) + + +def kickstart(bitcoind_dir, force=False, max_queue_size=None, debug_block=None): + kickstarter.run( + bitcoind_dir=bitcoind_dir, + force=force, + max_queue_size=max_queue_size, + debug_block=debug_block + ) def vacuum(db): - database.vacuum(db) + step = 'Vacuuming database...' + with Halo(text=step, spinner=SPINNER_STYLE): + database.vacuum(db) + print(f'{OK_GREEN} {step}') + +def check_database(db): + ledger.CURRENT_BLOCK_INDEX = blocks.last_db_index(db) -def debug_config(): + step = 'Checking asset conservation...' + with Halo(text=step, spinner=SPINNER_STYLE): + check.asset_conservation(db) + print(f'{OK_GREEN} {step}') + + step = 'Checking database foreign keys....' + with Halo(text=step, spinner=SPINNER_STYLE): + check.asset_conservation(db) + print(f'{OK_GREEN} {step}') + + step = 'Checking database integrity...' + with Halo(text=step, spinner=SPINNER_STYLE): + database.intergrity_check(db) + print(f'{OK_GREEN} {step}') + + cprint('Database checks complete.', 'green') + + +def show_config(): output = vars(config) for k in list(output.keys()): - if k[:2] == "__" and k[-2:] == "__": - del output[k] - - pprint.pprint(output) + if k.isupper(): + print(f"{k}: {output[k]}") def generate_move_random_hash(move): diff --git a/counterpartylib/lib/transaction_helper/__init__.py b/counterparty-lib/counterpartylib/test/__init__.py similarity index 100% rename from counterpartylib/lib/transaction_helper/__init__.py rename to counterparty-lib/counterpartylib/test/__init__.py diff --git a/counterpartylib/test/arc4_test.py b/counterparty-lib/counterpartylib/test/arc4_test.py similarity index 99% rename from counterpartylib/test/arc4_test.py rename to counterparty-lib/counterpartylib/test/arc4_test.py index a3d97103f4..758430f8a8 100644 --- a/counterpartylib/test/arc4_test.py +++ b/counterparty-lib/counterpartylib/test/arc4_test.py @@ -21,7 +21,7 @@ def test_arc4_mocked(): so when we use `'01' * 32` as seed it should still return the same result as `'00' * 32` or as `` """ text = bytes("testing", 'utf-8') - + # '00' * 32 encrypt k = arc4.init_arc4('00' * 32) assert k.encrypt(text) == b'\xaa}\xfa5\xcaY:' @@ -33,11 +33,11 @@ def test_arc4_mocked(): # b'\x00' * 32 encrypt k = arc4.init_arc4(b'\x00' * 32) assert k.encrypt(text) == b'\xaa}\xfa5\xcaY:' - + # b'\x00' * 32 decrypt k = arc4.init_arc4(b'\x00' * 32) assert k.decrypt(b'\xaa}\xfa5\xcaY:') == text - + # '' * 32 encrypt k = arc4.init_arc4('' * 32) assert k.encrypt(text) == b'\xaa}\xfa5\xcaY:' @@ -49,11 +49,11 @@ def test_arc4_mocked(): # b'' * 32 encrypt k = arc4.init_arc4(b'' * 32) assert k.encrypt(text) == b'\xaa}\xfa5\xcaY:' - + # b'' * 32 decrypt k = arc4.init_arc4(b'' * 32) assert k.decrypt(b'\xaa}\xfa5\xcaY:') == text - + # '01' * 32 encrypt k = arc4.init_arc4('01' * 32) assert k.encrypt(text) == b'\xaa}\xfa5\xcaY:' @@ -65,7 +65,7 @@ def test_arc4_mocked(): # b'\x01' * 32 encrypt k = arc4.init_arc4(b'\x01' * 32) assert k.encrypt(text) == b'\xaa}\xfa5\xcaY:' - + # b'\x01' * 32 decrypt k = arc4.init_arc4(b'\x01' * 32) assert k.decrypt(b'\xaa}\xfa5\xcaY:') == text diff --git a/counterparty-lib/counterpartylib/test/book_test.py b/counterparty-lib/counterpartylib/test/book_test.py new file mode 100644 index 0000000000..9f82c1e6d9 --- /dev/null +++ b/counterparty-lib/counterpartylib/test/book_test.py @@ -0,0 +1,15 @@ +#! /usr/bin/python3 + +import pytest + +from counterpartylib.test import conftest # this is require near the top to do setup of the test suite +from counterpartylib.test import util_test + + +def test_book(book): + if book == 'testnet': + util_test.reparse(testnet=True) + elif book == 'mainnet': + util_test.reparse(testnet=False) + else: + pytest.skip("Skipping test book") diff --git a/counterpartylib/test/bytespersigop_test.py b/counterparty-lib/counterpartylib/test/bytespersigop_test.py similarity index 94% rename from counterpartylib/test/bytespersigop_test.py rename to counterparty-lib/counterpartylib/test/bytespersigop_test.py index b64ccac67e..67280cce4c 100644 --- a/counterpartylib/test/bytespersigop_test.py +++ b/counterparty-lib/counterpartylib/test/bytespersigop_test.py @@ -8,7 +8,7 @@ from counterpartylib.test.util_test import CURR_DIR from counterpartylib.test import util_test -from counterpartylib.lib import (blocks, transaction, api, backend, util, exceptions) +from counterpartylib.lib import (blocks, transaction, api, ledger, util, exceptions) FIXTURE_SQL_FILE = CURR_DIR + '/fixtures/scenarios/unittest_fixture.sql' @@ -16,7 +16,7 @@ def test_bytespersigop(server_db): - assert util.enabled('bytespersigop') == False + assert ledger.enabled('bytespersigop') == False # ADDR[0], bytespersigop=False, desc 41 bytes, opreturn txhex = api.compose_transaction( @@ -55,7 +55,7 @@ def test_bytespersigop(server_db): # enable byterpersigop with util_test.MockProtocolChangesContext(bytespersigop=True): - assert util.enabled('bytespersigop') == True + assert ledger.enabled('bytespersigop') == True # ADDR[0], bytespersigop=True, desc 41 bytes, opreturn txhex = api.compose_transaction( diff --git a/counterpartylib/test/complex_unit_test.py b/counterparty-lib/counterpartylib/test/complex_unit_test.py similarity index 76% rename from counterpartylib/test/complex_unit_test.py rename to counterparty-lib/counterpartylib/test/complex_unit_test.py index 9d6fcb75ca..a868e01fee 100644 --- a/counterpartylib/test/complex_unit_test.py +++ b/counterparty-lib/counterpartylib/test/complex_unit_test.py @@ -2,12 +2,14 @@ import tempfile import pytest +from apsw import ConstraintError + from counterpartylib.test import conftest # this is require near the top to do setup of the test suite from counterpartylib.test import util_test from counterpartylib.test.util_test import CURR_DIR from counterpartylib.test.fixtures.params import DP, ADDR -from counterpartylib.lib import util +from counterpartylib.lib import util, ledger, blocks, config FIXTURE_SQL_FILE = CURR_DIR + '/fixtures/scenarios/unittest_fixture.sql' FIXTURE_DB = tempfile.gettempdir() + '/fixtures.unittest_fixture.db' @@ -28,8 +30,8 @@ def test_alice_bob(server_db): assert utxos[0]['confirmations'] == 74 # balance before send - alice_balance = util.get_balance(server_db, alice, 'XCP') - bob_balance = util.get_balance(server_db, bob, 'XCP') + alice_balance = ledger.get_balance(server_db, alice, 'XCP') + bob_balance = ledger.get_balance(server_db, bob, 'XCP') assert alice_balance == 91875000000 assert bob_balance == 0 @@ -42,16 +44,18 @@ def test_alice_bob(server_db): tx1hash, tx1 = util_test.insert_raw_transaction(send1hex, server_db) # balances after send - alice_balance2 = util.get_balance(server_db, alice, 'XCP') - bob_balance2 = util.get_balance(server_db, bob, 'XCP') + alice_balance2 = ledger.get_balance(server_db, alice, 'XCP') + bob_balance2 = ledger.get_balance(server_db, bob, 'XCP') assert alice_balance2 == alice_balance - v assert bob_balance2 == bob_balance + v # check API result - result = util.api("get_balances", {"filters": [ - {'field': 'address', 'op': '==', 'value': alice}, - {'field': 'asset', 'op': '==', 'value': 'XCP'}, - ]}) + result = util.api("get_balances", { + "filters": [ + {'field': 'address', 'op': '==', 'value': alice}, + {'field': 'asset', 'op': '==', 'value': 'XCP'}, + ], + }) assert result[0]['quantity'] == alice_balance2 @@ -66,8 +70,8 @@ def test_alice_bob(server_db): assert utxos[0]['confirmations'] == 1 # balances before send - alice_balance = util.get_balance(server_db, alice, 'XCP') - bob_balance = util.get_balance(server_db, bob, 'XCP') + alice_balance = ledger.get_balance(server_db, alice, 'XCP') + bob_balance = ledger.get_balance(server_db, bob, 'XCP') assert alice_balance == alice_balance2 assert bob_balance == bob_balance2 @@ -80,8 +84,8 @@ def test_alice_bob(server_db): tx2hash, tx2 = util_test.insert_raw_transaction(send2hex, server_db) # balances after send - alice_balance2 = util.get_balance(server_db, alice, 'XCP') - bob_balance2 = util.get_balance(server_db, bob, 'XCP') + alice_balance2 = ledger.get_balance(server_db, alice, 'XCP') + bob_balance2 = ledger.get_balance(server_db, bob, 'XCP') assert alice_balance2 == alice_balance - v assert bob_balance2 == bob_balance + v @@ -96,8 +100,8 @@ def test_alice_bob(server_db): assert utxos[0]['confirmations'] == 1 # balances before send - alice_balance = util.get_balance(server_db, alice, 'XCP') - bob_balance = util.get_balance(server_db, bob, 'XCP') + alice_balance = ledger.get_balance(server_db, alice, 'XCP') + bob_balance = ledger.get_balance(server_db, bob, 'XCP') assert alice_balance == alice_balance2 assert bob_balance == bob_balance2 @@ -110,8 +114,8 @@ def test_alice_bob(server_db): tx3 = util_test.insert_unconfirmed_raw_transaction(send3hex, server_db) # balances after send, unaffected - alice_balance2 = util.get_balance(server_db, alice, 'XCP') - bob_balance2 = util.get_balance(server_db, bob, 'XCP') + alice_balance2 = ledger.get_balance(server_db, alice, 'XCP') + bob_balance2 = ledger.get_balance(server_db, bob, 'XCP') assert alice_balance2 == alice_balance assert bob_balance2 == bob_balance @@ -144,7 +148,22 @@ def test_alice_bob(server_db): tx3bhash, tx3b = util_test.insert_raw_transaction(send3hex, server_db) # balances after send - alice_balance2 = util.get_balance(server_db, alice, 'XCP') - bob_balance2 = util.get_balance(server_db, bob, 'XCP') + alice_balance2 = ledger.get_balance(server_db, alice, 'XCP') + bob_balance2 = ledger.get_balance(server_db, bob, 'XCP') assert alice_balance2 == alice_balance - v assert bob_balance2 == bob_balance + v + + +@pytest.mark.usefixtures("api_server") +def test_update_lock(server_db): + cursor = server_db.cursor() + for table in blocks.TABLES: + # don't test empty tables + rows_count = cursor.execute(f'SELECT COUNT(*) AS cnt FROM {table}').fetchone() + if rows_count is None or rows_count['cnt'] == 0: + continue + with pytest.raises(ConstraintError) as excinfo: + cursor.execute(f''' + UPDATE {table} SET block_index = :block_index + ''', {'block_index': 0}) + assert str(excinfo.value) == "ConstraintError: UPDATES NOT ALLOWED" diff --git a/counterpartylib/test/config_context_test.py b/counterparty-lib/counterpartylib/test/config_context_test.py similarity index 75% rename from counterpartylib/test/config_context_test.py rename to counterparty-lib/counterpartylib/test/config_context_test.py index 112184018e..64f81cb6d2 100644 --- a/counterpartylib/test/config_context_test.py +++ b/counterparty-lib/counterpartylib/test/config_context_test.py @@ -6,7 +6,7 @@ from counterpartylib.test import util_test from counterpartylib.test.util_test import CURR_DIR -from counterpartylib.lib import (blocks, config, util) +from counterpartylib.lib import (blocks, config, ledger) FIXTURE_SQL_FILE = CURR_DIR + '/fixtures/scenarios/parseblock_unittest_fixture.sql' @@ -28,14 +28,14 @@ def test_config_context(cp_server): def test_mock_protocol_changes(cp_server): - assert util.enabled('multisig_addresses') == True + assert ledger.enabled('multisig_addresses') == True with util_test.MockProtocolChangesContext(multisig_addresses=False): - assert util.enabled('multisig_addresses') == False + assert ledger.enabled('multisig_addresses') == False with util_test.MockProtocolChangesContext(multisig_addresses=None): - assert util.enabled('multisig_addresses') == None + assert ledger.enabled('multisig_addresses') == None - assert util.enabled('multisig_addresses') == False + assert ledger.enabled('multisig_addresses') == False - assert util.enabled('multisig_addresses') == True + assert ledger.enabled('multisig_addresses') == True diff --git a/counterpartylib/test/conftest.py b/counterparty-lib/counterpartylib/test/conftest.py similarity index 85% rename from counterpartylib/test/conftest.py rename to counterparty-lib/counterpartylib/test/conftest.py index bc2e48b794..ee9b941b3a 100644 --- a/counterpartylib/test/conftest.py +++ b/counterparty-lib/counterpartylib/test/conftest.py @@ -10,17 +10,14 @@ import pytest import bitcoin as bitcoinlib import pycoin -from pycoin.tx import Tx +from pycoin.coins.bitcoin import Tx import pprint import binascii import logging from Crypto.Cipher import ARC4 -logger = logging.getLogger() - -from counterpartylib.lib import log +from counterpartylib.lib import log, ledger from counterpartylib import server -log.set_logger(logger) from counterpartylib.test import util_test from counterpartylib.test.fixtures.vectors import UNITTEST_VECTOR @@ -29,10 +26,12 @@ from counterpartylib.lib import config, util, database, api, script, arc4 +logger = logging.getLogger(config.LOGGER_NAME) + # used to increment RPC port between test modules to avoid conflicts TEST_RPC_PORT = 9999 -# we swap out util.enabled with a custom one which has the option to mock the protocol changes +# we swap out ledger.enabled with a custom one which has the option to mock the protocol changes MOCK_PROTOCOL_CHANGES = { 'bytespersigop': False, # default to False to avoid all old vectors breaking } @@ -42,12 +41,13 @@ 'enhanced_sends': {'block_index': 310999, 'allow_always_latest': False}, # override to be true only at block 310999 'issuance_lock_fix': {'block_index': 310502, 'allow_always_latest': False}, # override to be true only at block 310502 'segwit_support': {'block_index': 0, 'allow_always_latest': False}, # override to be true only at block 310999, - 'dispensers': {'block_index': 0, 'allow_always_latest': True} + 'dispensers': {'block_index': 0, 'allow_always_latest': True}, + 'multisig_addresses': {'block_index': 310502, 'allow_always_latest': True}, } DISABLE_ALL_MOCK_PROTOCOL_CHANGES_AT_BLOCK = False # if true, never look at MOCK_PROTOCOL_CHANGES_AT_BLOCK ENABLE_MOCK_PROTOCOL_CHANGES_AT_BLOCK = False # if true, always check MOCK_PROTOCOL_CHANGES_AT_BLOCK ALWAYS_LATEST_PROTOCOL_CHANGES = False # Even when this is true, this can be overridden if allow_always_latest is False in MOCK_PROTOCOL_CHANGES_AT_BLOCK -_enabled = util.enabled +_enabled = ledger.enabled def enabled(change_name, block_index=None): # if explicitly set if change_name in MOCK_PROTOCOL_CHANGES: @@ -57,40 +57,37 @@ def enabled(change_name, block_index=None): if shouldCheckForMockProtocolChangesAtBlock(change_name): _block_index = block_index if _block_index is None: - _block_index = util.CURRENT_BLOCK_INDEX - logger = logging.getLogger(__name__) + _block_index = ledger.CURRENT_BLOCK_INDEX if _block_index >= MOCK_PROTOCOL_CHANGES_AT_BLOCK[change_name]['block_index']: return True return False # used to force unit tests to always run against latest protocol changes if ALWAYS_LATEST_PROTOCOL_CHANGES: - # KeyError to mimic real util.enabled - if change_name not in util.PROTOCOL_CHANGES: + # KeyError to mimic real ledger.enabled + if change_name not in ledger.PROTOCOL_CHANGES: raise KeyError(change_name) - # print("ALWAYS_LATEST_PROTOCOL_CHANGES {} {} enabled: {}".format(change_name,block_index or util.CURRENT_BLOCK_INDEX,True)) + # print(f"ALWAYS_LATEST_PROTOCOL_CHANGES {change_name} {block_index or ledger.CURRENT_BLOCK_INDEX} enabled: True") return True else: - # print("ALWAYS_LATEST_PROTOCOL_CHANGES {} {} enabled: {}".format(change_name,block_index or util.CURRENT_BLOCK_INDEX,_enabled(change_name, block_index))) + # print(f"ALWAYS_LATEST_PROTOCOL_CHANGES {change_name} {block_index or ledger.CURRENT_BLOCK_INDEX} enabled: {_enabled(change_name, block_index)}") return _enabled(change_name, block_index) -util.enabled = enabled + + +ledger.enabled = enabled # This is true if ENABLE_MOCK_PROTOCOL_CHANGES_AT_BLOCK is set def shouldCheckForMockProtocolChangesAtBlock(change_name): if DISABLE_ALL_MOCK_PROTOCOL_CHANGES_AT_BLOCK: return False - if change_name not in MOCK_PROTOCOL_CHANGES_AT_BLOCK: return False - if ENABLE_MOCK_PROTOCOL_CHANGES_AT_BLOCK: return True - if 'allow_always_latest' in MOCK_PROTOCOL_CHANGES_AT_BLOCK[change_name] \ and not MOCK_PROTOCOL_CHANGES_AT_BLOCK[change_name]['allow_always_latest']: return True - return False @@ -101,6 +98,8 @@ def generate_random_asset (): return _generate_random_asset() else: return 'A' + str(RANDOM_ASSET_INT) + + util.generate_random_asset = generate_random_asset DISABLE_ARC4_MOCKING = False @@ -108,33 +107,26 @@ def generate_random_asset (): def pytest_generate_tests(metafunc): """Generate all py.test cases. Checks for different types of tests and creates proper context.""" if metafunc.function.__name__ == 'test_vector': - args = util_test.vector_to_args(UNITTEST_VECTOR, pytest.config.option.function) - metafunc.parametrize('tx_name, method, inputs, outputs, error, records, comment, mock_protocol_changes, config_context', args) + args = util_test.vector_to_args(UNITTEST_VECTOR, metafunc.config.getoption("function"), metafunc.config) + metafunc.parametrize('tx_name, method, inputs, outputs, error, records, comment, mock_protocol_changes, config_context, pytest_config', args) elif metafunc.function.__name__ == 'test_scenario': args = [] for scenario_name in INTEGRATION_SCENARIOS: - if pytest.config.option.scenario == [] or scenario_name in pytest.config.option.scenario: - args.append((scenario_name, INTEGRATION_SCENARIOS[scenario_name][1], INTEGRATION_SCENARIOS[scenario_name][0])) - metafunc.parametrize('scenario_name, base_scenario_name, transactions', args) + if metafunc.config.getoption("scenario") == [] or scenario_name in metafunc.config.getoption("scenario"): + args.append((scenario_name, INTEGRATION_SCENARIOS[scenario_name][1], INTEGRATION_SCENARIOS[scenario_name][0], metafunc.config)) + metafunc.parametrize('scenario_name, base_scenario_name, transactions, pytest_config', args) elif metafunc.function.__name__ == 'test_book': - if pytest.config.option.skiptestbook == 'all': - args = [] - elif pytest.config.option.skiptestbook == 'testnet': - args = [False] - elif pytest.config.option.skiptestbook == 'mainnet': - args = [True] - else: - args = [True, False] - metafunc.parametrize('testnet', args) + metafunc.parametrize('book', [(metafunc.config.getoption("testbook"),)]) + def pytest_addoption(parser): """Add useful test suite argument options.""" - parser.addoption("--function", action="append", default=[], help="list of functions to test") - parser.addoption("--scenario", action="append", default=[], help="list of scenarios to test") - parser.addoption("--gentxhex", action='store_true', default=False, help="generate and print unsigned hex for *.compose() tests") - parser.addoption("--savescenarios", action='store_true', default=False, help="generate sql dump and log in .new files") + parser.addoption("--function", action="append", default=[], help="List of functions to test") + parser.addoption("--scenario", action="append", default=[], help="List of scenarios to test") + parser.addoption("--gentxhex", action='store_true', default=False, help="Generate and print unsigned hex for *.compose() tests") + parser.addoption("--savescenarios", action='store_true', default=False, help="Generate sql dump and log in .new files") parser.addoption("--alternative", action='store_true', default=False) - parser.addoption("--skiptestbook", default='no', help="skip test book(s) (use with one of the following values: `all`, `testnet` or `mainnet`)") + parser.addoption("--testbook", default='no', help="Include test book (use with one of the following values: `testnet` or `mainnet`)") @pytest.fixture(scope="function") @@ -149,7 +141,7 @@ def rawtransactions_db(request): @pytest.fixture(scope='function') def server_db(request, cp_server, api_server): """Enable database access for unit test vectors.""" - db = database.get_connection(read_only=False, integrity_check=False) + db = database.get_connection(read_only=False) api_server.db = db # inject into api_server cursor = db.cursor() cursor.execute('''BEGIN''') @@ -195,7 +187,7 @@ def cp_server(request): sqlfile = getattr(request.module, 'FIXTURE_SQL_FILE') options = getattr(request.module, 'FIXTURE_OPTIONS', {}) - util_test.init_database(sqlfile, dbfile, options) + db = util_test.init_database(sqlfile, dbfile, options) # monkeypatch this here because init_mock_functions can run before cp_server if hasattr(config, 'PREFIX'): @@ -222,7 +214,7 @@ def __init__(self, utxos, rawtransactions_db): self.txouts = utxos or [] self.spent_utxos = [] self.rawtransactions_db = rawtransactions_db - # logger.warn('MockUTXOSet %d' % len(utxos)) + # logger.warning('MockUTXOSet %d' % len(utxos)) def get_unspent_txouts(self, address, unconfirmed=False, multisig_inputs=False, unspent_tx_hash=None): # filter by address @@ -235,7 +227,7 @@ def get_unspent_txouts(self, address, unconfirmed=False, multisig_inputs=False, unspent_txouts = filter(lambda txout: txout['confirmations'] > 0, unspent_txouts) if multisig_inputs: - raise NotImplementedError("%s" % multisig_inputs) + raise NotImplementedError(f"{multisig_inputs}") if unspent_tx_hash: unspent_txouts = filter(lambda txout: txout['txid'] == unspent_tx_hash, unspent_txouts) @@ -268,13 +260,13 @@ def increment_confirmations(self): utxo['confirmations'] = (utxo['confirmations'] or 0) + 1 def add_raw_transaction(self, raw_transaction, tx_id=None, confirmations=0): - tx = pycoin.tx.Tx.from_hex(raw_transaction) + tx = pycoin.coins.bitcoin.Tx.Tx.from_hex(raw_transaction) tx_id = tx_id or tx.id() txins = [] for txin in tx.txs_in: txins.append({ - 'txid': pycoin.serialize.b2h_rev(txin.previous_hash), + 'txid': pycoin.encoding.hexbytes.b2h_rev(txin.previous_hash), 'vout': txin.previous_index }) @@ -291,7 +283,7 @@ def add_raw_transaction(self, raw_transaction, tx_id=None, confirmations=0): 'vout': idx }) - # logger.warn('add_raw_transaction %d/%d' % (len(txins), len(txouts))) + # logger.warning('add_raw_transaction %d/%d' % (len(txins), len(txouts))) # logger.debug(pprint.pformat(txins)) # logger.debug(pprint.pformat(txouts)) @@ -303,7 +295,7 @@ def add_raw_transaction(self, raw_transaction, tx_id=None, confirmations=0): @pytest.fixture(scope='module', autouse=True) def setup_logging(): print("") # for --verbose output this makes sure the logs start on a newline - log.set_up(log.ROOT_LOGGER, verbose=True, console_logfilter=os.environ.get('COUNTERPARTY_LOGGING', None)) + log.set_up(verbose=True) @pytest.fixture(scope='function', autouse=True) @@ -369,8 +361,8 @@ def multisig_pubkeyhashes_to_pubkeys(address, provided_pubkeys=None): address = '_'.join([str(signatures_required)] + sorted(pubkeys) + [str(len(pubkeys))]) return address - def mocked_getrawtransaction(tx_hash, verbose=False): - return util_test.getrawtransaction(rawtransactions_db, tx_hash, verbose=verbose) + def mocked_getrawtransaction(tx_hash, verbose=False, block_index=None): + return util_test.getrawtransaction(rawtransactions_db, tx_hash, verbose=verbose, block_index=block_index) def mocked_getrawtransaction_batch(txhash_list, verbose=False, skip_missing=False): return util_test.getrawtransaction_batch(rawtransactions_db, txhash_list, verbose=verbose) diff --git a/counterpartylib/test/database_version_test.py b/counterparty-lib/counterpartylib/test/database_version_test.py similarity index 78% rename from counterpartylib/test/database_version_test.py rename to counterparty-lib/counterpartylib/test/database_version_test.py index 53f0016016..c5f1a2783d 100644 --- a/counterpartylib/test/database_version_test.py +++ b/counterparty-lib/counterpartylib/test/database_version_test.py @@ -21,14 +21,9 @@ def test_check_database_version(): check.database_version(db) - config.VERSION_MINOR += 1 - with pytest.raises(check.DatabaseVersionError) as exception: - check.database_version(db) - assert exception.value.reparse_block_index == None - config.VERSION_MINOR -= 1 - config.VERSION_MAJOR += 1 with pytest.raises(check.DatabaseVersionError) as exception: check.database_version(db) - assert exception.value.reparse_block_index == config.BLOCK_FIRST + assert exception.value.from_block_index == config.BLOCK_FIRST + assert exception.value.required_action == "rollback" config.VERSION_MAJOR -= 1 diff --git a/counterparty-lib/counterpartylib/test/deserialize_test.py b/counterparty-lib/counterpartylib/test/deserialize_test.py new file mode 100644 index 0000000000..7ffba2f0b3 --- /dev/null +++ b/counterparty-lib/counterpartylib/test/deserialize_test.py @@ -0,0 +1,85 @@ +from counterpartylib.lib.kickstart import blocks_parser, utils +from counterpartylib.lib import backend +import time + +def test_deserialize(): + hex = "0100000001db3acf37743ac015808f7911a88761530c801819b3b907340aa65dfb6d98ce24030000006a473044022002961f4800cb157f8c0913084db0ee148fa3e1130e0b5e40c3a46a6d4f83ceaf02202c3dd8e631bf24f4c0c5341b3e1382a27f8436d75f3e0a095915995b0bf7dc8e01210395c223fbf96e49e5b9e06a236ca7ef95b10bf18c074bd91a5942fc40360d0b68fdffffff040000000000000000536a4c5058325bd61325dc633fadf05bec9157c23106759cee40954d39d9dbffc17ec5851a2d1feb5d271da422e0e24c7ae8ad29d2eeabf7f9ca3de306bd2bc98e2a39e47731aa000caf400053000c1283000149c8000000000000001976a91462bef4110f98fdcb4aac3c1869dbed9bce8702ed88acc80000000000000017a9144317f779c0a2ccf8f6bc3d440bd9e536a5bff75287fa3e5100000000001976a914bf2646b8ba8b4a143220528bde9c306dac44a01c88ac00000000" + parser = blocks_parser.BlockchainParser() + decoded_tx = parser.deserialize_tx(hex) + + assert decoded_tx == { + 'version': 1, + 'segwit': False, + 'coinbase': False, + 'vin': [ + { + 'hash': b'\xdb:\xcf7t:\xc0\x15\x80\x8fy\x11\xa8\x87aS\x0c\x80\x18\x19\xb3\xb9\x074\n\xa6]\xfbm\x98\xce$', + 'n': 3, + 'scriptSig': b'G0D\x02 \x02\x96\x1fH\x00\xcb\x15\x7f\x8c\t\x13\x08M\xb0\xee\x14\x8f\xa3\xe1\x13\x0e\x0b^@\xc3\xa4jmO\x83\xce\xaf\x02 ,=\xd8\xe61\xbf$\xf4\xc0\xc54\x1b>\x13\x82\xa2\x7f\x846\xd7_>\n\tY\x15\x99[\x0b\xf7\xdc\x8e\x01!\x03\x95\xc2#\xfb\xf9nI\xe5\xb9\xe0j#l\xa7\xef\x95\xb1\x0b\xf1\x8c\x07K\xd9\x1aYB\xfc@6\r\x0bh', + 'nSequence': 4294967293, + 'coinbase': False + } + ], + 'vout': [ + { + 'nValue': 0, + 'scriptPubKey': b'jLPX2[\xd6\x13%\xdcc?\xad\xf0[\xec\x91W\xc21\x06u\x9c\xee@\x95M9\xd9\xdb\xff\xc1~\xc5\x85\x1a-\x1f\xeb]\'\x1d\xa4"\xe0\xe2Lz\xe8\xad)\xd2\xee\xab\xf7\xf9\xca=\xe3\x06\xbd+\xc9\x8e*9\xe4w1\xaa\x00\x0c\xaf@\x00S\x00\x0c\x12\x83\x00\x01I' + }, + { + 'nValue': 200, + 'scriptPubKey': b'v\xa9\x14b\xbe\xf4\x11\x0f\x98\xfd\xcbJ\xac<\x18i\xdb\xed\x9b\xce\x87\x02\xed\x88\xac' + }, + { + 'nValue': 200, + 'scriptPubKey': b'\xa9\x14C\x17\xf7y\xc0\xa2\xcc\xf8\xf6\xbc=D\x0b\xd9\xe56\xa5\xbf\xf7R\x87' + }, + { + 'nValue': 5324538, + 'scriptPubKey': b'v\xa9\x14\xbf&F\xb8\xba\x8bJ\x142 R\x8b\xde\x9c0m\xacD\xa0\x1c\x88\xac' + }], + 'vtxinwit': [], + 'lock_time': 0, + 'tx_hash': '54cc399879446c4eaa7774bb764b319a2680709f99704ce60344587f49ff97e8', + '__data__': '0100000001db3acf37743ac015808f7911a88761530c801819b3b907340aa65dfb6d98ce24030000006a473044022002961f4800cb157f8c0913084db0ee148fa3e1130e0b5e40c3a46a6d4f83ceaf02202c3dd8e631bf24f4c0c5341b3e1382a27f8436d75f3e0a095915995b0bf7dc8e01210395c223fbf96e49e5b9e06a236ca7ef95b10bf18c074bd91a5942fc40360d0b68fdffffff040000000000000000536a4c5058325bd61325dc633fadf05bec9157c23106759cee40954d39d9dbffc17ec5851a2d1feb5d271da422e0e24c7ae8ad29d2eeabf7f9ca3de306bd2bc98e2a39e47731aa000caf400053000c1283000149c8000000000000001976a91462bef4110f98fdcb4aac3c1869dbed9bce8702ed88acc80000000000000017a9144317f779c0a2ccf8f6bc3d440bd9e536a5bff75287fa3e5100000000001976a914bf2646b8ba8b4a143220528bde9c306dac44a01c88ac00000000' + } + + transactions_hex = [ + "0100000001db3acf37743ac015808f7911a88761530c801819b3b907340aa65dfb6d98ce24030000006a473044022002961f4800cb157f8c0913084db0ee148fa3e1130e0b5e40c3a46a6d4f83ceaf02202c3dd8e631bf24f4c0c5341b3e1382a27f8436d75f3e0a095915995b0bf7dc8e01210395c223fbf96e49e5b9e06a236ca7ef95b10bf18c074bd91a5942fc40360d0b68fdffffff040000000000000000536a4c5058325bd61325dc633fadf05bec9157c23106759cee40954d39d9dbffc17ec5851a2d1feb5d271da422e0e24c7ae8ad29d2eeabf7f9ca3de306bd2bc98e2a39e47731aa000caf400053000c1283000149c8000000000000001976a91462bef4110f98fdcb4aac3c1869dbed9bce8702ed88acc80000000000000017a9144317f779c0a2ccf8f6bc3d440bd9e536a5bff75287fa3e5100000000001976a914bf2646b8ba8b4a143220528bde9c306dac44a01c88ac00000000", + "010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff640342af0c2cfabe6d6dd04bc3504cba11910d72d3f9bcc603156272ec18d096431da690d1c11650bcec10000000f09f909f092f4632506f6f6c2f6900000000000000000000000000000000000000000000000000000000000000000000000500406f0100000000000522020000000000001976a914c6740a12d0a7d556f89782bf5faf0e12cf25a63988acf1c70e26000000001976a914c85526a428126c00ad071b56341a5a553a5e96a388ac0000000000000000266a24aa21a9ed8fd9974d26b10d3db6664fa2c59e8a504cb97c06e765a54c9096343cbac7716a00000000000000002f6a2d434f5245012953559db5cc88ab20b1960faa9793803d070337bdb2a04b4ccf74792cc6753c27c5fd5f1d6458bf00000000000000002c6a4c2952534b424c4f434b3af55b0e3836fafb2163bc99ce0bc3a950bf3bac5029e340f20459d525005d16580120000000000000000000000000000000000000000000000000000000000000000038aef23c", + "01000000000102ab5357d8170304254e84cb66947995a1adcb534f562204e81889ee4badd2f1710000000000ffffffff9405cdfa4bb01f7656a1d2ce035bc232123f4fae23ac6d1fca03e135ca0994f00000000000ffffffff02a02526000000000016001450e3623e0095fa422a427421c3841c1e60a676c1f715a40a000000001600140c272ee21eb41191d1d9c2bd92e26fd958b58b440247304402205cc5a5ceaf59b36cfc6fd12f93bdfd54c6e625c09923ada2052576ef2221e9fb02201d7504f58459cce71f12f58eec01b6da3e43558fb8cb47c70eef34e2adf960b20121036d841256f891183be493f016fcbfec057bd5d88cbd8d2f9d06f13a36d9caf58502483045022100d80f2b4557258b528d4eaa313eff53a6db760ad1aaad3f78ff57103ba083984c02202ae089bcaffa38fcc8bfa2d0a7f5c7ef611f861e3309dc7baeb858f5b1a7198e01210298410495c0b4a9365842524467b58a84ca439c364605c510b50d6be442d32c8b00000000", + "01000000023031e115e560c0d468459d7db35f5ab1992eaa0ab6aa0d6da49e2b8bcf1bb915010000006a47304402205535a9ac25844514828bff3580120d5add488e09b7a6e62018fc265aabf95fe302200b66d4eb23fc348b31d58729b479ae73db9dfc467edf38f8dfd927c48cb46b5801210219fbee4b9cc12188598f244ff0ee352b124cbf9046180a1b25e020c0258f9d64fffffffff2efdee1e775d962f7be96964adb352f9ef748a360749d6b74c69854a5c70a840c0000006a47304402203a28d10c786907fcb71c7bf69c507d58884ea9af2e7fa3b413d4e2867eca601502205fb253d82e4daa2672842ec031584ea7a215774422aa7de3cf8928c240e2faa60121030be5aa6d5de8c6dd89d6ac4d0e2a112caf5b12801349ab30fbdf2b205f0b94b8ffffffff02b60e0100000000001976a914f133f0339987cd84b6017517de2a93f009728d7e88acfdd7c400000000001976a91406c3bc40cde01312e2b24f8d2c23e68ea7d572f888ac00000000", + ] + for hex in transactions_hex: + decoded_tx_bitcoinlib = backend.deserialize(hex) + decoded_tx_parser = parser.deserialize_tx(hex, use_txid=False) + + for i, vin in enumerate(decoded_tx_bitcoinlib.vin): + assert vin.prevout.hash == decoded_tx_parser['vin'][i]['hash'] + assert vin.prevout.n == decoded_tx_parser['vin'][i]['n'] + assert vin.scriptSig == decoded_tx_parser['vin'][i]['scriptSig'] + assert vin.nSequence == decoded_tx_parser['vin'][i]['nSequence'] + + for i, vout in enumerate(decoded_tx_bitcoinlib.vout): + assert vout.nValue == decoded_tx_parser['vout'][i]['nValue'] + assert vout.scriptPubKey == decoded_tx_parser['vout'][i]['scriptPubKey'] + + assert decoded_tx_bitcoinlib.has_witness() == (len(decoded_tx_parser['vtxinwit']) > 0) + assert decoded_tx_bitcoinlib.is_coinbase() == decoded_tx_parser['coinbase'] + + assert utils.ib2h(decoded_tx_bitcoinlib.GetHash()) == decoded_tx_parser['tx_hash'] + + iterations = 25 + + start_time = time.time() + for i in range(iterations): + for hex in transactions_hex: + parser.deserialize_tx(hex) + end_time = time.time() + print(f"Time to deserialize {4 * iterations} transactions with block_parser: {end_time - start_time} seconds") + + start_time = time.time() + for i in range(iterations): + for hex in transactions_hex: + backend.deserialize(hex) + end_time = time.time() + print(f"Time to deserialize {4 * iterations} transactions with bitcoinlib: {end_time - start_time} seconds") diff --git a/counterpartylib/test/estimate_fee_per_kb_test.py b/counterparty-lib/counterpartylib/test/estimate_fee_per_kb_test.py similarity index 100% rename from counterpartylib/test/estimate_fee_per_kb_test.py rename to counterparty-lib/counterpartylib/test/estimate_fee_per_kb_test.py diff --git a/counterpartylib/test/__init__.py b/counterparty-lib/counterpartylib/test/fixtures/__init__.py similarity index 100% rename from counterpartylib/test/__init__.py rename to counterparty-lib/counterpartylib/test/fixtures/__init__.py diff --git a/counterpartylib/test/fixtures/params.py b/counterparty-lib/counterpartylib/test/fixtures/params.py similarity index 86% rename from counterpartylib/test/fixtures/params.py rename to counterparty-lib/counterpartylib/test/fixtures/params.py index e6389efc6a..882711b0a9 100644 --- a/counterpartylib/test/fixtures/params.py +++ b/counterparty-lib/counterpartylib/test/fixtures/params.py @@ -38,21 +38,21 @@ SHORT_ADDR_BYTES = ['6f' + a[1] for a in DEFAULT_PARAMS['addresses']] DP = DEFAULT_PARAMS MULTISIGADDR = [ - '1_{}_{}_2'.format(ADDR[0], ADDR[1]), - '1_{}_{}_2'.format(ADDR[2], ADDR[1]), - '1_{}_{}_2'.format(ADDR[0], ADDR[2]), + f'1_{ADDR[0]}_{ADDR[1]}_2', + f'1_{ADDR[2]}_{ADDR[1]}_2', + f'1_{ADDR[0]}_{ADDR[2]}_2', - '2_{}_{}_2'.format(ADDR[0], ADDR[1]), - '2_{}_{}_2'.format(ADDR[2], ADDR[1]), + f'2_{ADDR[0]}_{ADDR[1]}_2', + f'2_{ADDR[2]}_{ADDR[1]}_2', - '1_{}_{}_{}_3'.format(ADDR[0], ADDR[2], ADDR[1]), - '1_{}_{}_{}_3'.format(ADDR[0], ADDR[2], ADDR[3]), + f'1_{ADDR[0]}_{ADDR[2]}_{ADDR[1]}_3', + f'1_{ADDR[0]}_{ADDR[2]}_{ADDR[3]}_3', - '2_{}_{}_{}_3'.format(ADDR[0], ADDR[2], ADDR[1]), - '2_{}_{}_{}_3'.format(ADDR[0], ADDR[2], ADDR[3]), + f'2_{ADDR[0]}_{ADDR[2]}_{ADDR[1]}_3', + f'2_{ADDR[0]}_{ADDR[2]}_{ADDR[3]}_3', - '3_{}_{}_{}_3'.format(ADDR[0], ADDR[2], ADDR[1]), - '3_{}_{}_{}_3'.format(ADDR[0], ADDR[2], ADDR[3]) + f'3_{ADDR[0]}_{ADDR[2]}_{ADDR[1]}_3', + f'3_{ADDR[0]}_{ADDR[2]}_{ADDR[3]}_3' ] P2SH_ADDR = [ diff --git a/counterpartylib/test/fixtures/rawtransactions.db b/counterparty-lib/counterpartylib/test/fixtures/rawtransactions.db similarity index 100% rename from counterpartylib/test/fixtures/rawtransactions.db rename to counterparty-lib/counterpartylib/test/fixtures/rawtransactions.db diff --git a/counterpartylib/test/fixtures/scenarios.py b/counterparty-lib/counterpartylib/test/fixtures/scenarios.py similarity index 82% rename from counterpartylib/test/fixtures/scenarios.py rename to counterparty-lib/counterpartylib/test/fixtures/scenarios.py index c3bb971939..8f88555758 100644 --- a/counterpartylib/test/fixtures/scenarios.py +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios.py @@ -29,13 +29,14 @@ from .params import ADDR, MULTISIGADDR, P2SH_ADDR, P2WPKH_ADDR, DEFAULT_PARAMS as DP + UNITTEST_FIXTURE = [ ['burn', (ADDR[0], DP['burn_quantity']), {'encoding': 'multisig'}], # 310000 - ['issuance', (ADDR[0], None, 'DIVISIBLE', DP['quantity'] * 1000, True, 'Divisible asset'), {'encoding': 'multisig'}], - ['issuance', (ADDR[0], None, 'NODIVISIBLE', 1000, False, 'No divisible asset'), {'encoding': 'multisig'}], - ['issuance', (ADDR[0], None, 'CALLABLE', 1000, True, 'Callable asset'), {'encoding': 'multisig'}], - ['issuance', (ADDR[0], None, 'LOCKED', 1000, True, 'Locked asset'), {'encoding': 'multisig'}], - ['issuance', (ADDR[0], None, 'LOCKED', 0, True, 'LOCK'), {'encoding': 'multisig'}], + ['issuance', (ADDR[0], None, 'DIVISIBLE', DP['quantity'] * 1000, True, None, None, 'Divisible asset'), {'encoding': 'multisig'}], + ['issuance', (ADDR[0], None, 'NODIVISIBLE', 1000, False, None, None, 'No divisible asset'), {'encoding': 'multisig'}], + ['issuance', (ADDR[0], None, 'CALLABLE', 1000, True, None, None, 'Callable asset'), {'encoding': 'multisig'}], + ['issuance', (ADDR[0], None, 'LOCKED', 1000, True, None, None, 'Locked asset'), {'encoding': 'multisig'}], + ['issuance', (ADDR[0], None, 'LOCKED', 0, True, None, None, 'LOCK'), {'encoding': 'multisig'}], ['order', (ADDR[0], 'XCP', DP['quantity'], 'DIVISIBLE', DP['quantity'], 2000, 0), {'encoding': 'multisig'}], ['send', (ADDR[0], ADDR[1], 'DIVISIBLE', DP['quantity']), {'encoding': 'multisig'}, None], ['send', (ADDR[0], ADDR[1], 'XCP', DP['quantity']), {'encoding': 'multisig'}, None], @@ -46,7 +47,7 @@ ['send', (ADDR[0], MULTISIGADDR[0], 'DIVISIBLE', DP['quantity'] * 10), {'encoding': 'multisig'}, None], ['send', (ADDR[0], ADDR[1], 'NODIVISIBLE', 5), {'encoding': 'multisig'}, None], ['send', (ADDR[0], MULTISIGADDR[0], 'NODIVISIBLE', 10), {'encoding': 'multisig'}, None], - ['issuance', (ADDR[0], None, 'MAXI', 2**63 - 1, True, 'Maximum quantity'), {'encoding': 'multisig'}], + ['issuance', (ADDR[0], None, 'MAXI', 2**63 - 1, True, None, None, 'Maximum quantity'), {'encoding': 'multisig'}], ['broadcast', (ADDR[0], 1388000000, 1, DP['fee_multiplier'], 'Unit Test'), {'encoding': 'multisig'}], ['broadcast', (ADDR[2], 1288000000, 1, 0.0, 'lock'), {'encoding': 'multisig'}], ['bet', (ADDR[0], ADDR[0], 1, 1388000001, 9, 9, 0.0, 5040, 100), {'encoding': 'multisig'}], @@ -63,15 +64,15 @@ ['dispenser', (ADDR[5], 'XCP', 100, 100, 100, 0), {'encoding': 'opreturn'}], ['burn', (P2SH_ADDR[0], int(DP['burn_quantity'] / 2)), {'encoding': 'opreturn'}], - ['issuance', (P2SH_ADDR[0], None, 'PAYTOSCRIPT', 1000, False, 'PSH issued asset'), {'encoding': 'multisig', 'dust_return_pubkey': False}], + ['issuance', (P2SH_ADDR[0], None, 'PAYTOSCRIPT', 1000, False, None, None, 'PSH issued asset'), {'encoding': 'multisig', 'dust_return_pubkey': False}], ['send', (ADDR[0], P2SH_ADDR[0], 'DIVISIBLE', DP['quantity']), {'encoding': 'multisig'}, None], ['broadcast', (P2SH_ADDR[0], 1388000002, 1, DP['fee_multiplier'], 'Unit Test'), {'encoding': 'opreturn'}], ['bet', (P2SH_ADDR[0], P2SH_ADDR[0], 3, 1388000200, 10, 10, 0.0, 5040, 1000), {'encoding': 'opreturn'}], # locked with an issuance after lock - ['issuance', (ADDR[6], None, 'LOCKEDPREV', 1000, True, 'Locked asset'), {'encoding': 'multisig'}], - ['issuance', (ADDR[6], None, 'LOCKEDPREV', 0, True, 'LOCK'), {'encoding': 'multisig'}], - ['issuance', (ADDR[6], None, 'LOCKEDPREV', 0, True, 'changed'), {'encoding': 'multisig'}], + ['issuance', (ADDR[6], None, 'LOCKEDPREV', 1000, True, None, None, 'Locked asset'), {'encoding': 'multisig'}], + ['issuance', (ADDR[6], None, 'LOCKEDPREV', 0, True, None, None, 'LOCK'), {'encoding': 'multisig'}], + ['issuance', (ADDR[6], None, 'LOCKEDPREV', 0, True, None, None, 'changed'), {'encoding': 'multisig'}], ['burn', (P2WPKH_ADDR[0], DP['burn_quantity']), {'encoding': 'opreturn'}], @@ -99,12 +100,12 @@ ['order', (ADDR[0], 'XCP', DP['quantity'], 'BTC', round(DP['quantity'] / 125), 2000, DP['fee_required']), {'encoding': 'multisig'}], ['order', (ADDR[1], 'BTC', round(DP['quantity'] / 125), 'XCP', DP['quantity'], 2000, 0), {'encoding': 'multisig', 'fee_provided': DP['fee_provided']}], ['burn', (ADDR[2], DP['burn_quantity']), {'encoding': 'multisig'}], - ['issuance', (ADDR[2], None, 'DIVIDEND', 100, True, 'Test dividend'), {'encoding': 'multisig'}], + ['issuance', (ADDR[2], None, 'DIVIDEND', 100, True, 'Test dividend', None, None), {'encoding': 'multisig'}], ['send', (ADDR[2], ADDR[3], 'DIVIDEND', 10), {'encoding': 'multisig'}, None], ['send', (ADDR[2], ADDR[3], 'XCP', 92945878046), {'encoding': 'multisig'}, None], - ['issuance', (ADDR[0], None, 'PARENT', DP['quantity'] * 1, True, 'Parent asset'), {'encoding': 'opreturn'}], - ['issuance', (ADDR[0], None, 'PARENT.already.issued', DP['quantity'] * 1, True, 'Child of parent'), {'encoding': 'opreturn'}], + ['issuance', (ADDR[0], None, 'PARENT', DP['quantity'] * 1, True, None, None, 'Parent asset'), {'encoding': 'opreturn'}], + ['issuance', (ADDR[0], None, 'PARENT.already.issued', DP['quantity'] * 1, True, None, None, 'Child of parent'), {'encoding': 'opreturn'}], ['create_next_block', 500], @@ -122,8 +123,8 @@ def generate_standard_scenario(address1, address2, order_matches): ['order', (address1, 'BTC', DP['small'], 'XCP', DP['small'] * 2, DP['expiration'], 0), {'encoding': 'multisig', 'fee_provided': DP['fee_provided']}], ['order', (address1, 'XCP', round(DP['small'] * 2.1), 'BTC', DP['small'], DP['expiration'], DP['fee_required']), {'encoding': 'multisig'}], ['btcpay', (address1, order_matches[0]), {'encoding': 'multisig'}], - ['issuance', (address1, None, 'BBBB', DP['quantity'] * 10, True, ''), {'encoding': 'multisig'}], - ['issuance', (address1, None, 'BBBC', round(DP['quantity'] / 1000), False, 'foobar'), {'encoding': 'multisig'}], + ['issuance', (address1, None, 'BBBB', DP['quantity'] * 10, True, None, None, ''), {'encoding': 'multisig'}], + ['issuance', (address1, None, 'BBBC', round(DP['quantity'] / 1000), False, None, None, 'foobar'), {'encoding': 'multisig'}], ['send', (address1, address2, 'BBBB', round(DP['quantity'] / 25)), {'encoding': 'multisig'}, None], ['send', (address1, address2, 'BBBC', round(DP['quantity'] / 190000)), {'encoding': 'multisig'}, None], ['dividend', (address1, 600, 'BBBB', 'XCP'), {'encoding': 'multisig'}], @@ -144,47 +145,48 @@ def generate_standard_scenario(address1, address2, order_matches): ['create_next_block', 101] ] + standard_scenarios_params = { 'simplesig': { 'address1': ADDR[0], 'address2': ADDR[1], 'order_matches': [ - '507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379_178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424' + '6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59_36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c' ] }, 'multisig_1_of_2': { 'address1': MULTISIGADDR[0], 'address2': MULTISIGADDR[1], 'order_matches': [ - '7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1_e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433' + '332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367_f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f' ] }, 'multisig_2_of_2': { 'address1': MULTISIGADDR[3], 'address2': MULTISIGADDR[4], 'order_matches': [ - '82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e_371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1' + '025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0_c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee' ] }, 'multisig_1_of_3': { 'address1': MULTISIGADDR[5], 'address2': MULTISIGADDR[6], 'order_matches': [ - 'cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052_beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754' + '04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6_98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52' ] }, 'multisig_2_of_3': { 'address1': MULTISIGADDR[7], 'address2': MULTISIGADDR[8], 'order_matches': [ - '12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8_792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c' + 'c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375_89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a' ] }, 'multisig_3_of_3': { 'address1': MULTISIGADDR[9], 'address2': MULTISIGADDR[10], 'order_matches': [ - '53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71_cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16' + '1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093_a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e' ] } } @@ -195,4 +197,4 @@ def generate_standard_scenario(address1, address2, order_matches): } # Generate special tests for simplesig, multisig2 and multisig3 using standard scenario. for scenario_name in standard_scenarios_params: - INTEGRATION_SCENARIOS[scenario_name] = (generate_standard_scenario(**standard_scenarios_params[scenario_name]), 'simplesig') + INTEGRATION_SCENARIOS[scenario_name] = (generate_standard_scenario(**standard_scenarios_params[scenario_name]), scenario_name) diff --git a/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.json b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.json similarity index 61% rename from counterpartylib/test/fixtures/scenarios/multisig_1_of_2.json rename to counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.json index c0135ba3a2..1be230b08b 100644 --- a/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.json +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.json @@ -3,72 +3,72 @@ "burn": "0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac87bf4302000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "send": "010000000139d59310841d3513e0164ac06f6e55783ef2f06cba1a7fb92e28a5fc75af349d000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004751210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52ae781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb974529b7c2a7965ff221029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae2e86f505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "send": "010000000139d59310841d3513e0164ac06f6e55783ef2f06cba1a7fb92e28a5fc75af349d000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004751210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52aee80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb974529b7c2a7965ff221029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4ebbf505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "order": "0100000001f60db04e0032497e4bbd11bbf1db8b89bbacdd4cd51133177c97050e39366489020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb974529b7c2a7965f0821029ea8cc75076c9fb9c5417f502a30fc28198b34982dbb629ec04b4f8b05a07177210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae7625e605000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "order": "01000000013cc3ba7bbe0a7a4aee1362686e2dc2e557ce933309144047d384152bec39e858020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb974529b7c2a7965f0821029ea8cc75076c9fb9c5417f502a30fc28198b34982dbb629ec04b4f8b05a07177210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae2675e605000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "order": "0100000001f12c5aca63605e59ff29b984469792dacec253f74a0d17f9fc10d94f73df787a010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452d0f1e67965fed21039ea8cc75076d9fb9c541785f3bb0fc28198b34982db6d93ec04b4f8b05a07158210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae6eece505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "order": "01000000016743482517ee7407a8fe4323c5e6beaf1e8b771414f04d3265957ba50d032b33010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452d0f1e67965fed21039ea8cc75076d9fb9c541785f3bb0fc28198b34982db6d93ec04b4f8b05a07158210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeae56e605000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "btcpay": "010000000133240e12589af7a01dd22eaa56b2dc11c767330a9629b3bf76e21f5d821754e7010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0480f0fa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512103e34ccc12f76f0562d2061e675c14eab2b455a6b30c35fc9a0fdc1ef0e94ccdb5210309ee48cc2e92c6e7a522b0ffe7c11b760e096987cfcddd2de9dd45b862676074210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae781e00000000000069512102c94ccc12f76f0562d2daac31fd40407067ede5fbe2c2cfa4452b4d3227965f9e21029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae3399ea02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "btcpay": "01000000013fbfdf855283518bbdffbcf00b8d37f4e3b41a4b87b66d1085be1b0ec0b693f0010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0480f0fa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512103e34ccc12f76f0562d2061e675c5db96ecabf043695fea667513f3ab93939e1e62102786def36f9c598cd2b565fed88570cb1af4b3a83933e72f376cc0491b1438568210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee80300000000000069512102c94ccc12f76f0562d231936ca7d26dd04c4bfcf1751354a8452b4d3227965fd821029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9338eb02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "issuance": "010000000161ec1b84c02bc441d7cff7e99e5a108e346db538906316b8695f867664de005a000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512102f94ccc12f76f0562d2061e67436e926dc71a7fe497cceb974510d7f827975ff821029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae78b7fa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "issuance": "0100000001b810ce5b6127d54d6f9d4c5515a8db7c9e5b8286179a315de138382338dc17ed000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512102f94ccc12f76f0562d2061e67436e926dc71a7fe497cceb974510d7f827975ff821029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae08d2fa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "issuance": "01000000011de46bf0553e302fc3588baebf20261a68404b28b6524624ceee288a1f7fc859010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103f34ccc12f76f0562d2061e67436e926dc71a7fe498cceb97452b4cb487965fa921039ea8cc75076d9fb9c32715caa9518e22198b34982dbb629ec04b4f8b05a07180210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae707efa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "issuance": "010000000125ae3a0b50e355fe0f967e178efbd0b9eb5389ab421c18e1aa5add56cb442bcd010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103f34ccc12f76f0562d2061e67436e926dc71a7fe498cceb97452b4cb487965fa921039ea8cc75076d9fb9c32715caa9518e22198b34982dbb629ec04b4f8b05a07180210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae90b3fa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "send": "010000000191623ed693c0b0573b9373149a595010be25dc5394a30f0bae51446c85e87365010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004751210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52ae781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe497cceb97452b703b27965f0721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9e23fa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "send": "0100000001d97748e53d003cb83143fa37b2e5d233a0981e530b7fe7f18dcdd87f22dfefdd010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004751210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52aee80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe497cceb97452b703b27965f0721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aede8dfa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "send": "010000000195b5b60537ce6fa78ad2a136043ab56819dfb0a527a49d52c2ff29e967052bc6020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004751210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52ae781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d3029965f8621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeccc8f902000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "send": "01000000010cd3e7c2bb7738cc90de85fd2d2d011ac4394dd4f7da66fec2c3ea191a4537f3020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004751210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52aee80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d3029965f8621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae2c68fa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "dividend": "0100000001b0d12572a5a3af9e92fbc572c1e1b2e042d4dc477d30849a17abe65864e03519020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103fa4ccc12f76f0562d2061e67656e926dc71a7fa1a8cceb97452b4d7540965fde21029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aec48ff902000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "dividend": "01000000019443aa64111e05bf6680f1ab3f003883f9cf87dd37445b1187b4312b48e939c6020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103fa4ccc12f76f0562d2061e67656e926dc71a7fa1a8cceb97452b4d7540965fde21029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb449fa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "dividend": "01000000014fbd8e5db76a42bb75a4898ec7a75626675d69f4d22f78c76346be832e363460010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512102fa4ccc12f76f0562d2061e67656e926dc71a7fa0d0cceb97452b4d754f965fb421029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aebc56f902000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "dividend": "0100000001c88a0b565f5701bd10c3e0884815748a88fd7ce6dd0293d090a58178fec18178010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512102fa4ccc12f76f0562d2061e67656e926dc71a7fa0d0cceb97452b4d754f965fb421029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae3c2bfa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "broadcast": "01000000018730e9cab26a62ff97c9dfeb206cfe9c9e74f8557902d03f7285d17c12cf2f46010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ec75a26a3f0cceb97452eb8d2d89f0a7b2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb41df902000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "broadcast": "0100000001f723f1993f1f238fb7ec36d41eea6f8bf2e9090c0701011136225e62ad9818c4010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ec75a26a3f0cceb97452eb8d2d89f0a7b2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aec40cfa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "bet": "0100000001e8d497590ead44e7236f2578d5c98dcad029e291234f0580f0ab34b82d70d23b010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb95bfdbcd3227965f5421039fd5b435076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a07174210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee2c2f802000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "bet": "01000000016d41ec6e0fa72fddf85d0c81a5937f3a1183c3578eaaa2cc23483303ad3315a2010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb95bfdbcd3227965f5421039fd5b435076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a07174210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae12e7f902000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "bet": "0100000001b91980dd7139f0259b262535eecd135488ff158e5d9007c35e04996c0cbbf419020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb9638530d3227965f7721039cd1f115076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a071ee210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1068f802000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "bet": "01000000012f49325e5a141e28549af0245494d99a4ddfa7f2fe351785417ca9f034290674020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb9638530d3227965f7721039cd1f115076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a071ee210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae60c1f902000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "bet": "0100000001845e3db66a566d32babbedc2e83eaa3ddc0eac492eeebe4fc82575ce6811ee43020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb9fb5facd3227965f6b21028a745ff5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0717a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae3e0df802000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "bet": "010000000167c11c6bd3f1bd50742950a592e6d374ee226bf01cf3e6e0b6245f6a66305f6a020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb9fb5facd3227965f6b21028a745ff5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0717a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeae9bf902000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "bet": "01000000017d7182bfaa4ec30e46317da5cf76267ea05fb786b5000da7ff4938ad85fac91c020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb8399b8cd3227965fdf210396581df5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a07111210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae6cb2f702000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "bet": "0100000001b30f1b88c6cca81131e241c1a2c5e704c6bf57ef01044a38123491b8a6b96620020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb8399b8cd3227965fdf210396581df5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a07111210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefc75f902000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "bet": "010000000131058299791dda71ad84c640be8452797cec042218cee5e76ec28871de985f00020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e903f7c29b7a3f0ccebbbf13ccd3227965fca2102b816faf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a071fc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9a57f702000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "bet": "01000000018e1d5dc6dc0228d6ad9783b4f38b6707e92347babdb97a941a89658bb53adb65020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e903f7c29b7a3f0ccebbbf13ccd3227965fca2102b816faf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a071fc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4a50f902000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "bet": "0100000001da430240dd030a4165089621f21137e24092aa31f9bd5ba76b641c659256f3e1020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0ccebb1fb1dcd3227965f282102b21cdbf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0712a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aec8fcf602000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "bet": "0100000001e4bcd49685d7aba883ff7ccdc723e3635a46e6f3c50ecffb2b3719b5f61db194020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0ccebb1fb1dcd3227965f282102b21cdbf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0712a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae982af902000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "broadcast": "0100000001b9d11457562f2732ad7dc848e6f5cac8b23fd4ed955f6303fd050bfdb8afc4da020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ef55a2754d5a317861b2b0179679f0aff2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aec0c3f602000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "broadcast": "01000000018e0957deccfb2332356c109f9ab3c6587fb20de7a1f1a8186b4f87a21cffdaa7020000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ef55a2754d5a317861b2b0179679f0aff2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae200cf902000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "broadcast": "0100000001092b653e36e14669a62dd6eaed36f67341381779d81ad82be823d929c7e7376b010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ea25a26b6037aae368e2b0179679f0adc2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb88af602000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "broadcast": "0100000001b483613f210e44028db0e6e55b922a9d7ff88e67813589a4bbad1a0b6cae20f0010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ea25a26b6037aae368e2b0179679f0adc2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea8edf802000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "broadcast": "0100000001a7cd6d173f2f53bf78ed7ae3f7272f9ce3d4db98e5cecc63878ff587ac720f72010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295e0e5a7fa3f0cceb97452b0179679f0ac02103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb051f602000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "broadcast": "01000000010096f8276fa96abea209012b2050ec631b636ac8e07bf8329d488d2c85d8cbdc010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295e0e5a7fa3f0cceb97452b0179679f0ac02103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae30cff802000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "order": "01000000013ccd67e256e4eced9acbf6c39b8f9927554e2ba3a877e6c5474b86848b56296e010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fe497cceb974529b7c2a7965f9621029ea8cc75076c9fb9c541785f3bb0fc28198b34982dbb629ec04b4f8b05a07191210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea818f602000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "order": "01000000014eb69e4297a2e2f0eeac4266b4414aba60aa47bf0eb0288e4a66e6ccdc367f45010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fe497cceb974529b7c2a7965f9621029ea8cc75076c9fb9c541785f3bb0fc28198b34982dbb629ec04b4f8b05a07191210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb8b0f802000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "burn": "0100000003b33947f5eb32c22ad77a014f61fc4e1cec39748419cbe31293e11c4e1b941196010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff61ec1b84c02bc441d7cff7e99e5a108e346db538906316b8695f867664de005a030000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff30decf565b8cb16c9418ef695bd93cd2dd7c6d04edbec5701b8d6d69bb1a6b9b010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0200e1f505000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac0f572e02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "burn": "0100000003ee5f242b8f29eabd3aeb72fdd97223fda2c8c13346b7370d0dab47051c8ab06c010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffffb810ce5b6127d54d6f9d4c5515a8db7c9e5b8286179a315de138382338dc17ed030000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff30decf565b8cb16c9418ef695bd93cd2dd7c6d04edbec5701b8d6d69bb1a6b9b010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0200e1f505000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac7f8e3102000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "send": "0100000001dadf553f3e56233276f0f12e8507baf1a5d54f712309a0f122bdfa1e6fd31cc8010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004751210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52ae781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d1537965fe121029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae3dfc2d02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "send": "0100000001dadf553f3e56233276f0f12e8507baf1a5d54f712309a0f122bdfa1e6fd31cc8010000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004751210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52aee80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d1537965fe121029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aecd683102000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" } ] \ No newline at end of file diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.log b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.log new file mode 100644 index 0000000000..d1b328cfad --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.log @@ -0,0 +1,237 @@ +Creating connection to `:memory:`. +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.00000000; txid: 5f00a83de4b1acc6a510a03552679041fffaae22de1fffdbe309a36bb6111505; vout: 0; confirmations: 7', 'amount: 1.00000000; txid: 9d34af75fca5282eb97f1aba6cf0f23e78556e6fc04a16e013351d841093d539; vout: 0; confirmations: 7'] +Fee/KB 0.00025000 +New input: amount: 1.00000000; txid: 5f00a83de4b1acc6a510a03552679041fffaae22de1fffdbe309a36bb6111505; vout: 0; confirmations: 7 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.37994375 BTC +Burn: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 burned BTC for XCP (9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.00000000; txid: 9d34af75fca5282eb97f1aba6cf0f23e78556e6fc04a16e013351d841093d539; vout: 0; confirmations: 8', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.00000000; txid: 9d34af75fca5282eb97f1aba6cf0f23e78556e6fc04a16e013351d841093d539; vout: 0; confirmations: 8 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.99990350 BTC +Send: XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (58e839ec2b1584d3474014093393ce57e5c22d6e686213ee4a7a0abe7bbac33c) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.99990350; txid: 58e839ec2b1584d3474014093393ce57e5c22d6e686213ee4a7a0abe7bbac33c; vout: 2; confirmations: 1', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 2'] +Fee/KB 0.00025000 +New input: amount: 0.99990350; txid: 58e839ec2b1584d3474014093393ce57e5c22d6e686213ee4a7a0abe7bbac33c; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 1000000 +Size: 272 Fee: 0.01000000 Change quantity: 0.98989350 BTC +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367) [open] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.98989350; txid: 332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367; vout: 1; confirmations: 1', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 3'] +Fee/KB 0.00025000 +New input: amount: 0.98989350; txid: 332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.98981550 BTC +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f) [open] +Considering: 332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367 +Tx0 Price: 2.0; Tx1 Inverse Price: 2.1 +Potential forward quantities: 50000000, 52500000 +Forward Quantity: 50000000 +Backward Quantity: 100000000 +Tx0 fee provided remaining: 0.01; required fee: 0.00857142 +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367) [open] +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f) [open] +Order Match: BTC for XCP (332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367_f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f) [pending] +Order match has only -10 confirmation(s). +data_btc_out=2000 (data_value=1000 len(data_array)=2) +Sorted candidate UTXOs: ['amount: 0.98981550; txid: f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f; vout: 1; confirmations: 1', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 4'] +Fee/KB 0.00025000 +New input: amount: 0.98981550; txid: f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 387 final_fee 9675 +Size: 387 Fee: 0.00009675 Change quantity: 0.48969875 BTC +Order Match: BTC for XCP (332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367_f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f) [completed] +Database: set status of order_match 332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367_f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f to completed. +BTC Payment: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 paid BTC to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 for order match 332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367_f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f (ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.50000000; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 0; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 1', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 5'] +Fee/KB 0.00025000 +New input: amount: 0.50000000; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 0; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.49992200 BTC +Issuance: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 created 10.0 of divisible asset BBBB (cd2b44cb56dd5aaae1181c42ab8953ebb9d0fb8e177e960ffe55e3500b3aae25) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49992200; txid: cd2b44cb56dd5aaae1181c42ab8953ebb9d0fb8e177e960ffe55e3500b3aae25; vout: 1; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 2', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 6'] +Fee/KB 0.00025000 +New input: amount: 0.49992200; txid: cd2b44cb56dd5aaae1181c42ab8953ebb9d0fb8e177e960ffe55e3500b3aae25; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.49984400 BTC +Issuance: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 created 100000 of indivisible asset BBBC (ddefdf227fd8cd8df1e77f0b531e98a033d2e5b237fa4331b83c003de54877d9) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49984400; txid: ddefdf227fd8cd8df1e77f0b531e98a033d2e5b237fa4331b83c003de54877d9; vout: 1; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 3', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 7'] +Fee/KB 0.00025000 +New input: amount: 0.49984400; txid: ddefdf227fd8cd8df1e77f0b531e98a033d2e5b237fa4331b83c003de54877d9; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.49974750 BTC +Send: BBBB from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (f337451a19eac3c2fe66daf7d44d39c41a012d2dfd85de90cc3877bbc2e7d30c) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49974750; txid: f337451a19eac3c2fe66daf7d44d39c41a012d2dfd85de90cc3877bbc2e7d30c; vout: 2; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 4', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 8'] +Fee/KB 0.00025000 +New input: amount: 0.49974750; txid: f337451a19eac3c2fe66daf7d44d39c41a012d2dfd85de90cc3877bbc2e7d30c; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.49965100 BTC +Send: BBBC from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (c639e9482b31b487115b4437dd87cff98338003fabf18066bf051e1164aa4394) [valid] +Total quantity to be distributed in dividends: 0.00000024 XCP +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49965100; txid: c639e9482b31b487115b4437dd87cff98338003fabf18066bf051e1164aa4394; vout: 2; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 5', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 9'] +Fee/KB 0.00025000 +New input: amount: 0.49965100; txid: c639e9482b31b487115b4437dd87cff98338003fabf18066bf051e1164aa4394; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.49957300 BTC +Dividend: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 paid XCP per unit of BBBB (7881c1fe7881a590d09302dde67cfd888a74154888e0c310bd01575f560b8ac8) [valid] +Total quantity to be distributed in dividends: 0.004208 XCP +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49957300; txid: 7881c1fe7881a590d09302dde67cfd888a74154888e0c310bd01575f560b8ac8; vout: 1; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 6', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 10'] +Fee/KB 0.00025000 +New input: amount: 0.49957300; txid: 7881c1fe7881a590d09302dde67cfd888a74154888e0c310bd01575f560b8ac8; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.49949500 BTC +Dividend: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 paid XCP per unit of BBBC (c41898ad625e2236110101070c09e9f28b6fea1ed436ecb78f231f3f99f123f7) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49949500; txid: c41898ad625e2236110101070c09e9f28b6fea1ed436ecb78f231f3f99f123f7; vout: 1; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 7', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 11'] +Fee/KB 0.00025000 +New input: amount: 0.49949500; txid: c41898ad625e2236110101070c09e9f28b6fea1ed436ecb78f231f3f99f123f7; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.49941700 BTC +Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:33:20 with a fee of 99.999999%% (a21533ad03334823cca2aa8e57c383113a7f93a5810c5df8dd2fa70f6eec416d) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49941700; txid: a21533ad03334823cca2aa8e57c383113a7f93a5810c5df8dd2fa70f6eec416d; vout: 1; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 8', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 12'] +Fee/KB 0.00025000 +New input: amount: 0.49941700; txid: a21533ad03334823cca2aa8e57c383113a7f93a5810c5df8dd2fa70f6eec416d; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.49932050 BTC +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49932050; txid: 74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f; vout: 2; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 9', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 13'] +Fee/KB 0.00025000 +New input: amount: 0.49932050; txid: 74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.49922400 BTC +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367) [expired] +Expired order: 332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Considering: 74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f +Tx0 Inverse Odds: 0.5; Tx1 Odds: 0.6024096385542169 +Potential forward quantities: 50000000, 41500000 +Forward Quantity: 41500000 +Backward Quantity: 20750000 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Bet Match: BullCFD for XCP against BearCFD for XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:00 that value, leveraged 3.0x (74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f_6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49922400; txid: 6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167; vout: 2; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 10', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 14'] +Fee/KB 0.00025000 +New input: amount: 0.49922400; txid: 6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.49912750 BTC +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f) [expired] +Expired order: f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49912750; txid: 2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3; vout: 2; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 11', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 15'] +Fee/KB 0.00025000 +New input: amount: 0.49912750; txid: 2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.49903100 BTC +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Considering: 74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f +Skipping: leverages disagree. +Considering: 2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3 +Tx0 Inverse Odds: 2.3333333333333335; Tx1 Odds: 2.3333333333333335 +Potential forward quantities: 150000000, 150000000 +Forward Quantity: 150000000 +Backward Quantity: 350000000 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Bet Match: BullCFD for XCP against BearCFD for XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:00 that value, leveraged 1.0x (2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3_65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49903100; txid: 65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e; vout: 2; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 12', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 16'] +Fee/KB 0.00025000 +New input: amount: 0.49903100; txid: 65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.49893450 BTC +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49893450; txid: 94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4; vout: 2; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 13', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 17'] +Fee/KB 0.00025000 +New input: amount: 0.49893450; txid: 94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.49883800 BTC +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Considering: 94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4 +Tx0 Inverse Odds: 0.8666666666666667; Tx1 Odds: 0.8666666666666667 +Potential forward quantities: 750000000, 750000000 +Forward Quantity: 750000000 +Backward Quantity: 650000000 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Bet Match: Equal for XCP against NotEqual for XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:36:40 that value, leveraged 1.0x (94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4_a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49883800; txid: a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e; vout: 2; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 14', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 18'] +Fee/KB 0.00025000 +New input: amount: 0.49883800; txid: a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.49876000 BTC +Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:34:10 with a fee of 5.0%% (f020ae6c0b1aadbba4893581678ef87f9d2a925be5e6b08d02440e213f6183b4) [valid] +Bet Match Force‐Liquidated: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f_6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167) +Bet Match: BullCFD for XCP against BearCFD for XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:00 that value, leveraged 3.0x (74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f_6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167) [settled: liquidated for bear] +Database: set status of bet_match 74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f_6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167 to settled: liquidated for bear. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49876000; txid: f020ae6c0b1aadbba4893581678ef87f9d2a925be5e6b08d02440e213f6183b4; vout: 1; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 15', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 19'] +Fee/KB 0.00025000 +New input: amount: 0.49876000; txid: f020ae6c0b1aadbba4893581678ef87f9d2a925be5e6b08d02440e213f6183b4; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.49868200 BTC +Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:01 with a fee of 5.0%% (dccbd8852c8d489d32f87be0c86a631b63ec50202b0109a2be6aa96f27f89600) [valid] +Bet Match Settled: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3_65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e) +Bet Match: BullCFD for XCP against BearCFD for XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:00 that value, leveraged 1.0x (2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3_65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e) [settled] +Database: set status of bet_match 2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3_65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e to settled. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49868200; txid: dccbd8852c8d489d32f87be0c86a631b63ec50202b0109a2be6aa96f27f89600; vout: 1; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 16', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 20'] +Fee/KB 0.00025000 +New input: amount: 0.49868200; txid: dccbd8852c8d489d32f87be0c86a631b63ec50202b0109a2be6aa96f27f89600; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.49860400 BTC +Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:36:41 with a fee of 5.0%% (457f36dccce6664a8e28b00ebf47aa60ba4a41b46642aceef0e2a297429eb64e) [valid] +Bet Match Settled: NotEqual won the pot of XCP; XCP credited to the feed address (94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4_a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e) +Bet Match: Equal for XCP against NotEqual for XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:36:40 that value, leveraged 1.0x (94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4_a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e) [settled: for notequal] +Database: set status of bet_match 94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4_a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e to settled: for notequal. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.49860400; txid: 457f36dccce6664a8e28b00ebf47aa60ba4a41b46642aceef0e2a297429eb64e; vout: 1; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 17', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 21'] +Fee/KB 0.00025000 +New input: amount: 0.49860400; txid: 457f36dccce6664a8e28b00ebf47aa60ba4a41b46642aceef0e2a297429eb64e; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.49852600 BTC +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered BBBB for XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (6cb08a1c0547ab0d0d37b74633c1c8a2fd2372d9fd72eb3abdea298f2b245fee) [open] +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 0.49852600; txid: 6cb08a1c0547ab0d0d37b74633c1c8a2fd2372d9fd72eb3abdea298f2b245fee; vout: 1; confirmations: 1', 'amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 18', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 22', 'amount: 0.00001000; txid: 74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f; vout: 0; confirmations: 10', 'amount: 0.00001000; txid: 6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167; vout: 0; confirmations: 9', 'amount: 0.00001000; txid: 2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3; vout: 0; confirmations: 8', 'amount: 0.00001000; txid: 65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e; vout: 0; confirmations: 7', 'amount: 0.00001000; txid: 94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4; vout: 0; confirmations: 6', 'amount: 0.00001000; txid: a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e; vout: 0; confirmations: 5'] +Fee/KB 0.00025000 +New input: amount: 0.49852600; txid: 6cb08a1c0547ab0d0d37b74633c1c8a2fd2372d9fd72eb3abdea298f2b245fee; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: -0.50153025 BTC +New input: amount: 0.48969875; txid: ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8; vout: 3; confirmations: 18 +final_fee inputs: 2 size: 406 final_fee 10150 +Size: 406 Fee: 0.00010150 Change quantity: -0.01187675 BTC +New input: amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 22 +final_fee inputs: 3 size: 587 final_fee 14675 +Size: 587 Fee: 0.00014675 Change quantity: 0.36802175 BTC +Burn: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 burned BTC for XCP (c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.36802175; txid: c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.36802175; txid: c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.36792525 BTC +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Expired bet: 74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f +Send: BBBC from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (c576ecde0f86c86725b540c9f5e6ae57a378fe9694260f7859eca55613d9d341) [valid] +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered BBBB for XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (6cb08a1c0547ab0d0d37b74633c1c8a2fd2372d9fd72eb3abdea298f2b245fee) [expired] +Expired order: 6cb08a1c0547ab0d0d37b74633c1c8a2fd2372d9fd72eb3abdea298f2b245fee +Checking for conservation of assets. +XCP has been conserved (1498.99847262 XCP both issued and held) +BBBB has been conserved (10.0 BBBB both issued and held) +BBBC has been conserved (100000 BBBC both issued and held) +All assets have been conserved. diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.sql b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.sql new file mode 100644 index 0000000000..b7ae2ef6c6 --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.sql @@ -0,0 +1,1593 @@ +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table blocks +DROP TABLE IF EXISTS blocks; +CREATE TABLE blocks( + block_index INTEGER UNIQUE, + block_hash TEXT UNIQUE, + block_time INTEGER, + previous_block_hash TEXT UNIQUE, + difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, + PRIMARY KEY (block_index, block_hash)); +INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); +INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'98ccdf7cd2fb29a8a01cbed5f133b70b6966c6c56354dad00baacedd0673c87e','faf6476a908c85f6e26ca5d182688d6da3f326296602d5ad3aa5979cb8bc110b','919f441f69e933ecb62c75fd1ec451a86323dd40c1c35246d8f240b6fe7bee9b'); +INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'fd43dc5efe2ee796ef7d24f8d478a67aa58bf85f538ef4b9a49b983a315deb26','544f7958bf7661b78699c708ba1097da0dbb044acee3d1d8aa9a32d6b659a14d','8df5bda6c4df74d7bff47aeb8fcb7f4d19aff4844b24eaa1026c32cb31a8719f'); +INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'dbae4fff32545b4f3c104fb5a051dcaeacecd27401c84c09f93923b8bc30eab5','ee37e75a4eba165ed448b7cf96d188d7f738aca4d90a781c7f473974e12564d5','00691c66e046c59b46fee5c278e4769096106626b7dd06dd3ce701b52f53c3f1'); +INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'fd0ae9793d9513540246b94ad116fc0531e8e07b2c014752e175a12e2a7a82d4','107902b17490957ebc0d2cb5dba1f5e667e3a393acfd8b3adde9f6b17aaad5c4','430087fa61dc1197cd2b732837106a1a08a4db0927abfe7fdf5b44177e15a105'); +INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'bd894777a85b731155a0d6362766b4220c03db4f3e5fbf030d6c2529cb5f3537','65e6a7c64c8439a60fb066d96d5165e6e40974bd1b98812ac6a4172fb1db1511','67361c3c5e126f8f836b108f3e9226ff90deb09ced2e45d8407fb5d6fd7cbf24'); +INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'264c98f1d460f78e52def545d25482fd76549a5309d04841bc27b335f06470a2','9ede5548f7cb273af825360a6285fe9a51e9625c9084b2dde7bec013dec24f0e','9de48cc878cfa33208bbc0852b12543f92e6c4c99466ae42a1ccf11cb7cf574a'); +INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'a1f2aa5a0b8d030c2fc4e1243c3173319ecf68d232262ea3dc8bfdd03a3f923a','afa257be6b0f57581b8f1b932b3c8473ff5c89e4bd6c3d3e3dd6a8c3cd9b09d3','190adf6f30fb1ece99625f641f6c4ad351795ca40768a42fe9f312b2ade90aea'); +INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'8709aa2d5064ea2b7ab51a887d21f5fddcb7046753cd883317b533ed121f8504','40941bb90c086bd2716de8afc1fba5eb75721143a86a606ef99ee3312de95614','9ae6a1c8530169a4ba79d07bab2454bfd29e3da9de7dc8783adedf6dd2f67e73'); +INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'c1c516176fe38b69b31e3668b5ef20805bd90d3112c77f5652f838af8e7f604a','9b186632fe722ba57daaa01573568c3d3405f7fcb0a729005a6338266a4debfa','1d54ac12ae33632153a30ba5d57cf1d60476515b16064bda5391a51e95c352db'); +INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'ae8ee9e681f0ac96de96babc1c80e5188b3e0cb91074a0dfd8511ee7d0ae64c8','39f4f154cbeae9a65b43ac831b2d5ad0e6f6575b909b979bd4bd97dadbab4cdd','01aaf29202273700ba4fb6f34e1f2a3d43894649a9ab00b878f5956bffbefe61'); +INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'0451ffa5d7ffb0e588e58ac7eacf77f6b3e17f1d27c1039f03d7716b16fb234f','0cea2e2e06c6423d1c5ba19f6128fbe8fe6d6c3688316c9c35dd31cf03d38c97','24200ac91cc9f08fe3393e584d844ce2ccb170153909e1c63e2f89fb4536d07c'); +INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'dfaae3f28c2f75e4bcc49034ff2a191b5a41b88035c5d266181617c8c65ad5d3','0134329cfdaf63e5946b9b5a94b73f59b9a870d4569ca07c0cce078bf13714a5','1681790512b33be1a8514d42128ec10ac95ba9de979a1928dbd5df52f274f984'); +INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'c711e8cf2d9bbed01724a7b22cbd4900a4fd0a126bb7ecbd7c97ca15a6276553','9a3fb4fb846c9ffff3a50a0a31f3ac3900ba7048a60dd69c6e14752734358f1c','b515ae83fced3cbdde5af5eb55ca412f3d49a7863a0aa3f5a05a13de83882ff1'); +INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'3dfa5822de8a4c674f1517b17e50d2ef63ccbb1fc4ae96fe5e1dc05cd353aa4b','6228a449b24d607b8fe1aea60a0292874cfe515a9440bee2829f6e61efa0b2a6','2ef35aee4502f231aa322cf4254eb572cafdb99bbf6da66e030b6624ca62680b'); +INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'49fcaed957776bc62c9f1feac30dad8c0574596d312f9efee7a453e00bf64866','700cf4c54e23c0cfb4d8b02bc6cb1ca509637dd95312629625aa92d32d5548d2','5204490317daf20a2b386017e518273edd896238286ed2929dc382797f46db45'); +INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'4e4abd3e8ab2658a7ac673e3a178ceac76fee41cf48bb6ed007d241c079979bf','288c9c0f37cb0c2e9db66d4b88b165391a67f06016ac84c485e9b9158ee51f2d','3a53a6cf7d7618c5080d0cf6183540622708cffa50d84ce35e9d28a399d0dc62'); +INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'17a28cca0777254af26544edfefcad8810e847e5d173fded9a7813719cf1162f','1bf7e0a4aa8356584087591a8c8e8b28185a6ebfe1a15a85f01165a04ff57913','77e3c4127a15675b1ce11815cfac0a1148e65887ae145485b74cc2eedbb4b34b'); +INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'1fb58120e9eb78908fda6265cad12b4a5770701e9a271bd5c4bc94059bd3bab5','62678a570c40b5a12469e442b3a54f1416d9113de2db501f37ed533f345e71c1','92c43200f1f9902b07db385ba9623e0a4b3e23a1b90cba6ed553c6d1e2c27d6c'); +INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'304243c1b11644e04d325d7100e4c757c07b874f0349e60163a5a544e84e951f','a174e4813aa967f5466148f27f4f8511ed9404295bf613e112c08b72eb3229ad','050dec70340556d4999d84019c519a445a40fbd5b810d16c63672d7783f27e78'); +INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'fc9905ee4863b3cf29a3e558ee690a24ed978a4fd79c464bdde30a34cfff19fe','c551c2094651cd0e06e0cd9d513fec771b69f4bb89c3034f201c89f703cf8a23','5e081b13390bdc3dd25501d05fb0a01d88bb0e5eecc00e475f364249b18d0e89'); +INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'e433feac4a09ad727bd3764b10a568acf5c659745a695e9d7e8790514f6bc98e','087d41720991e4b6bb72c6141334a65c9a289454dd8fd57edc33a09db467d086','aa5978d65ab1eb0912be7f0287805bc130e2f85f0615430b232e5d3dc0a92656'); +INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'622f92da40eae0b1b57218b32ad18daf7d79c9e0202fed4a288d75b8fdcd19d2','caa77e83354d56437795411f9625dff332c0dd39d059a0ad7381fe1f37e38999','f30f329f6dad82abd0b1708367f7662717b08a90677637c13ff16676b8f7194f'); +INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'b7aa8d9ebc37d52d8dcce2cc17431d6edf5a183b73ac85bb3d91276592215cfd','df23960a57099b0b64572553e56794b1eff3004e684ee2b31187b585aeb03587','d74bf3c1a32eee72ac000629edebcbbbe46143fdce028f60a4a9d5997c5a86e9'); +INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'501c058860063ca599f3b946d465b3bbd84fd483a2a80527e456e3de32b48a19','c680a6d4f839ba4f9420a99f0512e51fc1db0b661ed027332f440c6089eb615a','77ac369a57114ffe956ae5ebe7f4c350a9dfab3b01580119a399d01c5ffd4f87'); +INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'222986ec44fae1a6196d64dec24b79872970823f17bf0459d3b247bdef316675','f40aab7ef7167a17e35279423d9c14d49a9ebc05691fa658b09add1373216959','38a45f91299a046f784857e4a8948bd19516518ef76d656c4643f41b10a3a98b'); +INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'bcd88006b9cb98445a74c656d424435e82eeaef95dd9c54e394b42808dc9cb8b','0e3736813d3c0e789cd9474449abcf83118b5559cbc2f4dfd4d3ee51b5847a57','bf0fa0cf17984f63464117d192a5a70773979d060ab65b3cb96b47e0815da769'); +INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'3de7bf2043ac2e68bc9eaf8d1c12195a4f2400bc78c8deed0d487af11edf401e','c3572580398fcd71e5a1fef6e10217a99dec1aa605d61830ebb64ea65b7907ae','e2f4f25e2812e4e43ead4dd1896a569fa53cfa791cd294e3fb022957727a2ef5'); +INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'6c2a67783cf36e8987dc1805f87532ee1b94f79fb00952d8ee4cf3daaf655f85','b8b9d102d56df94d4fcea6f8aeb92d3cb859d3281c9fac7407842b7f05313737','d9a491af2a61d2e4f730e977f68c14c1838d880da2b150a906e5b6d062be7706'); +INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'659c73390e2e7eccc07d690fb438181c604787208bc45f466e57721fa1e21a64','55eafa176bc145ec7b98497c8a156226c68bd3b921cbdd06a890b2bd660ca050','75c750d200eb3c2d806ecd64a8f44fe1a458f703118d11731515d753ffbfb002'); +INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'87449e7ff7316e49012934d83c1f5b733cedf39680299a9582eb216e260e0c02','c2fc809ff3ef6b74b10b1439fe15c275c6fd925e92dea73cf9d603948aba0d8f','682fab5c0b3b846fb6db09df4c15b8aa6df55ce06a194e4b7521733b52233b02'); +INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'6c4a7f749d0308edf5c88b3ea4de3b1d497ba3bc06435594d77686318b744b0f','45db1d0cde22349299df8245e7ed24d308e1b1cb227098178606650f20832aaa','948abb3f0b32784f2f2b1497104189ace6e254248af3cab037add22ecacea1ba'); +INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'ecc04b1b2c7803ca17dc2a32adebd0960de2c04c8dbfec9cd88771dd883c885a','981653075dd609f44e0a5673dac2b63824b84e26080ec226547892c67dd7cc33','76e943c478c934ce5c86a83c8a18f7607d989fac1268c792d83b8d51371059d9'); +INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'01e769c5b990db44a9e534bc6c759567eb4283e0ea252578dd525923c7fde02c','81778134948c3577216eeeb6db7fe9687545d855dc3b5f6bdf6053a7edf3eaf3','03b369f209771dfebfd535e6d25a5a03e5bda91f4e51b8ca933bd4361982f0d9'); +INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'2df6b8dca0ffa8d6d55997605188637c2b86300e4dd7ebe3f1f275690169fd46','650b0875a0fb44a0ad1b04edf1a0eb1b50b5ecc423c6ecdd37b5aa60b5e85663','894ab501feb8cadbad64bcf540d2f4ef86422a6ff5b7367b1d5df390430449d7'); +INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'7f0dc7c1527a7d11831d272f0295eacabcb96fa3599f5a716bd29ba1bb6b7577','e9d6c050b077d8e6902999bf64a0f1bf420c881b8a32c511ae81b0359e83a542','f1c85681657070df644ea3ab4ba8d2781b705c1158813a5769041d9ef50ec383'); +INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'5e0cdf1764ed94672c29144f9c1bd9c3e70784f17c9dd1c9e4ce703a99bb3599','e755b5d80c9995dfa5763b080b9bdd349fd7b5bd940a661836ad418202b77384','fdb75e3ca428a8aadc94e3def73d29e4b8a39e1c76f863d15f42b25383e4e5b6'); +INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'96da34a5a66b89aa3e8857b4a4edca51a56a0cbbfe600d8153077875624a153e','cbc0139fb09af6a6c63e07847a37f15767a1f7b01d6305cf40179de841c4f093','192cc98b0ae01357f049816deed1293ca1652c26a597c1fd09fe9ea029f2e3ad'); +INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'d481358c19b4220aa9a3d135fd0651fada6df8d0f27b9ec954ac07950e876c0c','0493eb6bbab5ced7f25c6f5a3b32e4e2da321a5c761855ef64b5e050ddcfe431','6f1afe9c27c086c56ef18c421bdea7a7cb4fdf2a8308b686fea1d2f104b03246'); +INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'4e9fcc454ee53b3617c792eb6577c2eefa6eee6aa4a2925538cb1976d48817c9','64b95af50bbee190166820a564e858e5c86769c04b22a68c2bed5adee0f7292f','bf6075727bb7e704cd0026b9785b8bccb2d293e600a769ee93c0422eca5f3a81'); +INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'795c5652d9679942a02060edfb497b072009695d9a72fb144fa3591dba65a2ce','9927f1558918a59509f668789e75198eb432fd63e0a7ffb46160d002c0932188','cc6f7f5a1b931df568bc1cdf0246bab17cea7e1e28b53306000a085d913d362f'); +INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'e569e6e8083818e594e92b3356833e8dd54fcfcf5ed25af0d09e36e24b9dd441','969f7176f1a56d43e0d1b4da9cbac17cb1a934be64c12b3784ef33b584513271','0ceead405f23ef8fcb02908c64cac3188cee3ce0a5098a64fe813a9708024138'); +INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'2247fcc633175a91921d226f412e56822379c79ca799117c39ecaaca0a702192','29cb8f1b29affa41416aca0265599863f6b739538f13bc6672f6b3c17e411045','1b7bbecbdd2fb523b7457482e5f5f4f41eb987dcc3c8060f81bdc2ee429f7281'); +INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'0246c3a2a70b33a038ccdb816f6b0922a50d08310f360cbd5db4df58e97fc4dd','d1ca4c9abe26de83d9a0170461c87f2c219926f8dcb0c48793d74a0cbf01a43a','e4aba557c91975a5212b6f2c25db8612e621b774b4b6b835ec306b1e510aff8d'); +INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'cbe39e9d1a132cdc568f893bbc3d4f55d27bacf7af31f027ebea1b4bed9f0009','452b2e3ff4075f702cddcb4b8fd9006c756dda7a3527d635f637a200fd621c91','7b1d92454410813a0d44dac40a4e81964fa3406bf88a7275c7e6875c2278185b'); +INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'1202b05e118f0940ce270d9002d010076115a0197d889fee2d971a77709899bc','527114d86a06f44f12e1f789f095227f9710b47e95251cdbd6f4c03309eae61d','08c6de804ba4e3e0538b9d7c2dcb37930026015f8c2cacfc4f73602f8b87e956'); +INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'0bc49f765419c0b5b4911cccf03b0d9959aabacda266480b98245de0c0d35fc5','ed6954fc7aadd8f80684cc67580b9cc16f9a402296ac91c021de0148a1ccb4a8','45d6b6bae14e6367d53db1163a256c0093417d7b85c770ff80bb92bdaf7edb23'); +INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'e42bf9806d0ff3a0663756f7955b30735747d14fcb0915c89884baa12795163d','2e62ee5d03044d0b6086419a6d2fed78b7db3bee75a2bc158bbc04a8f5c34908','bb14e37002341e677c26926eb86073c47b58331ddcb52198a0d802bceda78def'); +INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'b19b5e14741284b4ca06b736120e903363651460a6efb3ede1aca3a4f3c00df1','bd40f4de40c172e5b5997091f4a069ea54d25504421e6225ef3d9ee360fbca6c','a8a83a06bb5cdd6bdbccd4e63cd1b2180cc494569eabf6523450446361f82b93'); +INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'e870de901ba86d65d0e2053251ffb32cc7dffb55fcc2efbc006a2b9137314a39','d89730ea689c2912f38a2d2dc86caf6dc35a3e183c4d394129f21368f5c1d371','9344c994d0e903096c55d8555030996d0d42f12ae662beef57147375caa442e8'); +INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'44cf354cdc8552ed37e5911340397d3531d0ba45100feae27377130d4ddef359','1100866c04ae89913abf573ee61b3a7b56ec8fb7526c7d9c9938d61a187586ab','01d714bde776989f364d5f517bc75c2a5ec1800519a2cb0cd65ea55cdc06cc70'); +INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'7d72f11f48ac99553e1b2c52a7ff5645fbe05728a10a002727b9270dbb32daed','1d95ff7cb416f1915ba7db0099ba9591b97c6bc673cb43296cc82655627eb1ad','ccb8f7a91059b8e962f5e187bfdf041ff85cc7e1a2c99f2af4f9e3a83380f0f2'); +INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'35a965dc90686fc4eb20450da81ca8db9125e25c2cdd7146fd61d98841d80c24','9d15589506565edb31f7627a37c1f6a6bca01d584b0dc815e8603689f07a80db','376283e6289f347e851d2823ee19146a3cfc5336e109864f46ac33a8931e5f35'); +INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'8604d503e7194ee1c8ebe1143019207b2aad163655107a3d23d018ef26cef550','40053c62babd7f69b9822b6d4223732008d45250146216762da4e13b1b9d3a3b','beb46fc0fad448380d4eda2d3b7b87ca735befe36f75383d781cf9de250741f2'); +INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'ecdb64ffc44490eeb12199d2da5c1189c07f4102f5b91494cbe4ec68fe6bb6d4','7d74527f370a78a8dca189b60657f9fd15c27ba5f875344546bb8d6e5b54c8c5','78f95fc5a0dcf1ad4e49eb0410e109615f5a0a6efaf81fd75b9668e699e1bb03'); +INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'b96b0d51d6327284f5922b65e5d023afd2b2e44c9e11f435afbe2a71df4e6eb2','70b8a2eccd5c79e1c270abfdf683dc4423ff315a62486db9e5972a12daaf60ea','3aa80bfa93adce53eb9b9312fb3c7303da5a59acdb4d8bdad9cbc4c3cb933c9b'); +INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'c5be3fc23a9c41b7b78cc7df4ed13d1d35fdd7edab77c998cef5a5a5fe2a7d33','0072c2fbc0915dcc39103950d4a48feba19eac28bde001d3dfe0f9ddc25e5152','45da26cfb1f0beb6b785307480cead0399f7933e5534404e5dee7181b5a7dcdb'); +INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'faa7cf6128f229fe3d408797c77ef2972eb28d16542b32ec87c5fd42d2495018','46c53b0ab86b04c06e8302726aeed5922fb5b3d940102422c53bdf4bafe285e4','e89912b04e00ed1c14f4b7bbc04467dbb107dbef4dc0e93f81845cc097343798'); +INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'135af680c59a3d707ff3e6b67fbbb0aaaf0a97724d36ba584087658ae8c0db19','8b3fe70c1d1b8fa1a247810dfbc2667ca0307860c112002e47107fe4836b8138','bbedd7dc64080bb261e7526caa7aca6c171c3bea6ba843a1a4a8156952d6ec3d'); +INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'496b559ef740feabe42d55356bc770bab7b927d79260c22848b7f47d51918f11','ddbb4db386fab0fbbb7edee7c7c45676f994d6feb088f50b0f3edaddcc809e47','f4fd3477a580f8243b5acb19bf2ead4c570b279b5206b3429c9d3780682caf05'); +INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'608eb77e572aa596c9e14c6e4cb1dc1993bcbcfe735cf0453124c2801192ecc9','b8d3a5abf9edc13434594de8ec0cdf3b760f6917798eab89ff2a6a4f0bda06d9','039cb78a7a4185f3b4fa9f9e0c5dc4efbabf43a37cf6aba24ed590bb2b15a1d9'); +INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'bc5c375d1237425486c9f46bd749fba20b5635bcaf3e2d9178b35ddfbb700f14','1766568459fde2e95dbe4a1c1b73a37b6f8443dc1ec36cb44a38fadd95d8f807','76efac75efd6ffc5946581cdc5d65843fc2dacafbee45047f9443e73065e65f1'); +INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'c6d48d72746c0e18fa0f1b0b16f663869be2c4684a9d98b634e691ea495f4d81','9f6619aae8ab667b4291ec14e89386177dec7f3465def984144d2991d10476ab','4061412d50ccee6c13e6a7dfd82d3ba59e70d0be5b102c206af7e56069b77bd7'); +INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'8deffdb1602f1aa2d0d1956d2297ba30ac78901ea27eb223ad8bf7ca83b18110','278612a215aec2522b38d2ddd268f051906a858996b526fa53c48743b1f33c2e','3f6cbdc67d83d9571fab44354dbabe8f7860107aa6350569a5b3fa93cb2381df'); +INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'34859861f240c6553ffbf63fff9bc884f231276ec6173964d5fc6641a6d79b16','a884effb413598885693dd0eed419a3a2a35db95fe4d6582e580bc141f28377c','9772acc46815e6103d8b1291852d6969c73dc8ed7e6bac856decbd66d597d7cc'); +INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'fa185f9b97a1666ce3b966dc09b8a7870ba55896a54a54f54d3420708d5a8ae0','070c320cd53cca3d81560367d437e1f4cb2afb10ab6339e2f1cfb0a2dd6d6063','6cf22c964be813ed434a00182ed2fb2a0f4eda90e5a8a9916ec51ae949455681'); +INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'9f75da9f944d59b1841d690b2994ead7fb0ee3d679ddbdb0b692e49238f66603','fb310206b118e11d48becbd11a695199fd7cc3553dd8b2a7c29c6a927f5bafb7','6a788bfae873a0aad3210740413cf8bf16923b7a745eeed3f884652b8f0522ca'); +INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'4740587d203632d1b4061343436e25e12941f0f80be03c3ab390a1c08b842b59','041e6429d7ad46da6e1a2547daf274a0df952ac4f9b43eaadfeafa6e005141d6','9ca1884bc5f2763bdd01d43051918a7a904a3cf08ec3e892c9c276bd412a4d48'); +INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'d6eecb0ca22f29b50e52cd5dec8f408250a7b1ddc61bfa9bf6cc6ef0a85a6ffc','f8e9baf27b01e99db390d6ee2e06b8ac7d92951c331d8240fdf0dd711ad75979','b364526a44e9e33fb49324beaa4a2c396b7bd463b8c56b84f6aef5a2222f707f'); +INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'1508605d4796eb2d8b0553b307827f570b5020f4cacf773926b6c8f2c1b003c8','fe7a135af64a7668cee07a66fa146b6a7a54fc78b96eb7c62d0bbd8b8ec4a820','7afbc1092b46e840add4fac5c93a123692114b6394c39309775a376c13e067ff'); +INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'ea7afbe0817cfef5a5a940bf88b057d01d092182dd5d0c7fd156b6750fdf4cb2','561526733017c46e8f7476f6f7f0a1c317a372adf6ccbe2a34e4d8b0fee1a694','5112b21aaf9ef2a7f3e3b6483852fb0cf2ddb7e047b35d180fb64dc53b9fe253'); +INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'f805d8bd0b724ffeb9e466367e8524bcbcf2c0fe0525b8ff2707af2013824a2c','4c10a876e31ee15289cd2d82d8771bd9aaffd0e335c6de15f8d5316e6e7ee81a','b0e103768ef4e72de2b4c75610a59d42992d25ae525f600071848b15331cf973'); +INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'305123423486d17e97e8370399b9079a35977465e4cf8c5b33d50bd7004b463b','660d6afeecb2375668200669bac5cf258dbd18b0f61213eb01d29e133a45917c','8901a4488256e4e9723eeb01da4b4898706f3bd7f2d59f00b9a8b3a39f09fc70'); +INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'b04fcd2cf46165fa31626b476aa06f9ad8c8cd1d5aa1cfdc014e0d55fa7e0761','0791350dc66254e276bfea1651fdda43705668f461f5451fd91fb7e084b26aa2','0243d84429b4bfaa84713d4a8efd2db8019a31c2490111bfc38aa8e9050d1cce'); +INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'209f05567343042c8a9172138cc14e28a2e53f9addf16c7affa469fbea9728ae','4885e82f77b273e102f9019b8451e08910a7d98daf19366a0a2b9db779352c0f','157e618638a06609c121713192008f7882f0579f23e2d44d4bac31d2a855b7ba'); +INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'fc18c0dcd6011c4147575f09bdc6e1eb0e6ae7d3144339859054df458651618a','49cbefb674e3da718d86151b10bb37755e158a2bdca642a542897361f15fde66','91eaf9e816751fc4fb0a3ba1bbd7872e2ef0a83f34464322080748beb3839d77'); +INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'f304dbebd02e4536b1754502e6f51e058ed309fdf95a2db8329dd7e5635824ad','b5e7c72a91d779334162c8fcb6282c7e5baeb43ef83d8f8c0eeb4dd0579f0916','5ec00429f2e58217d1f2c39a6ea921a51ff1ebb00e99457426c4cf8e1c68b718'); +INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'f39c071315c869425bdbcf05ff84130a0860f5f47b4f851cea970f58a6edc9f8','e399bd32bd2988f29b4fb003686b343bd72ae59297412480a359bd56ded23ca5','1fa2ab999d78bf1a4f0f0bdececcc5e79b34b9ea4d8d09e44a9d87b4db9f5ff7'); +INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'20624d783cd8e82044df58c05e6171a744505df43623d9c2a828c1331f505ca8','c587d5426925227ed7d0ef11834b5bb1291fcf0ea3f0bcac864e4356187b6a10','82e72fa6ec4b0d374dcb2dccf2d1813b095977b40671869591f1284fdb9e8758'); +INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'41ae6610121587bd8171a02da3c50645e8e6d3642aef2c560d46f12707506b66','c8331e225af242d83e283889e6234d601ecb507373f4b7de891b8508d1b7b1b6','0b32633934667a31ccc64524fc3b85584e7d504730e80f18ad03cdc80c060107'); +INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'bbc2068f2a4b47c86198a5cb7242e26f385077126c7a3294eca6607485b1170b','42ee671f6b45a8e36b4e57dc7edaa2501b075eb75bcfce535435ee4c0cdf2e66','4a67e661d030970c9cd5caa8685e1bdcae913910ad05f90bc7621233a62592af'); +INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'fc4350d187ec74fa6dfbbca7f6c51849b78356f853c6c713d10ae4a39ee4f7e2','f35b5543ac99e33a4ea6fb61b688d06a2b5b9cc79776df32c24e848b5dad80c0','e72f33c1f851707e4b5bb56cf58b189c57eeeb7e8fe8826d86025109c9142004'); +INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'3cadb90f0285d3e3bb107caa2165e88d855cfa057fcff1fccfb278a8f64c9b1c','3ff813ab5112e5adf9f50936955db90036ed0e2ba309022002c69e81473d7c04','070ee64ae7700e93e14066691d2cab30532cb6821c45484b517fad0fa5cdc4e1'); +INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'f3390bff59484b5ce0d84f5034fc88f4d862334ef3c0d7addaa9be7f0e67006f','3d843f898e46d0ec4c4cf79709ec7326a0e45d44361a2c9fe45e546bd5f1e630','f24e624fdd1efe1c5b2b1ecd8c01cfbfb18c87d97086a75b713c9bb3d59d2448'); +INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'0354bf318eaec5c79b4a7835c76c89f373ab0e413f9fe4ebdea442f57763a971','6405368df02c1207da46178c106ac287c7c90e5b87a98154aa938f6ef5a570d1','5e7a0552dbbcc753793702e7d541824af40d6b4b46a1e30333828a01f9c50930'); +INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'e22b7a64e15ded24f6c54a5f627354dd2c3ed8175c2f4cd31aa5a6789d7b67e4','6f58e857b2891d43f22bb4b44d296ff18f3078de01cf90aeed104283d66342a2','f7764fd9da178f30a074cd3892fab153214ed6d1a72d85f2f5397e119be0a802'); +INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'7b8a6f62709cf4d20820031f43d968ea46d73d8cee4ad40f414da60b9be4e676','51c8a62f3e4c43e6eea75410efb977c8ddd2ad8e64c0d6ce6f63a4e5eb153400','c42f213870d7f5bbd60668f4fe1383b78f55e71098414793aee311787073693a'); +INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'ae82ee2f7f1e075937b5b8eef065f8643a7bef0428e00689ee773558905eef19','7358e41e9a61f87d68cc6851768346daea2e100ab896e86c0047e47228e6cc29','4eb6044ce4f5bca227c83d2644d4a43582ec6e02003d80a7c139947f96748c47'); +INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'ced371f1349e81cc2f179f064e4b9b202650a0f79e9b4513666ace29f0e8b3cb','0e8cd750f8ad91d5b14d2b05b7c03621367036703bed1654555b94592ff41e11','75d939f989d1f8707112cc9b3ec17fb9d0be34a84de2759fde2d3e1b157e74ae'); +INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'6c343897092c5dfcd32ee96dc8b96f38fedd31fa58cf5757a3e15a254942cd59','c38a183db86650f155005a8828155aaf2fc6d92aa89066d7f0843a123800d771','e8ebed92446e1c52764c354b7ef8b1e9c08f9a3433820beba0728bfb26fe7bd3'); +INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'abc7afdaefa89bf58bc4c28401740657eca24c902ba551f55becb6a1c8992675','609b4f777892b43541593da80d09aa2c3928f2f73600009615196a7f89ca8123','523fb8375ea55f4993ce0577862ce8efc84a4edde7e992b45998b5dbc7b6abd0'); +INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'4c8ca9b4eeae7adfec822b20665e7bd6fecb51d4f30cc2c826f18402d8401a9b','fba4f7514306c49b3045912791cc21a26527a23e58dcb1c8adc5563e5c6e901d','185a766b7e7bf1d2fb9bd2a12959ffacda0f7414c62b90b907b0252a580938db'); +INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'fe7fd2b60c3216d79dfe4e6d38880f6d3b9fde747b619f2c477108825235663d','3a62ce0eeff09c242b3a7c3a8da6dd20bf06c1c2fbf224f73646791557ce3d4c','9329472df677887f76e67ea705e247d3e2e4c4247229ef722d5bc2b2264020c5'); +INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'420b8ff3c159f7e89df2274682e7ef798a0c0233149365114bfd934c38806098','9c866b1985d2ff084264e192e5defce4af96b7aca461a46f58c659008113909a','9d1ab01a262f9c2d8dee454542d211ca5a9f3a8ee7ae8f0bfd1d56081bea7af8'); +INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'f4fac6a570b4f6332a628a3f8e27f5f081689fb4255363cff1cd8bd0244eecea','271c5484d7a74166a1b83e9dc6f56cc391d5b01829c9b594deb087e58a22b762','b63106bf9a554c81ed1a7288426767711ac506a83ef466aa6f72272b8aeb399d'); +INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'adea7b4cacc06ba1f7dc260f30039943936f5baeecf5a8a452d4cbcaa994a70d','7d8deca0e4f444c015cdf98c74255215af14198d17619640186c6486bb3a6be6','24ef279e70dfa7ca0239c95043db556bbc76407b8b3fd9c198b834b87ef6a86a'); +INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'a2290c6a24befab16b4d9ed768c3129d582edbafdf8a2326c7ed50397e5db674','8bab183d2c7670f060de1a64663fe4ec602cc9df957a4d1ccd4b2c5e4876e5ab','0bbd6e6b5c43872d2484bd5cf8c79c2d3f23e24c449f9520ad5a32aa261b46d0'); +INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'b3c321ea2fb119cbaacfb39f219be47cb346cdd40d895980afd34b4157a3b7ec','6997f2cf50cb2331a8d5cea3f97b32b41a9c40b6006041939b21008016e013c8','8d134cecc0634dff254850fe675370899f29e6d583f1a1fef51c22012870c9a5'); +INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'456a1bd4d6b30f24e798a9c1f975af109db030b0bca19db6b29788f938ce6c4d','bd930dddbfc97b06fba95a33417533bd58fd5e95326d8677d2939790850a67de','86f6598ef5e4c98e03542d944ee6f442d6cbdbb1074be22fff0651849fa220eb'); +INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'f48d6574488a24155420ae76aa7dcecfe73f6a262a2434a96eb2e93f6bbf02b6','bf2e65b5a1da6ac499a4ebcde81b607f6516de77ed2a10ff363ddb05dd8e288d','8f5ec5805541d5ccccfc8758f896ba4bbc9f93dfd9e4be65062c6c98251e48e3'); +INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'e936debeb5d219215ba24e56ed34edb435131877c2947c0801824155fdc70c05','d18b9514ed9fda087d3c98eca75ea68388964396143b925cc58ce2e2d5c1c5da','de84273bda35e81c73365c0ce4c4b488e1e76b5b9577a27a6aa83bc921233d9f'); +INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'2b033a615b9eb693ed59daca9bc047f61a3519bec5c2b64f968cf717c75afe79','1c39371c274124af6085dcf02fcdfda68d36d261bb47d7763ea3f09b70d0f62b','9d19473983dda668c6fca481e3c330e3f848679a326180321940b198d71d9a96'); +INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'6a41dd11d8b611f6fde79e06a4f65d20fc15419f8336646130c02e9f7d87eff4','e2c84c519b3d759f8efb016894a981411328df6f0a778835c95ed4116fef01f5','9a419b6fc998381b270707c62198b3ad4f00edf1f7fc84d3014c81c463a7687f'); +-- Triggers and indices on blocks +CREATE INDEX blocks_block_index_block_hash_idx ON blocks (block_index, block_hash) + ; +CREATE INDEX blocks_block_index_idx ON blocks (block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transactions +DROP TABLE IF EXISTS transactions; +CREATE TABLE transactions( + tx_index INTEGER UNIQUE, + tx_hash TEXT UNIQUE, + block_index INTEGER, + block_hash TEXT, + block_time INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + fee INTEGER, + data BLOB, + supported BOOL DEFAULT 1, + FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), + PRIMARY KEY (tx_index, tx_hash, block_index)); +INSERT INTO transactions VALUES(1,'9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); +INSERT INTO transactions VALUES(2,'58e839ec2b1584d3474014093393ce57e5c22d6e686213ee4a7a0abe7bbac33c',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'0000000000000000000000010000000002FAF080',1); +INSERT INTO transactions VALUES(3,'332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,1000000,X'0000000A00000000000000000000000002FAF08000000000000000010000000005F5E100000A0000000000000000',1); +INSERT INTO transactions VALUES(4,'f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000000A00000000000000010000000006422C4000000000000000000000000002FAF080000A00000000000DBBA0',1); +INSERT INTO transactions VALUES(5,'ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',50000000,9675,X'0000000B332B030DA57B9565324DF01414778B1EAFBEE6C52343FEA80774EE1725484367F093B6C00E1BBE85106DB6874B1AB4E3F4378D0BF0BCFFBD8B51835285DFBF3F',1); +INSERT INTO transactions VALUES(6,'cd2b44cb56dd5aaae1181c42ab8953ebb9d0fb8e177e960ffe55e3500b3aae25',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'000000140000000000004767000000003B9ACA000100000000000000000000',1); +INSERT INTO transactions VALUES(7,'ddefdf227fd8cd8df1e77f0b531e98a033d2e5b237fa4331b83c003de54877d9',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'00000014000000000000476800000000000186A00000000000000000000006666F6F626172',1); +INSERT INTO transactions VALUES(8,'f337451a19eac3c2fe66daf7d44d39c41a012d2dfd85de90cc3877bbc2e7d30c',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000000000000000000476700000000003D0900',1); +INSERT INTO transactions VALUES(9,'c639e9482b31b487115b4437dd87cff98338003fabf18066bf051e1164aa4394',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'000000000000000000004768000000000000020E',1); +INSERT INTO transactions VALUES(10,'7881c1fe7881a590d09302dde67cfd888a74154888e0c310bd01575f560b8ac8',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'00000032000000000000025800000000000047670000000000000001',1); +INSERT INTO transactions VALUES(11,'c41898ad625e2236110101070c09e9f28b6fea1ed436ecb78f231f3f99f123f7',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'00000032000000000000032000000000000047680000000000000001',1); +INSERT INTO transactions VALUES(12,'a21533ad03334823cca2aa8e57c383113a7f93a5810c5df8dd2fa70f6eec416d',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB3300405900000000000005F5E0FF09556E69742054657374',1); +INSERT INTO transactions VALUES(13,'74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000028000052BB33640000000002FAF08000000000017D7840000000000000000000003B100000000A',1); +INSERT INTO transactions VALUES(14,'6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000028000152BB336400000000017D78400000000002793D60000000000000000000003B100000000A',1); +INSERT INTO transactions VALUES(15,'2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000028000052BB33640000000008F0D1800000000014DC93800000000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(16,'65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000028000152BB33640000000014DC93800000000008F0D1800000000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(17,'94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000028000252BB33C8000000002CB417800000000026BE36803FF0000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(18,'a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000028000352BB33C80000000026BE3680000000002CB417803FF0000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(19,'f020ae6c0b1aadbba4893581678ef87f9d2a925be5e6b08d02440e213f6183b4',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB33324058F7256FFC115E004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(20,'dccbd8852c8d489d32f87be0c86a631b63ec50202b0109a2be6aa96f27f89600',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB3365405915F3B645A1CB004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(21,'457f36dccce6664a8e28b00ebf47aa60ba4a41b46642aceef0e2a297429eb64e',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB33C94000000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(22,'6cb08a1c0547ab0d0d37b74633c1c8a2fd2372d9fd72eb3abdea298f2b245fee',310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000000A00000000000047670000000002FAF08000000000000000010000000002FAF080000A0000000000000000',1); +INSERT INTO transactions VALUES(23,'c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda',310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','mvCounterpartyXXXXXXXXXXXXXXW24Hef',100000000,14675,X'',1); +INSERT INTO transactions VALUES(24,'c576ecde0f86c86725b540c9f5e6ae57a378fe9694260f7859eca55613d9d341',310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'0000000000000000000047680000000000002710',1); +-- Triggers and indices on transactions +CREATE INDEX transactions_block_index_idx ON transactions (block_index) + ; +CREATE INDEX transactions_block_index_tx_index_idx ON transactions (block_index, tx_index) + ; +CREATE INDEX transactions_tx_hash_idx ON transactions (tx_hash) + ; +CREATE INDEX transactions_tx_index_idx ON transactions (tx_index) + ; +CREATE INDEX transactions_tx_index_tx_hash_block_index_idx ON transactions (tx_index, tx_hash, block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transaction_outputs +DROP TABLE IF EXISTS transaction_outputs; +CREATE TABLE transaction_outputs( + tx_index, + tx_hash TEXT, + block_index INTEGER, + out_index INTEGER, + destination TEXT, + btc_amount INTEGER, + PRIMARY KEY (tx_hash, out_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,310001,2); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92845000000,310003,4); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92945000000,310004,5); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92895000000,310005,6); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',1000000000,310005,6); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92845000000,310006,7); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',100000,310006,7); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',996000000,310007,8); +INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,310007,8); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',99474,310008,9); +INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,310008,9); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844999976,310009,10); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844979976,310009,10); +INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000024,310009,10); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844559176,310010,11); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844539176,310010,11); +INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50420824,310010,11); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92794539176,310012,13); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92769539176,310013,14); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92773789176,310013,14); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92778789176,310014,0); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92628789176,310014,15); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91528789176,310016,17); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90937926676,310018,19); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90941039176,310018,19); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91100339176,310019,20); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91416039176,310019,20); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91441039176,310019,20); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92771039176,310020,21); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92841039176,310020,21); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',946000000,310021,22); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',149840926438,310022,23); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',149849426438,310023,0); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',89474,310023,24); +INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10526,310023,24); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',996000000,310032,0); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,310001,2); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92845000000,310003,4); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92945000000,310004,5); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92895000000,310005,6); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',1000000000,310005,6); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92845000000,310006,7); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',100000,310006,7); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',996000000,310007,8); +INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,310007,8); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',99474,310008,9); +INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,310008,9); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844999976,310009,10); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844979976,310009,10); +INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000024,310009,10); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844559176,310010,11); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844539176,310010,11); +INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50420824,310010,11); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92794539176,310012,13); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92769539176,310013,14); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92773789176,310013,14); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92778789176,310014,0); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92628789176,310014,15); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91528789176,310016,17); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90937926676,310018,19); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90941039176,310018,19); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91100339176,310019,20); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91416039176,310019,20); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91441039176,310019,20); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92771039176,310020,21); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92841039176,310020,21); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',946000000,310021,22); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',149840926438,310022,23); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',149849426438,310023,0); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',89474,310023,24); +INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10526,310023,24); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',996000000,310032,0); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table credits +DROP TABLE IF EXISTS credits; +CREATE TABLE credits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + calling_function TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO credits VALUES(310000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',93000000000,'burn','9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30',1); +INSERT INTO credits VALUES(310001,'1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'send','58e839ec2b1584d3474014093393ce57e5c22d6e686213ee4a7a0abe7bbac33c',2); +INSERT INTO credits VALUES(310004,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',100000000,'btcpay','ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8',5); +INSERT INTO credits VALUES(310005,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',1000000000,'issuance','cd2b44cb56dd5aaae1181c42ab8953ebb9d0fb8e177e960ffe55e3500b3aae25',6); +INSERT INTO credits VALUES(310006,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',100000,'issuance','ddefdf227fd8cd8df1e77f0b531e98a033d2e5b237fa4331b83c003de54877d9',7); +INSERT INTO credits VALUES(310007,'1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,'send','f337451a19eac3c2fe66daf7d44d39c41a012d2dfd85de90cc3877bbc2e7d30c',8); +INSERT INTO credits VALUES(310008,'1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,'send','c639e9482b31b487115b4437dd87cff98338003fabf18066bf051e1164aa4394',9); +INSERT INTO credits VALUES(310009,'1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',24,'dividend','7881c1fe7881a590d09302dde67cfd888a74154888e0c310bd01575f560b8ac8',10); +INSERT INTO credits VALUES(310010,'1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',420800,'dividend','c41898ad625e2236110101070c09e9f28b6fea1ed436ecb78f231f3f99f123f7',11); +INSERT INTO credits VALUES(310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',4250000,'filled','6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167',14); +INSERT INTO credits VALUES(310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',5000000,'cancel order','f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f',0); +INSERT INTO credits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e',16); +INSERT INTO credits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e',16); +INSERT INTO credits VALUES(310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e',18); +INSERT INTO credits VALUES(310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e',18); +INSERT INTO credits VALUES(310018,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',59137500,'bet settled: liquidated for bear','f020ae6c0b1aadbba4893581678ef87f9d2a925be5e6b08d02440e213f6183b4',19); +INSERT INTO credits VALUES(310018,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',3112500,'feed fee','f020ae6c0b1aadbba4893581678ef87f9d2a925be5e6b08d02440e213f6183b4',19); +INSERT INTO credits VALUES(310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',159300000,'bet settled','dccbd8852c8d489d32f87be0c86a631b63ec50202b0109a2be6aa96f27f89600',20); +INSERT INTO credits VALUES(310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',315700000,'bet settled','dccbd8852c8d489d32f87be0c86a631b63ec50202b0109a2be6aa96f27f89600',20); +INSERT INTO credits VALUES(310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',25000000,'feed fee','dccbd8852c8d489d32f87be0c86a631b63ec50202b0109a2be6aa96f27f89600',20); +INSERT INTO credits VALUES(310020,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',1330000000,'bet settled: for notequal','457f36dccce6664a8e28b00ebf47aa60ba4a41b46642aceef0e2a297429eb64e',21); +INSERT INTO credits VALUES(310020,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',70000000,'feed fee','457f36dccce6664a8e28b00ebf47aa60ba4a41b46642aceef0e2a297429eb64e',21); +INSERT INTO credits VALUES(310022,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',56999887262,'burn','c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda',23); +INSERT INTO credits VALUES(310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',8500000,'recredit wager remaining','74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f',0); +INSERT INTO credits VALUES(310023,'1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10000,'send','c576ecde0f86c86725b540c9f5e6ae57a378fe9694260f7859eca55613d9d341',24); +INSERT INTO credits VALUES(310032,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,'cancel order','6cb08a1c0547ab0d0d37b74633c1c8a2fd2372d9fd72eb3abdea298f2b245fee',0); +-- Triggers and indices on credits +CREATE TRIGGER block_update_credits + BEFORE UPDATE ON credits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX credits_address_idx ON credits (address) + ; +CREATE INDEX credits_asset_idx ON credits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table debits +DROP TABLE IF EXISTS debits; +CREATE TABLE debits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + action TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO debits VALUES(310001,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'send','58e839ec2b1584d3474014093393ce57e5c22d6e686213ee4a7a0abe7bbac33c',2); +INSERT INTO debits VALUES(310003,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',105000000,'open order','f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f',4); +INSERT INTO debits VALUES(310005,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'issuance fee','cd2b44cb56dd5aaae1181c42ab8953ebb9d0fb8e177e960ffe55e3500b3aae25',6); +INSERT INTO debits VALUES(310006,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'issuance fee','ddefdf227fd8cd8df1e77f0b531e98a033d2e5b237fa4331b83c003de54877d9',7); +INSERT INTO debits VALUES(310007,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,'send','f337451a19eac3c2fe66daf7d44d39c41a012d2dfd85de90cc3877bbc2e7d30c',8); +INSERT INTO debits VALUES(310008,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,'send','c639e9482b31b487115b4437dd87cff98338003fabf18066bf051e1164aa4394',9); +INSERT INTO debits VALUES(310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',24,'dividend','7881c1fe7881a590d09302dde67cfd888a74154888e0c310bd01575f560b8ac8',10); +INSERT INTO debits VALUES(310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',20000,'dividend fee','7881c1fe7881a590d09302dde67cfd888a74154888e0c310bd01575f560b8ac8',10); +INSERT INTO debits VALUES(310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',420800,'dividend','c41898ad625e2236110101070c09e9f28b6fea1ed436ecb78f231f3f99f123f7',11); +INSERT INTO debits VALUES(310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',20000,'dividend fee','c41898ad625e2236110101070c09e9f28b6fea1ed436ecb78f231f3f99f123f7',11); +INSERT INTO debits VALUES(310012,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'bet','74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f',13); +INSERT INTO debits VALUES(310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',25000000,'bet','6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167',14); +INSERT INTO debits VALUES(310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',150000000,'bet','2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3',15); +INSERT INTO debits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',350000000,'bet','65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e',16); +INSERT INTO debits VALUES(310016,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',750000000,'bet','94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4',17); +INSERT INTO debits VALUES(310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',650000000,'bet','a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e',18); +INSERT INTO debits VALUES(310021,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,'open order','6cb08a1c0547ab0d0d37b74633c1c8a2fd2372d9fd72eb3abdea298f2b245fee',22); +INSERT INTO debits VALUES(310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10000,'send','c576ecde0f86c86725b540c9f5e6ae57a378fe9694260f7859eca55613d9d341',24); +-- Triggers and indices on debits +CREATE TRIGGER block_update_debits + BEFORE UPDATE ON debits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX debits_address_idx ON debits (address) + ; +CREATE INDEX debits_asset_idx ON debits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table messages +DROP TABLE IF EXISTS messages; +CREATE TABLE messages( + message_index INTEGER PRIMARY KEY, + block_index INTEGER, + command TEXT, + category TEXT, + bindings TEXT, + timestamp INTEGER); +INSERT INTO messages VALUES(0,310000,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(1,310001,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(2,310002,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(3,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(4,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(5,310003,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(6,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(7,310003,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(8,310003,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(9,310004,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(10,310004,'update','order_matches','[''order_match_id'', ''status'']',0); +INSERT INTO messages VALUES(11,310004,'insert','btcpays','[''block_index'', ''btc_amount'', ''destination'', ''order_match_id'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(12,310005,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(13,310006,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(14,310007,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(15,310008,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(16,310009,'insert','dividends','[''asset'', ''block_index'', ''dividend_asset'', ''fee_paid'', ''quantity_per_unit'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(17,310010,'insert','dividends','[''asset'', ''block_index'', ''dividend_asset'', ''fee_paid'', ''quantity_per_unit'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(18,310011,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(19,310012,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(20,310013,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(21,310013,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(22,310013,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +INSERT INTO messages VALUES(23,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(24,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(25,310013,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(26,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(27,310013,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(28,310012,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(29,310014,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(30,310014,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(31,310014,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +INSERT INTO messages VALUES(32,310014,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(33,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(34,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(35,310015,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(36,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(37,310015,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(38,310014,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(39,310016,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(40,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(41,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(42,310017,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(43,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(44,310017,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(45,310016,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(46,310018,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(47,310018,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(48,310018,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(49,310018,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(50,310019,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(51,310019,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(52,310019,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(53,310019,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(54,310020,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(55,310020,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(56,310020,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(57,310020,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(58,310021,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(59,310022,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(60,310023,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(61,310023,'update','bets','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(62,310023,'insert','bet_expirations','[''bet_hash'', ''bet_index'', ''block_index'', ''source'']',0); +INSERT INTO messages VALUES(63,310023,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(64,310032,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(65,310032,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(66,310032,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +-- Triggers and indices on messages +CREATE TRIGGER block_update_messages + BEFORE UPDATE ON messages BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX messages_block_index_idx ON messages (block_index) + ; +CREATE INDEX messages_block_index_message_index_idx ON messages (block_index, message_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_match_expirations +DROP TABLE IF EXISTS order_match_expirations; +CREATE TABLE order_match_expirations( + order_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on order_match_expirations +CREATE TRIGGER block_update_order_match_expirations + BEFORE UPDATE ON order_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_match_expirations_block_index_idx ON order_match_expirations (block_index) + ; +CREATE INDEX order_match_expirations_tx0_address_idx ON order_match_expirations (tx0_address) + ; +CREATE INDEX order_match_expirations_tx1_address_idx ON order_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_matches +DROP TABLE IF EXISTS order_matches; +CREATE TABLE order_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + forward_asset TEXT, + forward_quantity INTEGER, + backward_asset TEXT, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_paid INTEGER, + status TEXT); +INSERT INTO order_matches VALUES('332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367_f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f',3,'332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',4,'f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,'XCP',100000000,310002,310003,310003,10,10,310023,857142,'pending'); +INSERT INTO order_matches VALUES('332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367_f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f',3,'332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',4,'f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,'XCP',100000000,310002,310003,310004,10,10,310023,857142,'completed'); +-- Triggers and indices on order_matches +CREATE TRIGGER block_update_order_matches + BEFORE UPDATE ON order_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_matches_backward_asset_idx ON order_matches (backward_asset) + ; +CREATE INDEX order_matches_block_index_idx ON order_matches (block_index) + ; +CREATE INDEX order_matches_forward_asset_idx ON order_matches (forward_asset) + ; +CREATE INDEX order_matches_id_idx ON order_matches (id) + ; +CREATE INDEX order_matches_match_expire_index_idx ON order_matches (match_expire_index) + ; +CREATE INDEX order_matches_status_idx ON order_matches (status) + ; +CREATE INDEX order_matches_tx0_address_forward_asset_idx ON order_matches (tx0_address, forward_asset) + ; +CREATE INDEX order_matches_tx0_hash_idx ON order_matches (tx0_hash) + ; +CREATE INDEX order_matches_tx1_address_backward_asset_idx ON order_matches (tx1_address, backward_asset) + ; +CREATE INDEX order_matches_tx1_hash_idx ON order_matches (tx1_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_expirations +DROP TABLE IF EXISTS order_expirations; +CREATE TABLE order_expirations( + order_hash TEXT PRIMARY KEY, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO order_expirations VALUES('332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310013); +INSERT INTO order_expirations VALUES('f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310014); +INSERT INTO order_expirations VALUES('6cb08a1c0547ab0d0d37b74633c1c8a2fd2372d9fd72eb3abdea298f2b245fee','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310032); +-- Triggers and indices on order_expirations +CREATE TRIGGER block_update_order_expirations + BEFORE UPDATE ON order_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_expirations_block_index_idx ON order_expirations (block_index) + ; +CREATE INDEX order_expirations_source_idx ON order_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table orders +DROP TABLE IF EXISTS orders; +CREATE TABLE orders( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + give_asset TEXT, + give_quantity INTEGER, + give_remaining INTEGER, + get_asset TEXT, + get_quantity INTEGER, + get_remaining INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_required INTEGER, + fee_required_remaining INTEGER, + fee_provided INTEGER, + fee_provided_remaining INTEGER, + status TEXT); +INSERT INTO orders VALUES(3,'332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367',310002,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,50000000,'XCP',100000000,100000000,10,310012,0,0,1000000,1000000,'open'); +INSERT INTO orders VALUES(4,'f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f',310003,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',105000000,105000000,'BTC',50000000,50000000,10,310013,900000,900000,6800,6800,'open'); +INSERT INTO orders VALUES(3,'332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367',310003,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'open'); +INSERT INTO orders VALUES(4,'f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f',310003,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'open'); +INSERT INTO orders VALUES(3,'332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367',310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'expired'); +INSERT INTO orders VALUES(4,'f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f',310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'expired'); +INSERT INTO orders VALUES(22,'6cb08a1c0547ab0d0d37b74633c1c8a2fd2372d9fd72eb3abdea298f2b245fee',310021,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'open'); +INSERT INTO orders VALUES(22,'6cb08a1c0547ab0d0d37b74633c1c8a2fd2372d9fd72eb3abdea298f2b245fee',310032,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'expired'); +-- Triggers and indices on orders +CREATE TRIGGER block_update_orders + BEFORE UPDATE ON orders BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX orders_block_index_idx ON orders (block_index) + ; +CREATE INDEX orders_expire_index_idx ON orders (expire_index) + ; +CREATE INDEX orders_get_asset_give_asset_idx ON orders (get_asset, give_asset) + ; +CREATE INDEX orders_give_asset_idx ON orders (give_asset) + ; +CREATE INDEX orders_source_give_asset_idx ON orders (source, give_asset) + ; +CREATE INDEX orders_status_idx ON orders (status) + ; +CREATE INDEX orders_tx_hash_idx ON orders (tx_hash) + ; +CREATE INDEX orders_tx_index_tx_hash_idx ON orders (tx_index, tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_expirations +DROP TABLE IF EXISTS bet_match_expirations; +CREATE TABLE bet_match_expirations( + bet_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on bet_match_expirations +CREATE INDEX bet_match_expirations_block_index_idx ON bet_match_expirations (block_index) + ; +CREATE INDEX bet_match_expirations_tx0_address_idx ON bet_match_expirations (tx0_address) + ; +CREATE INDEX bet_match_expirations_tx1_address_idx ON bet_match_expirations (tx1_address) + ; +CREATE TRIGGER block_update_bet_match_expirations + BEFORE UPDATE ON bet_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_matches +DROP TABLE IF EXISTS bet_matches; +CREATE TABLE bet_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_bet_type INTEGER, + tx1_bet_type INTEGER, + feed_address TEXT, + initial_value INTEGER, + deadline INTEGER, + target_value REAL, + leverage INTEGER, + forward_quantity INTEGER, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bet_matches VALUES('74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f_6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167',13,'74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',14,'6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310012,10,10,310022,99999999,'pending'); +INSERT INTO bet_matches VALUES('2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3_65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e',15,'2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',16,'65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310014,10,10,310024,99999999,'pending'); +INSERT INTO bet_matches VALUES('94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4_a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e',17,'94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',18,'a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',2,3,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310016,10,10,310026,99999999,'pending'); +INSERT INTO bet_matches VALUES('74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f_6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167',13,'74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',14,'6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310018,10,10,310022,99999999,'settled: liquidated for bear'); +INSERT INTO bet_matches VALUES('2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3_65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e',15,'2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',16,'65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310019,10,10,310024,99999999,'settled'); +INSERT INTO bet_matches VALUES('94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4_a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e',17,'94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',18,'a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',2,3,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310020,10,10,310026,99999999,'settled: for notequal'); +-- Triggers and indices on bet_matches +CREATE INDEX bet_matches_block_index_idx ON bet_matches (block_index) + ; +CREATE INDEX bet_matches_deadline_idx ON bet_matches (deadline) + ; +CREATE INDEX bet_matches_id_idx ON bet_matches (id) + ; +CREATE INDEX bet_matches_status_idx ON bet_matches (status) + ; +CREATE INDEX bet_matches_tx0_address_idx ON bet_matches (tx0_address) + ; +CREATE INDEX bet_matches_tx1_address_idx ON bet_matches (tx1_address) + ; +CREATE TRIGGER block_update_bet_matches + BEFORE UPDATE ON bet_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_resolutions +DROP TABLE IF EXISTS bet_match_resolutions; +CREATE TABLE bet_match_resolutions( + bet_match_id TEXT PRIMARY KEY, + bet_match_type_id INTEGER, + block_index INTEGER, + winner TEXT, + settled BOOL, + bull_credit INTEGER, + bear_credit INTEGER, + escrow_less_fee INTEGER, + fee INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_match_resolutions VALUES('74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f_6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167',1,310018,'0',0,59137500,NULL,NULL,3112500); +INSERT INTO bet_match_resolutions VALUES('2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3_65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e',1,310019,'1',159300000,315700000,NULL,NULL,25000000); +INSERT INTO bet_match_resolutions VALUES('94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4_a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e',5,310020,NULL,NULL,NULL,'NotEqual',1330000000,70000000); +-- Triggers and indices on bet_match_resolutions +CREATE TRIGGER block_update_bet_match_resolutions + BEFORE UPDATE ON bet_match_resolutions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_expirations +DROP TABLE IF EXISTS bet_expirations; +CREATE TABLE bet_expirations( + bet_index INTEGER PRIMARY KEY, + bet_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_expirations VALUES(13,'74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310023); +-- Triggers and indices on bet_expirations +CREATE INDEX bet_expirations_block_index_idx ON bet_expirations (block_index) + ; +CREATE INDEX bet_expirations_source_idx ON bet_expirations (source) + ; +CREATE TRIGGER block_update_bet_expirations + BEFORE UPDATE ON bet_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bets +DROP TABLE IF EXISTS bets; +CREATE TABLE bets( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + feed_address TEXT, + bet_type INTEGER, + deadline INTEGER, + wager_quantity INTEGER, + wager_remaining INTEGER, + counterwager_quantity INTEGER, + counterwager_remaining INTEGER, + target_value REAL, + leverage INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bets VALUES(13,'74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f',310012,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,50000000,50000000,25000000,25000000,0.0,15120,10,310022,99999999,'open'); +INSERT INTO bets VALUES(14,'6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167',310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1,1388000100,25000000,25000000,41500000,41500000,0.0,15120,10,310023,99999999,'open'); +INSERT INTO bets VALUES(13,'74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f',310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'open'); +INSERT INTO bets VALUES(14,'6a5f30666a5f24b6e0e6f31cf06b22ee74d3e692a550297450bdf1d36b1cc167',310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1,1388000100,25000000,4250000,41500000,0,0.0,15120,10,310023,99999999,'filled'); +INSERT INTO bets VALUES(15,'2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3',310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,150000000,150000000,350000000,350000000,0.0,5040,10,310024,99999999,'open'); +INSERT INTO bets VALUES(16,'65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e',310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1,1388000100,350000000,350000000,150000000,150000000,0.0,5040,10,310025,99999999,'open'); +INSERT INTO bets VALUES(15,'2066b9a6b8913412384a0401ef57bfc604e7c5a2c141e23111a8ccc6881b0fb3',310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,150000000,0,350000000,0,0.0,5040,10,310024,99999999,'filled'); +INSERT INTO bets VALUES(16,'65db3ab58b65891a947ab9bdba4723e907678bf3b48397add62802dcc65d1d8e',310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1,1388000100,350000000,0,150000000,0,0.0,5040,10,310025,99999999,'filled'); +INSERT INTO bets VALUES(17,'94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4',310016,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',2,1388000200,750000000,750000000,650000000,650000000,1.0,5040,10,310026,99999999,'open'); +INSERT INTO bets VALUES(18,'a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e',310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',3,1388000200,650000000,650000000,750000000,750000000,1.0,5040,10,310027,99999999,'open'); +INSERT INTO bets VALUES(17,'94b11df6b519372bfbcf0ec5f3e6465a63e323c7cd7cff83a8abd78596d4bce4',310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',2,1388000200,750000000,0,650000000,0,1.0,5040,10,310026,99999999,'filled'); +INSERT INTO bets VALUES(18,'a7daff1ca2874f6b18a8f1a1e70db27f58c6b39a9f106c353223fbccde57098e',310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',3,1388000200,650000000,0,750000000,0,1.0,5040,10,310027,99999999,'filled'); +INSERT INTO bets VALUES(13,'74062934f0a97c41851735fef2a7df4d9ad9945424f09a54281e145a5e32492f',310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'expired'); +-- Triggers and indices on bets +CREATE INDEX bets_block_index_idx ON bets (block_index) + ; +CREATE INDEX bets_expire_index_idx ON bets (expire_index) + ; +CREATE INDEX bets_feed_address_bet_type_idx ON bets (feed_address, bet_type) + ; +CREATE INDEX bets_feed_address_idx ON bets (feed_address) + ; +CREATE INDEX bets_status_idx ON bets (status) + ; +CREATE INDEX bets_tx_hash_idx ON bets (tx_hash) + ; +CREATE INDEX bets_tx_index_tx_hash_idx ON bets (tx_index, tx_hash) + ; +CREATE TRIGGER block_update_bets + BEFORE UPDATE ON bets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table broadcasts +DROP TABLE IF EXISTS broadcasts; +CREATE TABLE broadcasts( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + timestamp INTEGER, + value REAL, + fee_fraction_int INTEGER, + text TEXT, + locked BOOL, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO broadcasts VALUES(12,'a21533ad03334823cca2aa8e57c383113a7f93a5810c5df8dd2fa70f6eec416d',310011,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000000,100.0,99999999,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(19,'f020ae6c0b1aadbba4893581678ef87f9d2a925be5e6b08d02440e213f6183b4',310018,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000050,99.86166,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(20,'dccbd8852c8d489d32f87be0c86a631b63ec50202b0109a2be6aa96f27f89600',310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000101,100.343,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(21,'457f36dccce6664a8e28b00ebf47aa60ba4a41b46642aceef0e2a297429eb64e',310020,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000201,2.0,5000000,'Unit Test',0,'valid'); +-- Triggers and indices on broadcasts +CREATE TRIGGER block_update_broadcasts + BEFORE UPDATE ON broadcasts BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX broadcasts_block_index_idx ON broadcasts (block_index) + ; +CREATE INDEX broadcasts_status_source_idx ON broadcasts (status, source) + ; +CREATE INDEX broadcasts_status_source_tx_index_idx ON broadcasts (status, source, tx_index) + ; +CREATE INDEX broadcasts_timestamp_idx ON broadcasts (timestamp) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table btcpays +DROP TABLE IF EXISTS btcpays; +CREATE TABLE btcpays( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + order_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO btcpays VALUES(5,'ed17dc38233838e15d319a1786825b9e7cdba815554c9d6f4dd527615bce10b8',310004,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',50000000,'332b030da57b9565324df01414778b1eafbee6c52343fea80774ee1725484367_f093b6c00e1bbe85106db6874b1ab4e3f4378d0bf0bcffbd8b51835285dfbf3f','valid'); +-- Triggers and indices on btcpays +CREATE TRIGGER block_update_btcpays + BEFORE UPDATE ON btcpays BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX btcpays_block_index_idx ON btcpays (block_index) + ; +CREATE INDEX btcpays_destination_idx ON btcpays (destination) + ; +CREATE INDEX btcpays_source_idx ON btcpays (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table burns +DROP TABLE IF EXISTS burns; +CREATE TABLE burns( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + burned INTEGER, + earned INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO burns VALUES(1,'9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30',310000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',62000000,93000000000,'valid'); +INSERT INTO burns VALUES(23,'c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda',310022,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',38000000,56999887262,'valid'); +-- Triggers and indices on burns +CREATE TRIGGER block_update_burns + BEFORE UPDATE ON burns BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX burns_source_idx ON burns (source) + ; +CREATE INDEX burns_status_idx ON burns (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table cancels +DROP TABLE IF EXISTS cancels; +CREATE TABLE cancels( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + offer_hash TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on cancels +CREATE TRIGGER block_update_cancels + BEFORE UPDATE ON cancels BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX cancels_block_index_idx ON cancels (block_index) + ; +CREATE INDEX cancels_source_idx ON cancels (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dividends +DROP TABLE IF EXISTS dividends; +CREATE TABLE dividends( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset TEXT, + dividend_asset TEXT, + quantity_per_unit INTEGER, + fee_paid INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO dividends VALUES(10,'7881c1fe7881a590d09302dde67cfd888a74154888e0c310bd01575f560b8ac8',310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB','XCP',600,20000,'valid'); +INSERT INTO dividends VALUES(11,'c41898ad625e2236110101070c09e9f28b6fea1ed436ecb78f231f3f99f123f7',310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC','XCP',800,20000,'valid'); +-- Triggers and indices on dividends +CREATE TRIGGER block_update_dividends + BEFORE UPDATE ON dividends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dividends_asset_idx ON dividends (asset) + ; +CREATE INDEX dividends_block_index_idx ON dividends (block_index) + ; +CREATE INDEX dividends_source_idx ON dividends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table issuances +DROP TABLE IF EXISTS issuances; +CREATE TABLE "issuances"( + tx_index INTEGER, + tx_hash TEXT, + msg_index INTEGER DEFAULT 0, + block_index INTEGER, + asset TEXT, + quantity INTEGER, + divisible BOOL, + source TEXT, + issuer TEXT, + transfer BOOL, + callable BOOL, + call_date INTEGER, + call_price REAL, + description TEXT, + fee_paid INTEGER, + locked BOOL, + status TEXT, + asset_longname TEXT, + reset BOOL, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index)); +INSERT INTO issuances VALUES(6,'cd2b44cb56dd5aaae1181c42ab8953ebb9d0fb8e177e960ffe55e3500b3aae25',0,310005,'BBBB',1000000000,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,0,0,0.0,'',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(7,'ddefdf227fd8cd8df1e77f0b531e98a033d2e5b237fa4331b83c003de54877d9',0,310006,'BBBC',100000,0,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,0,0,0.0,'foobar',50000000,0,'valid',NULL,0); +-- Triggers and indices on issuances +CREATE TRIGGER block_update_issuances + BEFORE UPDATE ON issuances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX issuances_asset_longname_idx ON issuances (asset_longname) + ; +CREATE INDEX issuances_asset_status_idx ON issuances (asset, status) + ; +CREATE INDEX issuances_block_index_idx ON issuances (block_index) + ; +CREATE INDEX issuances_source_idx ON issuances (source) + ; +CREATE INDEX issuances_status_asset_tx_index_idx ON issuances (status, asset, tx_index DESC) + ; +CREATE INDEX issuances_status_idx ON issuances (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sends +DROP TABLE IF EXISTS sends; +CREATE TABLE "sends"( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + quantity INTEGER, + status TEXT, + msg_index INTEGER DEFAULT 0, memo BLOB, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); +INSERT INTO sends VALUES(2,'58e839ec2b1584d3474014093393ce57e5c22d6e686213ee4a7a0abe7bbac33c',310001,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'valid',0,NULL); +INSERT INTO sends VALUES(8,'f337451a19eac3c2fe66daf7d44d39c41a012d2dfd85de90cc3877bbc2e7d30c',310007,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,'valid',0,NULL); +INSERT INTO sends VALUES(9,'c639e9482b31b487115b4437dd87cff98338003fabf18066bf051e1164aa4394',310008,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,'valid',0,NULL); +INSERT INTO sends VALUES(24,'c576ecde0f86c86725b540c9f5e6ae57a378fe9694260f7859eca55613d9d341',310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10000,'valid',0,NULL); +-- Triggers and indices on sends +CREATE TRIGGER block_update_sends + BEFORE UPDATE ON sends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sends_asset_idx ON sends (asset) + ; +CREATE INDEX sends_block_index_idx ON sends (block_index) + ; +CREATE INDEX sends_destination_idx ON sends (destination) + ; +CREATE INDEX sends_memo_idx ON sends (memo) + ; +CREATE INDEX sends_source_idx ON sends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_match_expirations +DROP TABLE IF EXISTS rps_match_expirations; +CREATE TABLE rps_match_expirations( + rps_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_match_expirations +CREATE TRIGGER block_update_rps_match_expirations + BEFORE UPDATE ON rps_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_match_expirations_block_index_idx ON rps_match_expirations (block_index) + ; +CREATE INDEX rps_match_expirations_tx0_address_idx ON rps_match_expirations (tx0_address) + ; +CREATE INDEX rps_match_expirations_tx1_address_idx ON rps_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_expirations +DROP TABLE IF EXISTS rps_expirations; +CREATE TABLE rps_expirations( + rps_index INTEGER PRIMARY KEY, + rps_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_expirations +CREATE TRIGGER block_update_rps_expirations + BEFORE UPDATE ON rps_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expirations_block_index_idx ON rps_expirations (block_index) + ; +CREATE INDEX rps_expirations_source_idx ON rps_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rpsresolves +DROP TABLE IF EXISTS rpsresolves; +CREATE TABLE rpsresolves( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + move INTEGER, + random TEXT, + rps_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on rpsresolves +CREATE TRIGGER block_update_rpsresolves + BEFORE UPDATE ON rpsresolves BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rpsresolves_block_index_idx ON rpsresolves (block_index) + ; +CREATE INDEX rpsresolves_rps_match_id_idx ON rpsresolves (rps_match_id) + ; +CREATE INDEX rpsresolves_source_idx ON rpsresolves (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_matches +DROP TABLE IF EXISTS rps_matches; +CREATE TABLE rps_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_move_random_hash TEXT, + tx1_move_random_hash TEXT, + wager INTEGER, + possible_moves INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps_matches +CREATE TRIGGER block_update_rps_matches + BEFORE UPDATE ON rps_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_matches_id_idx ON rps_matches (id) + ; +CREATE INDEX rps_matches_match_expire_index_idx ON rps_matches (match_expire_index) + ; +CREATE INDEX rps_matches_status_idx ON rps_matches (status) + ; +CREATE INDEX rps_matches_tx0_address_idx ON rps_matches (tx0_address) + ; +CREATE INDEX rps_matches_tx1_address_idx ON rps_matches (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps +DROP TABLE IF EXISTS rps; +CREATE TABLE rps( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + possible_moves INTEGER, + wager INTEGER, + move_random_hash TEXT, + expiration INTEGER, + expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps +CREATE TRIGGER block_update_rps + BEFORE UPDATE ON rps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expire_index_idx ON rps (expire_index) + ; +CREATE INDEX rps_source_idx ON rps (source) + ; +CREATE INDEX rps_status_idx ON rps (status) + ; +CREATE INDEX rps_tx_hash_idx ON rps (tx_hash) + ; +CREATE INDEX rps_tx_index_idx ON rps (tx_index) + ; +CREATE INDEX rps_tx_index_tx_hash_idx ON rps (tx_index, tx_hash) + ; +CREATE INDEX rps_wager_possible_moves_idx ON rps (wager, possible_moves) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table destructions +DROP TABLE IF EXISTS destructions; +CREATE TABLE destructions( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset INTEGER, + quantity INTEGER, + tag TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on destructions +CREATE TRIGGER block_update_destructions + BEFORE UPDATE ON destructions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX destructions_source_idx ON destructions (source) + ; +CREATE INDEX destructions_status_idx ON destructions (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table assets +DROP TABLE IF EXISTS assets; +CREATE TABLE assets( + asset_id TEXT UNIQUE, + asset_name TEXT UNIQUE, + block_index INTEGER, + asset_longname TEXT); +INSERT INTO assets VALUES('0','BTC',NULL,NULL); +INSERT INTO assets VALUES('1','XCP',NULL,NULL); +INSERT INTO assets VALUES('18279','BBBB',310005,NULL); +INSERT INTO assets VALUES('18280','BBBC',310006,NULL); +-- Triggers and indices on assets +CREATE INDEX assets_asset_id_idx ON assets (asset_id) + ; +CREATE UNIQUE INDEX assets_asset_longname_idx ON assets (asset_longname) + ; +CREATE INDEX assets_asset_name_idx ON assets (asset_name) + ; +CREATE TRIGGER block_update_assets + BEFORE UPDATE ON assets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table addresses +DROP TABLE IF EXISTS addresses; +CREATE TABLE addresses( + address TEXT UNIQUE, + options INTEGER, + block_index INTEGER); +-- Triggers and indices on addresses +CREATE INDEX addresses_address_idx ON addresses (address) + ; +CREATE TRIGGER block_update_addresses + BEFORE UPDATE ON addresses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sweeps +DROP TABLE IF EXISTS sweeps; +CREATE TABLE sweeps( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + flags INTEGER, + status TEXT, + memo BLOB, + fee_paid INTEGER, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on sweeps +CREATE TRIGGER block_update_sweeps + BEFORE UPDATE ON sweeps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sweeps_block_index_idx ON sweeps (block_index) + ; +CREATE INDEX sweeps_destination_idx ON sweeps (destination) + ; +CREATE INDEX sweeps_memo_idx ON sweeps (memo) + ; +CREATE INDEX sweeps_source_idx ON sweeps (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispensers +DROP TABLE IF EXISTS dispensers; +CREATE TABLE dispensers( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + asset TEXT, + give_quantity INTEGER, + escrow_quantity INTEGER, + satoshirate INTEGER, + status INTEGER, + give_remaining INTEGER, + oracle_address TEXT, + last_status_tx_hash TEXT, + origin TEXT, + dispense_count INTEGER DEFAULT 0); +-- Triggers and indices on dispensers +CREATE TRIGGER block_update_dispensers + BEFORE UPDATE ON dispensers BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispensers_asset_idx ON dispensers (asset) + ; +CREATE INDEX dispensers_block_index_idx ON dispensers (block_index) + ; +CREATE INDEX dispensers_give_remaining_idx ON dispensers (give_remaining) + ; +CREATE INDEX dispensers_last_status_tx_hash_idx ON dispensers (last_status_tx_hash) + ; +CREATE INDEX dispensers_source_asset_origin_idx ON dispensers (source, asset, origin) + ; +CREATE INDEX dispensers_source_idx ON dispensers (source) + ; +CREATE INDEX dispensers_source_origin_idx ON dispensers (source, origin) + ; +CREATE INDEX dispensers_status_block_index_idx ON dispensers (status, block_index) + ; +CREATE INDEX dispensers_status_idx ON dispensers (status) + ; +CREATE INDEX dispensers_tx_hash_idx ON dispensers (tx_hash) + ; +CREATE INDEX dispensers_tx_index_idx ON dispensers (tx_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenses +DROP TABLE IF EXISTS dispenses; +CREATE TABLE dispenses ( + tx_index INTEGER, + dispense_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, dispense_index, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenses +CREATE TRIGGER block_update_dispenses + BEFORE UPDATE ON dispenses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenses_block_index_idx ON dispenses (block_index) + ; +CREATE INDEX dispenses_dispenser_tx_hash_idx ON dispenses (dispenser_tx_hash) + ; +CREATE INDEX dispenses_tx_hash_idx ON dispenses (tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenser_refills +DROP TABLE IF EXISTS dispenser_refills; +CREATE TABLE dispenser_refills( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, tx_hash, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) + REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenser_refills +CREATE TRIGGER block_update_dispenser_refills + BEFORE UPDATE ON dispenser_refills BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenser_refills_block_index_idx ON dispenser_refills (block_index) + ; +CREATE INDEX dispenser_refills_tx_hash_idx ON dispenser_refills (tx_hash) + ; + +COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.json b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.json similarity index 69% rename from counterpartylib/test/fixtures/scenarios/multisig_1_of_3.json rename to counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.json index 1891c13644..e7b5cbbff6 100644 --- a/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.json +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.json @@ -3,72 +3,72 @@ "burn": "0100000001a7f84ec59ff69951f5dc732c77199e177ab608b030f449899a81f13c921d01f4000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac87812f0e000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "send": "0100000001d2ef19f3c6071d04031d2f7154b1c2d920bbbef6dc8b924c988d32065aa7f863010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353ae781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb974529b7c2a7965ff221029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb5262f0e000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "send": "0100000001d2ef19f3c6071d04031d2f7154b1c2d920bbbef6dc8b924c988d32065aa7f863010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353aee80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb974529b7c2a7965ff221029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed55b2f0e000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "order": "0100000001656dfeef23a2359b0d82fc64b1e8c09b395ad52639637bd065437acadd588363020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb974529b7c2a7965f0821029ea8cc75076c9fb9c5417f502a30fc28198b34982dbb629ec04b4f8b05a07177210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefdc51f0e000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "order": "0100000001d4979c408ae9f4f9eab76b9d472861f4d050d40e22bdbae44038a7f515bd4958020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb974529b7c2a7965f0821029ea8cc75076c9fb9c5417f502a30fc28198b34982dbb629ec04b4f8b05a07177210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aead15200e000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "order": "010000000152b0756dcbecf7c2f2f3274124923fe21523e65534fac389e42143e10ba466cb010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452d0f1e67965fed21039ea8cc75076d9fb9c541785f3bb0fc28198b34982db6d93ec04b4f8b05a07158210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef58c1f0e000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "order": "0100000001a6630bf3b09257f01a43fb603137dd428b6d5dc6a800c55526bf85009f80d504010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452d0f1e67965fed21039ea8cc75076d9fb9c541785f3bb0fc28198b34982db6d93ec04b4f8b05a07158210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae35f71f0e000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "btcpay": "01000000015457d37a6eef91f7c080318fc150555ee2f281aa945c4e9b110d14dadd1faabe010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff0480f0fa02000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512103e34ccc12f76f0562d2061e675ca5f4c9ccfb3c821445286d717eab113274605421020c8c8d52f49f5d4e298a17d07b6242880656ee8c20aaf9d09cdfe50af7422fd4210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae781e00000000000069512103c94ccc12f76f0562d2534ea6d85f12ad308b90cd8a1fbcc3452b4d3227965fe621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeba39240b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "btcpay": "0100000001520ef85cea1406b48324a8d703ac114931d403ef4ee90188d17a77d1313def98010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff0480f0fa02000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512103e34ccc12f76f0562d2061e675c6a47ed581afa1cd6992e97eded105facd482ab2103a999ac8e44776fee57f189aea89664cd24bae5ef576aea9f2905a088d19138cd210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee80300000000000069512103c94ccc12f76f0562d217b26480c6b6ee731c6b49ac34e5c5452b4d3227965fca21029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1ad9240b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "issuance": "01000000015e7900c58a6bcd7e5a5531fa095474d9724b657797d3862059cc7edfa2932e7c030000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512102f94ccc12f76f0562d2061e67436e926dc71a7fe497cceb974510d7f827975ff821029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb200240b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "issuance": "01000000011356be7b3f0b25339792094490c76a9eb67d25886ac8fdd5c1938df55d88eb90030000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512102f94ccc12f76f0562d2061e67436e926dc71a7fe497cceb974510d7f827975ff821029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea2ba240b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "issuance": "0100000001f3a7741e3c719014bd9dbe5b4c225f9074d29d337613ea063225a3338730ec78010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103f34ccc12f76f0562d2061e67436e926dc71a7fe498cceb97452b4cb487965fa921039ea8cc75076d9fb9c32715caa9518e22198b34982dbb629ec04b4f8b05a07180210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeaac7230b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "issuance": "0100000001b78372487606c49b1fd5110c25606ca80b3c10789c62ab6a974385eeb4a0a21b010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103f34ccc12f76f0562d2061e67436e926dc71a7fe498cceb97452b4cb487965fa921039ea8cc75076d9fb9c32715caa9518e22198b34982dbb629ec04b4f8b05a07180210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae2a9c240b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "send": "010000000137bd384e59c2c596f185b59bc2be6c1abda0cfd6764e6411f762b3f2f015befe010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353ae781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe497cceb97452b703b27965f0721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed86c230b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "send": "01000000014658d50068315fa36a2bf639826cfe06453271d8ad3b2d0eee2da7f7c42d9e3f010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353aee80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe497cceb97452b703b27965f0721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae7876240b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "send": "01000000010fd3e9a8f445e008b43a8a9ecfc8ab3626bc6c674bce6e5c9bc15af7fc9f3e63020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353ae781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d3029965f8621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0612230b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "send": "010000000165bc934e4fda37f0bee3f6f18b6bc91bb38d26c3b9ed93595ea6d13b79b2bf30020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353aee80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d3029965f8621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aec650240b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "dividend": "0100000001b150f4f9a9beea99e8f41b3e8805db97915689a6668c129fc9814be5cda86671020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103fa4ccc12f76f0562d2061e67656e926dc71a7fa1a8cceb97452b4d7540965fde21029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefed8220b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "dividend": "010000000149e817115a1b893774abdf5034991454ee69da0dfc82850fb57c8868ef1ba27d020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103fa4ccc12f76f0562d2061e67656e926dc71a7fa1a8cceb97452b4d7540965fde21029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4e32240b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "dividend": "0100000001fe763f64cc9833cb831ee9040e7f10d7bd65270f00a6f7ae2ad895241cc1cf76010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512102fa4ccc12f76f0562d2061e67656e926dc71a7fa0d0cceb97452b4d754f965fb421029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef69f220b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "dividend": "01000000019f7773529408ff0c4342c34e1c7c3cee4b86b822521cd7f8fe61c2393c8ecbf3010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512102fa4ccc12f76f0562d2061e67656e926dc71a7fa0d0cceb97452b4d754f965fb421029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed613240b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "broadcast": "01000000018faf875d34f4ffadf85913f04dba640e24a42717b70b43d0c95f7b4786c05c55010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ec75a26a3f0cceb97452eb8d2d89f0a7b2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeee66220b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "broadcast": "0100000001599a05f90810a6a02522b96c81d7df331c8bd20be02f66612d753ac849167415010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ec75a26a3f0cceb97452eb8d2d89f0a7b2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae5ef5230b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "0100000001b93914c4099c8d3bb63c3541ca786c21eb517d5d534bb333f9d57672c2513e5b010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb95bfdbcd3227965f5421039fd5b435076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a07174210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1c0c220b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "01000000011a0f0a73b285df98e877740abaf5d23827f93e5588ce597b5fcb6f3420635b1a010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb95bfdbcd3227965f5421039fd5b435076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a07174210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeaccf230b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "0100000001b985090da8504455fc8b217adcc9be2f18f36bfb472b038fa18d7ac115db03d2020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb9638530d3227965f7721039cd1f115076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a071ee210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4ab1210b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "010000000187f82d859f59f83e3d7505c4c85673dfab835a2031bf83a76412b07210397510020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb9638530d3227965f7721039cd1f115076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a071ee210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefaa9230b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "01000000012cd5afa2b7c900726f7ad5143814ac004fbb3deaaa4ad2c22bbcc82c639fb0e7020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb9fb5facd3227965f6b21028a745ff5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0717a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae7856210b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "0100000001330ad3a26df3015be378d1b20e2bbe1839621e908ea07e504522995790f767a0020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb9fb5facd3227965f6b21028a745ff5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0717a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4884230b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "01000000019c9af1a12c6792bab69d27d3f209414a776e4b5a59ba4803603ad574b9da09e9020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb8399b8cd3227965fdf210396581df5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a07111210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea6fb200b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "01000000012b3efd4a486f7e2dea8337bb82bb1b31f3905ffe7c071a4124dff2dedf030e04020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb8399b8cd3227965fdf210396581df5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a07111210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae965e230b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "01000000015a5a21800dc208ec73b4f8086fe5519557fefddfc7702b0f6d753a7cd7c3dfd4020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e903f7c29b7a3f0ccebbbf13ccd3227965fca2102b816faf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a071fc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed4a0200b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "0100000001a2a09e369af40ce22324f308c3a1a17df80a7a2a925242bd730776c678e5ec62020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e903f7c29b7a3f0ccebbbf13ccd3227965fca2102b816faf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a071fc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee438230b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "01000000015e761afccfeaba0aba2c89133cd61cd6f09d32c20b7e7fd688247118f361b938020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0ccebb1fb1dcd3227965f282102b21cdbf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0712a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0246200b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "01000000011f2db4a837cb9cf2b3d85fdf5e379fd4e7d5c6105f7ddb3f17a9a3c926808d57020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0ccebb1fb1dcd3227965f282102b21cdbf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0712a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae3213230b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "broadcast": "0100000001c271b9e4b4192b3763e19a45f58d3d0f7e9610f8ecffc13fbf6bfd9bd4278487020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ef55a2754d5a317861b2b0179679f0aff2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefa0c200b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "broadcast": "010000000183b1bea86512642fe037009d37800680692ab1552733271e1f3868c4be0f9b47020000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ef55a2754d5a317861b2b0179679f0aff2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aebaf4220b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "broadcast": "01000000016c0064d74f235ae7e7a69d903cf0d15710b95544153affadef54361cdd32a45c010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ea25a26b6037aae368e2b0179679f0adc2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef2d31f0b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "broadcast": "010000000185640ae5bad3b50578b989f44de435e1451ea9dd2f4b5c1265579e334fd0a516010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ea25a26b6037aae368e2b0179679f0adc2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae42d6220b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "broadcast": "0100000001be049c704486f781b8bb0d6d73fbfc2d3874cbd811acbdd68b8c2a086ebabd6b010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295e0e5a7fa3f0cceb97452b0179679f0ac02103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeea9a1f0b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "broadcast": "010000000137ce90ef895c79be6b8a6507591fd98988c37f6a198600b0c7e2bfd7806ec965010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295e0e5a7fa3f0cceb97452b0179679f0ac02103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aecab7220b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "order": "010000000108306312df25b985c41d05957d0bd7c01b20f3e958075c97b39fd6e44e6747a8010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fe497cceb974529b7c2a7965f9621029ea8cc75076c9fb9c541785f3bb0fc28198b34982dbb629ec04b4f8b05a07191210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee2611f0b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "order": "01000000017e182da0bf6c7df709b5886cfb8acc019c05daa804b49fe5cd63082e4a2e2343010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fe497cceb974529b7c2a7965f9621029ea8cc75076c9fb9c541785f3bb0fc28198b34982dbb629ec04b4f8b05a07191210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae5299220b000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "burn": "01000000015e24625b2c5097dd27a9aba2481640c0f0a5e173355b7310a40f0229e4fe16c9010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff0200e1f505000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ace96a2905000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "burn": "0100000001eef2f6094a84137e994218268882f3f222db47c3cd59f97c73b7a8a755f179cd010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff0200e1f505000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac59a22c05000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "send": "0100000001aa9cc81bc4fcfe9719b1a4ef107444271a91853d37d580f9cda683aefb8897ec010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353ae781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d1537965fe121029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae17102905000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "send": "0100000001aa9cc81bc4fcfe9719b1a4ef107444271a91853d37d580f9cda683aefb8897ec010000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353aee80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d1537965fe121029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea77c2c05000000006951210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" } ] \ No newline at end of file diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.log b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.log new file mode 100644 index 0000000000..a178f92ef2 --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.log @@ -0,0 +1,231 @@ +Creating connection to `:memory:`. +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 3.00000000; txid: f4011d923cf1819a8949f430b008b67a179e19772c73dcf55199f69fc54ef8a7; vout: 0; confirmations: 7'] +Fee/KB 0.00025000 +New input: amount: 3.00000000; txid: f4011d923cf1819a8949f430b008b67a179e19772c73dcf55199f69fc54ef8a7; vout: 0; confirmations: 7 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 2.37994375 BTC +Burn: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 burned BTC for XCP (63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 2.37994375; txid: 63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.37994375; txid: 63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 2.37984725 BTC +Send: XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (5849bd15f5a73840e4babd220ed450d0f46128479d6bb7eaf9f4e98a409c97d4) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 2.37984725; txid: 5849bd15f5a73840e4babd220ed450d0f46128479d6bb7eaf9f4e98a409c97d4; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.37984725; txid: 5849bd15f5a73840e4babd220ed450d0f46128479d6bb7eaf9f4e98a409c97d4; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 1000000 +Size: 272 Fee: 0.01000000 Change quantity: 2.36983725 BTC +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6) [open] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 2.36983725; txid: 04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.36983725; txid: 04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 2.36975925 BTC +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52) [open] +Considering: 04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6 +Tx0 Price: 2.0; Tx1 Inverse Price: 2.1 +Potential forward quantities: 50000000, 52500000 +Forward Quantity: 50000000 +Backward Quantity: 100000000 +Tx0 fee provided remaining: 0.01; required fee: 0.00857142 +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6) [open] +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52) [open] +Order Match: BTC for XCP (04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6_98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52) [pending] +Order match has only -10 confirmation(s). +data_btc_out=2000 (data_value=1000 len(data_array)=2) +Sorted candidate UTXOs: ['amount: 2.36975925; txid: 98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.36975925; txid: 98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 387 final_fee 9675 +Size: 387 Fee: 0.00009675 Change quantity: 1.86964250 BTC +Order Match: BTC for XCP (04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6_98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52) [completed] +Database: set status of order_match 04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6_98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52 to completed. +BTC Payment: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid BTC to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 for order match 04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6_98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52 (90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86964250; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 3; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.86964250; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 3; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86956450 BTC +Issuance: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 created 10.0 of divisible asset BBBB (1ba2a0b4ee8543976aab629c78103c0ba86c60250c11d51f9bc40676487283b7) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86956450; txid: 1ba2a0b4ee8543976aab629c78103c0ba86c60250c11d51f9bc40676487283b7; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 2'] +Fee/KB 0.00025000 +New input: amount: 1.86956450; txid: 1ba2a0b4ee8543976aab629c78103c0ba86c60250c11d51f9bc40676487283b7; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86948650 BTC +Issuance: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 created 100000 of indivisible asset BBBC (3f9e2dc4f7a72dee0e2d3badd871324506fe6c8239f62b6aa35f316800d55846) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86948650; txid: 3f9e2dc4f7a72dee0e2d3badd871324506fe6c8239f62b6aa35f316800d55846; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 3'] +Fee/KB 0.00025000 +New input: amount: 1.86948650; txid: 3f9e2dc4f7a72dee0e2d3badd871324506fe6c8239f62b6aa35f316800d55846; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86939000 BTC +Send: BBBB from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (30bfb2793bd1a65e5993edb9c3268db31bc96b8bf1f6e3bef037da4f4e93bc65) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86939000; txid: 30bfb2793bd1a65e5993edb9c3268db31bc96b8bf1f6e3bef037da4f4e93bc65; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 4'] +Fee/KB 0.00025000 +New input: amount: 1.86939000; txid: 30bfb2793bd1a65e5993edb9c3268db31bc96b8bf1f6e3bef037da4f4e93bc65; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86929350 BTC +Send: BBBC from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (7da21bef68887cb50f8582fc0dda69ee5414993450dfab7437891b5a1117e849) [valid] +Total quantity to be distributed in dividends: 0.00000024 XCP +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86929350; txid: 7da21bef68887cb50f8582fc0dda69ee5414993450dfab7437891b5a1117e849; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 5'] +Fee/KB 0.00025000 +New input: amount: 1.86929350; txid: 7da21bef68887cb50f8582fc0dda69ee5414993450dfab7437891b5a1117e849; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86921550 BTC +Dividend: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid XCP per unit of BBBB (f3cb8e3c39c261fef8d71c5222b8864bee3c7c1c4ec342430cff08945273779f) [valid] +Total quantity to be distributed in dividends: 0.004208 XCP +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86921550; txid: f3cb8e3c39c261fef8d71c5222b8864bee3c7c1c4ec342430cff08945273779f; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 6'] +Fee/KB 0.00025000 +New input: amount: 1.86921550; txid: f3cb8e3c39c261fef8d71c5222b8864bee3c7c1c4ec342430cff08945273779f; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86913750 BTC +Dividend: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid XCP per unit of BBBC (15741649c83a752d61662fe00bd28b1c33dfd7816cb92225a0a61008f9059a59) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86913750; txid: 15741649c83a752d61662fe00bd28b1c33dfd7816cb92225a0a61008f9059a59; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 7'] +Fee/KB 0.00025000 +New input: amount: 1.86913750; txid: 15741649c83a752d61662fe00bd28b1c33dfd7816cb92225a0a61008f9059a59; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86905950 BTC +Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:33:20 with a fee of 99.999999%% (1a5b6320346fcb5f7b59ce88553ef92738d2f5ba0a7477e898df85b2730a0f1a) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86905950; txid: 1a5b6320346fcb5f7b59ce88553ef92738d2f5ba0a7477e898df85b2730a0f1a; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 8'] +Fee/KB 0.00025000 +New input: amount: 1.86905950; txid: 1a5b6320346fcb5f7b59ce88553ef92738d2f5ba0a7477e898df85b2730a0f1a; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86896300 BTC +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86896300; txid: 1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 9'] +Fee/KB 0.00025000 +New input: amount: 1.86896300; txid: 1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86886650 BTC +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6) [expired] +Expired order: 04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Considering: 1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887 +Tx0 Inverse Odds: 0.5; Tx1 Odds: 0.6024096385542169 +Potential forward quantities: 50000000, 41500000 +Forward Quantity: 41500000 +Backward Quantity: 20750000 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet Match: BullCFD for XCP against BearCFD for XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that value, leveraged 3.0x (1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887_a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86886650; txid: a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 10'] +Fee/KB 0.00025000 +New input: amount: 1.86886650; txid: a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86877000 BTC +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52) [expired] +Expired order: 98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86877000; txid: 040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 11'] +Fee/KB 0.00025000 +New input: amount: 1.86877000; txid: 040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86867350 BTC +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Considering: 1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887 +Skipping: leverages disagree. +Considering: 040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b +Tx0 Inverse Odds: 2.3333333333333335; Tx1 Odds: 2.3333333333333335 +Potential forward quantities: 150000000, 150000000 +Forward Quantity: 150000000 +Backward Quantity: 350000000 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet Match: BullCFD for XCP against BearCFD for XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that value, leveraged 1.0x (040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b_62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86867350; txid: 62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 12'] +Fee/KB 0.00025000 +New input: amount: 1.86867350; txid: 62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86857700 BTC +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86857700; txid: 578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 13'] +Fee/KB 0.00025000 +New input: amount: 1.86857700; txid: 578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86848050 BTC +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Considering: 578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f +Tx0 Inverse Odds: 0.8666666666666667; Tx1 Odds: 0.8666666666666667 +Potential forward quantities: 750000000, 750000000 +Forward Quantity: 750000000 +Backward Quantity: 650000000 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet Match: Equal for XCP against NotEqual for XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:40 that value, leveraged 1.0x (578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f_479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86848050; txid: 479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 14'] +Fee/KB 0.00025000 +New input: amount: 1.86848050; txid: 479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86840250 BTC +Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:34:10 with a fee of 5.0%% (16a5d04f339e5765125c4b2fdda91e45e135e44df489b97805b5d3bae50a6485) [valid] +Bet Match Force‐Liquidated: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887_a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33) +Bet Match: BullCFD for XCP against BearCFD for XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that value, leveraged 3.0x (1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887_a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33) [settled: liquidated for bear] +Database: set status of bet_match 1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887_a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33 to settled: liquidated for bear. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86840250; txid: 16a5d04f339e5765125c4b2fdda91e45e135e44df489b97805b5d3bae50a6485; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 15'] +Fee/KB 0.00025000 +New input: amount: 1.86840250; txid: 16a5d04f339e5765125c4b2fdda91e45e135e44df489b97805b5d3bae50a6485; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86832450 BTC +Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:01 with a fee of 5.0%% (65c96e80d7bfe2c7b00086196a7fc38889d91f5907658a6bbe795c89ef90ce37) [valid] +Bet Match Settled: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b_62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2) +Bet Match: BullCFD for XCP against BearCFD for XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that value, leveraged 1.0x (040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b_62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2) [settled] +Database: set status of bet_match 040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b_62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2 to settled. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86832450; txid: 65c96e80d7bfe2c7b00086196a7fc38889d91f5907658a6bbe795c89ef90ce37; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 16'] +Fee/KB 0.00025000 +New input: amount: 1.86832450; txid: 65c96e80d7bfe2c7b00086196a7fc38889d91f5907658a6bbe795c89ef90ce37; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86824650 BTC +Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:41 with a fee of 5.0%% (43232e4a2e0863cde59fb404a8da059c01cc8afb6c88b509f77d6cbfa02d187e) [valid] +Bet Match Settled: NotEqual won the pot of XCP; XCP credited to the feed address (578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f_479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183) +Bet Match: Equal for XCP against NotEqual for XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:40 that value, leveraged 1.0x (578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f_479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183) [settled: for notequal] +Database: set status of bet_match 578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f_479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183 to settled: for notequal. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86824650; txid: 43232e4a2e0863cde59fb404a8da059c01cc8afb6c88b509f77d6cbfa02d187e; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 17'] +Fee/KB 0.00025000 +New input: amount: 1.86824650; txid: 43232e4a2e0863cde59fb404a8da059c01cc8afb6c88b509f77d6cbfa02d187e; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86816850 BTC +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BBBB for XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (cd79f155a7a8b7737cf959cdc347db22f2f38288261842997e13844a09f6f2ee) [open] +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.86816850; txid: cd79f155a7a8b7737cf959cdc347db22f2f38288261842997e13844a09f6f2ee; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 18', 'amount: 0.00001000; txid: 1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887; vout: 0; confirmations: 10', 'amount: 0.00001000; txid: a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33; vout: 0; confirmations: 9', 'amount: 0.00001000; txid: 040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b; vout: 0; confirmations: 8', 'amount: 0.00001000; txid: 62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2; vout: 0; confirmations: 7', 'amount: 0.00001000; txid: 578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f; vout: 0; confirmations: 6', 'amount: 0.00001000; txid: 479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183; vout: 0; confirmations: 5'] +Fee/KB 0.00025000 +New input: amount: 1.86816850; txid: cd79f155a7a8b7737cf959cdc347db22f2f38288261842997e13844a09f6f2ee; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.86811225 BTC +Burn: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 burned BTC for XCP (ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86811225; txid: ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613; vout: 0; confirmations: 19'] +Fee/KB 0.00025000 +New input: amount: 0.86811225; txid: ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.86801575 BTC +Bet: XCP against XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Expired bet: 1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887 +Send: BBBC from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (53290702a54a5c19d9a5e2fc1942c2381a4d2283f30d645579b982ae0dbb7fcc) [valid] +Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BBBB for XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (cd79f155a7a8b7737cf959cdc347db22f2f38288261842997e13844a09f6f2ee) [expired] +Expired order: cd79f155a7a8b7737cf959cdc347db22f2f38288261842997e13844a09f6f2ee +Checking for conservation of assets. +XCP has been conserved (1498.99847262 XCP both issued and held) +BBBB has been conserved (10.0 BBBB both issued and held) +BBBC has been conserved (100000 BBBC both issued and held) +All assets have been conserved. diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.sql b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.sql new file mode 100644 index 0000000000..e8b288ef9b --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.sql @@ -0,0 +1,1593 @@ +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table blocks +DROP TABLE IF EXISTS blocks; +CREATE TABLE blocks( + block_index INTEGER UNIQUE, + block_hash TEXT UNIQUE, + block_time INTEGER, + previous_block_hash TEXT UNIQUE, + difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, + PRIMARY KEY (block_index, block_hash)); +INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); +INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'7e1322d444b3395f9d8ce6b1ca6d48e8f0d78e5d72da997fad9520899bdbebe3','702e537dd6e79386a246cbc44fbccf8ea2a4e575c9f1e072189fbbd831308672','086a6cdeb4546f06d2a23d6eb531b04d7aa3536432cb489b0154254b530a4a8a'); +INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'3e18d8a969bce2d869cb86b28c23823d88e6d8a840a3cda905a003b37222ebb8','bcd62109b750a9b5c3a07fb6e3ba7a5feb2cb56fb554da3b2b4b560a632e3e2e','9a83fe11019f8241b0eef7431312d625bc7c0bbd1e96661aa7d4db2267d46fcd'); +INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'71dfa527236bbaf632db18cf1773c63f7ee3a0076fc6562e46db0c955b346a9f','f7e5b51624875d95cb14e212ee733c94f12f69084eeefa4b77491479ea3ae990','5ca2da3d13efe9503164b6efa3dd4bd7d498e5c828e19ac707dcd5412513ea5f'); +INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'39feff81ad306adcfb9610e6bd8442e35dd6e1924e75a53708c1d2932bda67f6','a857bb0cb63c343a04d6efdf7d69f1de6f89a67dc25ca5b3e9cd9405ef48c416','e04724e9ba8ac03910c1238191b084ba8bba96279867efc8abc53640a52863f3'); +INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'1cee0851ee48eeaa3f71e7a18f9f52fffa28cd3b2e1cbf1f79c0f562618b88c6','32e68b308a1281ef170d188fe7d19a93486667d45d8a6b50a0c39f00d6924cde','6e10fedb9db2e7c0b588abb8a12fd1d114c089ca28c32dd56e6cb113fb651ded'); +INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'89f516c3fbdcd1540125561301db451fb55b1baead9ae8f408156075aed104ad','3a41f3c4d912ee4628975e61c4a04b836de31df5a9aa5fbd7031628d9c4f0eb6','aa917ea0b7108af6e8f4ae673209e103785ecb5ca2cb01d1005b3b918e321c7e'); +INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'e9a37cfc1055e8c18d369896a14422cad3c5ac8d9b4d5aff6053d8e31dd56336','4d2d6945b23826371a1cdb4cf2f841cf2b78c891a6b93da8167ed219388edd65','86149287e71a0a9c46f788dcba45cfe26dbc4a4b9b008d81483b4abc55a12dc3'); +INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'174c7c107c37e0ca2c907b1bc35e086eebbad8eb02493a2f166ff2279ecc013c','dd1e7522ff359cc0ed124a82d3b367ea105127d45ccf563848b531aaf75b8c2d','dac4007a1ee367dcf7a7f906db455eb1cf955b14ed7b86bf4670cbc822a7c230'); +INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'1463da3ebe264e703ecc0c708baa98f737b31f51726f85d3ac646f5e301b7c10','3e547d66bace022adbb42aba8172ed287077f306537c9ce69bb11f47ed1b34d1','22a4793fb82faa10008e715da034c8d10bed21f1f2e5a7167bb7b8ebf661c7f6'); +INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'dfe8c57b4ce4ea12f002d11cfc127f95b7cea7727bcbaf64418b2d584602a250','20b7caf43b34f595139545c800247b16da6e00b0b1162928670c80ffc2cc773f','9dc6b2125df45fbb8c75b3ce4917a82f46012087e3ad6f1177bddabcbbc486a5'); +INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'f9c936d3bb4c8bbc20e544d9262ffa3906fbaeca5e4b2e3b241f6059868f506e','47442be955776c7e31fba3f14df298b088192577691c17dced8b14b6037e3c50','db93846b6070d253cb9aeeceaec7b466a4ab742fc32dd6755ef1690336598608'); +INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'490bfec10bfd72eca7fcbae5887b94ce4739454a82e601dc754e4e9d1030f3c2','8a060a9cc82b497e020ad7af45a62c07110b724282ce0c7ca34ad24584638a3b','bd99ac63b032883dde596bdfd0db5e362ef7edd0eb86f3e4824f31c939fad58b'); +INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'621d39c103bff9a76ada332f41e3ad54c89676bb6057f624942ddf28b31b5927','4eb1fdd02e0f8ba27b9134ddb7b03b51caf3417e92687c7c1a7b50ce2d52e6ca','c886b45d249550270abfdde88dc96b6950260c53e9b54a76655ee6035ac62bf3'); +INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'7d31be770d6bb6669bcb0a8a5964e57a758788cbbb942d1d3da1abd25b5dd158','c71d132b3da755134d5305e814129761fdeab1ac933dc320f83570bd5d007002','83de84141b406cc062ce6467cb86110b87fadf728cddf952694b58bf939b4eae'); +INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'3aba9622f8de243bcd5e6a5c88fdf04a79a52d95bdc1778d57586b13f30e501c','d7949a992d062d2eb763b2bd406ffab07d7d676e3327f5e38a4a8a4815e97f35','fef4282b1057bfcf5dfad5ed22919674587e88ea4926f0e378a5245354217219'); +INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'342e5dddd2289d3d6e381fade13e5a5e3ed27615b89bd8e06ea2bab8f8b48be8','5afdd424176b977bd7b0660867d92952a9cec422a6861c62a876a10014807084','8581b1557db14fb614e239e43bc717b4060eb67f1fc7643b8e865f17742c9b3b'); +INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'51b904e6b18ce4d17bdc491457036ff3a4ba70789ae929862844e9456c3b9b01','d74711d3af6b2313835591b58b1ff53bc20bc194922d10a60cb1274ca632e153','187717675887353888c6e7f71d52309b4a93b617a22df2c9264afb91b455d0b1'); +INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'03a60654bc84711524cb38171f6573acbe8cc2120787bd09e5ec621b2f53929c','bafeaf2f42cf716cdd586e1aea74504257d170275022dfb2c11863cdc33d3127','9a039d87665bb89048db4938c7aaecb474906f47d5680900aa7e832dc3191dfa'); +INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'a590602f34163cf8f880c3620f07a8cd27b9aeba8fc80ccb201d88364eaed210','930eaaee66936628f4ac02f6417167100cc7e2335aaae56dac78cf2ea81bb172','e93a46379aa2503bb8a58b2d6c19b03b31303b2bcf6723d521eb87131ee2225c'); +INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'1b340e7abac4c458e6a0c6ff2abd6dadaa2913414f450cf926725b5253210950','ba496b27fd545d9d811d7421c6f9663e68aa9dbe3a7b5aa9d1ee5644cd142b4a','72a9f2e52d583d599ee99d4a6a4809a2f66a74976140e9a8c8ebfc775f1a787c'); +INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'5a5a31ae9b03a362b44c9e38effadfeac273bd370374ea4816b8402d6b8a8a1a','be94a40c259a5f9e2ad5cb714089c4be18de7bd6d3b403f3a4620f4d889ba4ed','d29f7119b58aa24252db92a75effc972db028bb6ed2bb16c06b15450de2608e5'); +INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'2005a300856ccc74efe80c56927fc13619d5c40ab03ae4ee4fba2050bc2a6b75','afa68f3f9cb6cf8f767075bc9119411e146b6838278d884868a80d9c8e80e26f','19cdd02b1ffdf0bf9d568e9588494a78dc009bb4ab1a1fa4c16ba268645e6e07'); +INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'95307de52e23a8433143d79710e7df22ba7205e2651c88a2eda220ebc8e0f289','66f27b0e46d782b3e7eb8207ba442131069820295ea19ba9b1f8be5ae5b1367b','c5256caed0737666f0c8f19a2669ddac6e23a42655cdb6272a28bfa44b936203'); +INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'de5a22c228bfc58ceaf428d55f180e951ff877537ef463821ce1206f07ab02f3','eda7d728863433b4e738e2b317d661a68d7f8921ed3fcf56120e0e0df464f161','769aa89213a323b45bdf2f9b260b1b3bf811ec93b597156eeba343a9c2a7a9ba'); +INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'e54da9db6c4911087dcfb2824acfd7429431e3297f6b5836dfa8f95165ac9b08','6d7b69dafc9e895a4a4b75c2e7ee2dcda352e21b82249074bfd0865e04dfe6f6','659fb045cfd8c015048329de40c689a5d62d98f65876f6ddeb82297f349fdc51'); +INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'dac63e0e407785c7a461d839ddd749f020f8a33026cd6ea2acd659567a36c40c','fb8e2f9f37cc8ceb72b92925cdb86f62af821bbae196e5de5083d784436e26ef','13052f62a18198bd22922aa4773b10c642c04f031f991cb27dea419093f43ae4'); +INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'0397b7da62fb672aadb96fbdfc37f3265ea04c4d401632d5d9018b9b0ad7cd45','35f40cec8ce2dab43b642668fb3baed3654b63a328ef005e41c8772cbf02029a','4ebe83d0e0c399632e4e99b1428ad91e7fb10576b1e91da08dde65784fc31977'); +INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'dbe43e77c383acc66cb46105991ed066ed5309434016081c26ca1a7dd948b6ce','df94b526dfa87413c5d4c11024019c28dd94051780c00b433b28093788b15ce0','dd0e14a5042b85d681453fd87958715f2b3f64253024f5cfdbb8b0892dc458a0'); +INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'ce1021a584895988014f16dd9f7b7b29bbe59ca8a761914f60c9290b5ec6a16f','7d8c18a5d7ec2d6d87ef468e4ed6784e9d41b248bd3d6754bef8f6bd1df9b9f2','7873ba8cd5ecddb6af09ec212b74a3c135cfc6503b5f0e731647ba3cf96e114a'); +INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'4a066ff12cf6f8dad894e23cfbb4fe6a087893b717b3f0c1ec53764b1e922bf4','0dab776748029f3a094e8c2ad8871c1771263f81cfc6de79ded15ff475239371','1953646297de6f4ee452cffa69822a305db517afd2784e4129a5dd55d03dee3d'); +INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'be1cc89117e7cb3fc18eb610103d72f144c31848da4d8001c334aac577f19427','934400af42a6099d1279e8fc2700bfc118bc313da8383d06892521a17663ef73','77bf029230fc824bf1ea09fb3d11eadca41d76ad65b40815e58422a37b402a18'); +INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'a616b3d81a1ad1db1a9b1491b06ff6bcead9037f75552d14a4c7234b6ff56670','b45534f04aeeee6c2ed877085eac7ebea9f7eacceb2026e5ab8a34ff715bc3be','e410af2a525219356e3be5fcc5761148a4957fee0cd0cfc5d9aa848ca7cab277'); +INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'e7e76fe32ac5c06696c0bda815f29f1e0785a9d48641615f2ef78fa9982d258f','b8261f9bd73b90fef96702a2e83111c3b9305e55efefae86a4078d99ce8c3d0d','4e6b57cbe21a29574218fb27b502e3c9287d83e899b591921a7d8d421fc7f216'); +INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'f0d33d2f73f83449c18b9a7bea43857b36effa24eb248283d9356c5280e4992f','bd3133719a6698bda726f9304fa48db5847cc475db79b879d2566da3cc7299d0','0707defebc199d1de21cb2e57741b8267a27959854211c0b556730a921aed94b'); +INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'434d631a1c3ef7d31d136b4eab8b3044dc2b65886bf43642537cc592db0415a3','eea570d87d2e343bcb9b93764aa9bed952588f4b053d13e87da410b8dee27d7c','5a1c830d456de60236ca93702ab8c626f97a3de1b37d024cfb0620fa6f8fe51c'); +INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'5ca42816d9c6aaed19f6d25cd02e842b5d834254f90a169630544c83a129c7e5','c827847c2f94718cd8c3efdf2b30cf9c8753893a76590efae0e30c61ef9a2d4a','a55f1f91ec58cf143279bad58ee736037b335ec2306c68a5a333b47c1fe92d66'); +INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'31aecb842ea816f98aead90fed7ad005c010919a2ef2c5d7a8965b71832d3201','5a69c5cc5e4aa7e7d071da7ecf8cff88740a707f70ddec29c57ee52b3da09127','4a52e658195744e60c6bb5fa42ee71f68c4bd11970afac49f1074cd7ec7c2357'); +INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'7a3167eb2c8a80c7c363ac47200ebc8cb6bd53f57da64465bec14bd86cf2c6c7','8bc588a7a9286c3f5c13bc31c0faf29f155391f14ad89defebe3d0a0b21d049e','ec62a0cc41f3b49d8497ddce59f72e6eaf8f88f894ff7f4f6de019c9e07919fb'); +INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'212bc51956081e57aa618360926e186824dce8987948ee7706403451ab417a0a','77861a778f50d5f8314cf4caeb6a78539702ee5b36b882713079b88143d4c6ca','fb214d6bfcf462a03ee09af1098dc457299121a3ee3a9eb96b41b855047d3a57'); +INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'03e72d7551164403b41956638a0fdec8703c29373ea2b15c770717b0ec39fa95','b445575b555d0621a37fc3f9f22c113126ea35507703f8885294cb2a4613a6c7','521e9c14aeb6dcdca553790625ae55f690f7e80952f198394d2f8a5305d80288'); +INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'922aa744aa0c08274d1f47a0f80638c7937ecaaf95555e68ceec09449e60d080','d46179d869f330c786bb81e0c122952d33b264f3af2b4a70627764332cce3fb7','5a7b884daf96e1c3a0309893fa3157b605f45eff26014d0647df59fc059e1a3c'); +INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'de422fc7f3f11d20b697e0ee57afe101ddeb5e84105153a3bb10f97f9c3f1783','d0cef146e488d50917e659d8c039e7304a41d239d2330947d81e49d3bc7aa723','9718e73d4f29624cfbcac7261c71f17f5cdda61f83cdf9ba2c78da85eba4af45'); +INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'82d7c9a0c9d63c3f93b125a9eabc2a7b5f560eccc5fb578d71ec071f150c8fac','68777d56b0179c05517b00df97200e16079b34c54a270d598c28caa4f39ea43b','0661d6ae959347188a9d166912677be87ef07917096760b553c88bdd8f046479'); +INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'c9232d9cfb183cc9bc09bef78f7c83bac3d9af803e6916c9b14063c4f619d9e6','728975e1d9ed1caeeef47b1b8f1040c3d1ede182cc47282f32f2f464071057b2','d2ea01ff39ef420f93bb2b594a0f430445cca3e2369fe461c436fd565536c4f4'); +INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'71c3e7aa2ad71e35b752dd4e48381b4ca845c370e5c340f2a221dde808966a45','56e52a1e4cd4954442f83c421e7b8c653e38cd7725d6b140a47e74f57df2c169','83a3509e10d60860f7e9c975413fd3a1a0147e04f2b072f93c345bfd588b37e1'); +INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'47230be2ba96e7adb6088b18788b52a65aa48183c2c00095b79999f5ea1af514','e8b8a81eeb5c9a9fa6f19f6d9617c7c8e1d19368725d223ef270b74b09b1a541','6573212de6b45a7502f0e803f6866cd29c6b34e65a1e2e8db4bc7e3a10c86cf0'); +INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'2c306c41049fba2e58a07b5d14f930bcaa465b2afa4df24d8a887958555f0c57','3ed01193d67e5b016184cd322ca01829a616ad7f7c98bdc034c642ab5c37938d','6eea5ddd47727cee7e66aebc09cb9ca5425cda08c73cc4bb330723bc2d6c7baf'); +INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'95a6325dcb8b9f7aef9da35bd20a46addef23aa5c36795beccacf992bee88d28','730fe6316784de4a36e2530b3935fbbd2e1bb9c876c61d0cc436f86a103d6655','8dd3b5281afe2d4192cd74dee93c18330fadec1efe03e7b0f1967903acc93374'); +INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'8811d6a6b22ff3e0ecf399dd20a28a17ad000e99b17f90e63e02230ed42cf260','a1772d6d909c4fd092a9e511c2f0425480f61c1f2a3d513d973a15e587c47a51','1b29f45a44c529938391637a4e9effe9884ccad04cf6780c8cb0f443cc402719'); +INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'4bffe3d3071cee255f64108bd8b97652f06190cb73caac5bdc4ef61d3ff9ecd6','af66fd2b113c2349077f00be46a1cd5629b2ec39576ae16ec004249438781905','ff41d33ea6ecc0b4e88f9fe696e7caddc78e5cbbc3b5b3538e7da290354d6fc6'); +INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'b00d5001e914fde448457f3b373637385114eeb07d79751241f4c1f50cadc050','64149e5936bce967da53b587f07492b64472145ac66f58c1773a4df324ced96d','b48b729902d9c28d11154f5913859c341695b75da57e2793b28d451e2aa8600f'); +INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'90dd8fabe43314ac6ab6f5485275a4b1131c232a1e9d92395fc030659873edb8','71f3161707a90feeb8b8e3340f47a9102c344b652ff70760aaa1f7b3bb30a14f','3f9050f3eb0252294c360e0bc9c742606ce43e15e9923a20e8e3f738e1fe2681'); +INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'923848bdc7906ab89898021e05e201f69305087b12803c459f066f2d681fe9b5','de443d5cc1b054f4cff96f616b234d91b0b5e3712e6d72e64d564c201b7cd757','4f3e3eab057bfc26e38b72bcb3638acf555a841460c33ddfd63ba95c118ba7c4'); +INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'e5ecdf8c0a2166fa8fe25adea0d374d34131d29a3c901868fec579eb20a5a930','05b8fe3b76416a506aed1b000e3649af38e59adf26cf0d168c5e84112641ea6c','92703f6935ad2a729ba2a61e9453d0d5f04452e52b8494efe635e2ab10c017a0'); +INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'03cd75c14bbe11800f4d436dce93235787e2521a19b1d5a90796a5de369680d1','d8edec966eae31778588f68b7343dbdb4bf878b30cb430246b04ebebdd9e43b9','2413bd092320d4fd25b15fb48780b928b3a256f9bd6ce07ee45ec6c5f4d016bd'); +INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'7239560704ca831dfe90791f1cd21ae1f1506275cf6b45933676be9b096d340b','1294057c4f21c98f97d10d96510ce83d0e8d348d138b3caa2c76ef1be47a3c2a','a4f22c0f0ad11e571722c5cfdeee50d6ee998af45027d59b919ee08d49d6a9e7'); +INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'3aa4ef8714cbb71c4f0b052dc7ec7795322103ba7b8361db3f33303f564f3815','211d0e47a87100167138974db02ac1299bf1b2a1d7b60606b19cecf2f06df0fd','0fe47f2c3d05efcf5d7fde6f51a62947da97dc5bd9b041c3c9a279a3a5fdc3d8'); +INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'fee33c0a466c580887106b4bb7a8c6aeb7a049c94987bae64f695ae400c4a4a1','f851a0d0a25322d5939a5cd2cafc831b6282af5ab81932553cb80ff3825b4a2d','172543bfbcea128ae123700feec0df64cf00bcd120b4a5e61907ceabe82fbbd7'); +INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'94d58bd9a65a2e13c7ea2373e521952e916b0e1d31d803eced96e5c8903aa625','e959bddf887904cd324ff7bf5fb60380f2c4a7c2b1b4215c63715a59ad297200','af4ca99db097a0e9f51e15c8a4d63563d91d3b0c683fd8af7d604ebbb3bc92ee'); +INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'e9c87b2a652d4ef3d48ac74424f57d06dd85893fd542e0784df067c37396b0df','ec205004b519cbbc750bcae821effee41789b3f643f90148e8db2d9d9f83ed49','decaf95f86445ec9af552092e6363ea46082403607141651e208c832eeef3f75'); +INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'b664a0985edab20768aec36096a7b2faa159cef4af7e779ad421942137ee317a','dec86d178abd72944cda84a3154303e16eaf39e5bd5bd59a80cca27a5ed5887e','0ca5e20bea5f847afc3e46fe0fe351d7945c71dade98c595eaa815d066f3fd82'); +INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'5ffa5e1f36c5539b2f5a89a6a60d45ec6372ced770d9b0e0e8dfd61edad84c22','be052ccd372d556b9b28d0d2b6f9dbfc9b32ff173b71d7842fb6008047a67384','5efce2ff6af4f277988c7185d4140fbfe39e38a559dcfee42df8b3c2e9c5a29f'); +INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'fc6f9f23c3b8954c7989b0e4ce40087b66dceabc7c0e407ac7f4b397fe2a1281','1495ca8eeb434877ce36335268a349709e99811e93f416ccf1f0c98114731824','95ee170cf31f7dae96f145fca34a78dfa1bcf27dd54fc307b375db6264920951'); +INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'cc6c3b8cf2c457b2f6afb5b208f968544767be8b86ca53bdab4224619a03121d','93d193df39b7340b932b5abd85a027df086e033ff2b18fd8c9d0d03cd6db392f','5475a06a32b7577f779f40e220d8fe8508353f7adc14b2716683d0dbe984c6b2'); +INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'cc57ac6aec118ebfb03f5113ad1af749522e60ef4ca201d48bd43478cc0a29e4','064c03f24da9de841de9f492487de4077b842d6de92366d3fe7ff37d558998c1','2402c5b72e49c4a760a2272515222c73b09ec07f2b04b6d2a8015af2691780cd'); +INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'9999be70079c0943f0a00c54236680bafe0c87dd3bb75c982211f751e7ecdcae','f1196c84f3767cea82b4dfb6a5e4be30f3ed3f53e9b9cefdadf81af9f2b2bd49','bccfd0c4cc15b76767a20a1ba400637b36c56aab69486cbc72e9e72e33b1a83c'); +INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'efb2fcb7b5628bb99994bc1ada157bf80b4516d961497aa011c06da1523801d7','ba6d273c442538389e43b3ad47795d7e61d9b17427d1a1044333f96cafe575c4','91a8eb4d78a32a300e878770d0ab75ce83c640289ce59cf545f3dc5d8c10956c'); +INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'fb396fca9af7816f97b22b8bf1b01951e271a75f1a640dfc64955696dc1c0b7d','20ebf686e5c5a50c0df23ee15488559024622039aa4fa47f1b07dc3967bbc760','56f5c67aca7fc5ed1ae0e0391c8c249c260afb1e9c196f775234196c3ca09c58'); +INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'6cbc681ed90e676cc507d07120888bd4c8759873a0b9215f721a0ce707070086','d8c09411f0c7fd43774558fd6cc9884b032cfdcca63a08845b61293ff52ef380','442b98b76092535b018307a2a6078a3cd5969fa27b23e1cd72e21d32140c7046'); +INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'7cb734eb3e24e92de8915a6bea42b6ef721251c481ac9ec751cdbdc08e110011','4f02ef18a644ac564db930818e845496ab0ea3caa34ff70878f0f9f0ef6641e9','589ef15675bda5f87a0de4a52cf442a3a2724b80ee5ed2d3929603eae299091a'); +INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'7b57a4d1ce0995a938e174e52a096cc9829a0ddd59f698ed04d8b43371a78126','7716368643d8c6d26932d9efabb6fd6e574c1b13b8f149363ec4b99d9f405435','61ba7c730fff3cb9ab33772a4fcee9a926ff58cf3544b1857b1fb7de93d67235'); +INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'f46f820a64ced97ccf68a56c048459de0b2855ecd4299e447c4b630913ce1749','71375966f9a524c1df04c5033ebb17e4293053f3ecb8e724a2f093b3373641b6','51d6c4125fe90f85f2409113423171db2854991a076d2c4eca255776a2e6fddc'); +INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'878239189ae0afa759af5e59db8a17fd17c0c9a2c017384fd2d0ca789e738050','4ead629f99d32f3d0ef6c5f7ad1bbffa91608d71b815293128461a9b5850ad15','4cb2525791ac15d0141cdf116c7587c579fbb28fc13f7958ad6b3705c4653a7d'); +INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'d2d86823f727bc075138653a682373a9c76d21d48b5881968adb66042b501e53','3958da4cebd7670ab3e197b6ff8b5a770dc756dccc1806bdd050513e75e9e33c','0b6b59db6ef669c03124ca86c68173a2cd221ba76fe9e7559915cda9b1bb38b7'); +INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'9fd098fcc7d71c0c46fc741ea278de92589c44a6efc4980ced53843193553ea8','f5b2e274c8dda92ac634490b28d13b18d7aeb22fd1a5101c805d3f4265422a7c','c31a3ead7d573d5ab10c16b40acbac76727d31de05efef023eb6ae4e52a80e23'); +INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'f1ad21f9b4134bc0225c26fb8969af3565c07997197a7ed9636c01f187f07042','3711ef31e2cc58fe1a9cbcf0a5bfdac9a805f346137b923fd86c65f850b35eae','5ed9fe63d530eab4969f7a509b7c02a10732ddda43e2af979e47d2649622b5a4'); +INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'9a1f3de6b5a255720973fb0c93ae2bc8fe8936565140b8ae991b9d83f86a0002','8e73f7f52266820ca7f25665628e31afc6a5e3dcbbf51bc1bc8635440ecdf669','37d4d2507257f97365f43e1308e0f51f4f4cf70eb2accf053acf2c5141d73920'); +INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'ab56d9f59575b2d8ecc4933bbfa1fb0cb81c7a6fe84c1ba81bdee40c3da13164','2720a0a338a84ae1b56086f0d4f1b341eb5e3b46e9290887d7675800c6872081','8f45e39b2a81211bddb43af6f552f7a24b29fa4a7ff1a5579292961d76a319c6'); +INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'8399d461b5079a145c716f8f6004d2f7870fe93786bd944fa36ef27134c9517c','18ee24262532a6a1e49086f1a8ea0161a5c1ae80ce2230f1b76ce782f6aff39a','836990d07f0a4ceb542013cf3ff999227c11edca35bb55882e8341053794b44c'); +INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'b6696a1511704128bbd5ec2c80a1d7d8d3bda6b959f1a674537ace152cb7f8bc','e839a4222aad212860b0698214f3d426d065226d1e7983e6620325a583b28abb','3806fa37420cc12d153ae9b6f8ea425d5626eacbce51516c768c06f67b348e12'); +INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'9aea0f996c36a815e4103b86ee7fc9be784d7c72549e54d04d84cf7fb8adfb78','fca6c96a2d6bbe118c5418a3e2b85dced8cfc0da2a8b46fef65f49e81a459efc','52c79645d00cb00e039599c0eb19ca57c63c53f8e9a4182588f21cbc1756067b'); +INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'7571b554c5600796b60982bb6df3517eed517a2a3627f8383b92a073cc4a5872','a168e4a6c3de65e68532d534107bc3033588b2b0d67ae2f5d23b1ffac1a21ca8','798df9b56a90da1472e0783320d6c7f12b228272c8d1fb45b651b4895d5cb94f'); +INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'b2507a73ff4f6998582daac667c457308ba78744e3d1d7533c0232092e3eab1f','379aebcf4d32a0480f5d334f5c04629b6ace33bdc5f138907c338eab7b1d9093','a94db65b05ecb6f1766484ab21fbe9575889731ba6525e6575a833a149512d9f'); +INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'18566f22ffb9bc5f98712ef3234f8da84f8f3e382007b23c3bb8e6c910043746','b238ccb2ac0b6329a0fc30267fd29e4813bfc786ad871de90c1797c6c72e65bb','e2286a81fa479449d8a10a90c1ef84393ed417fea77eeb801d0bcd085dbef8d9'); +INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'72c44bddd5b54657623692e444bf893ca7b6d8da992c274bcbaa37c6db903825','2736ff0669b8c3cfb5b4ad8f082e23d985cbf0c4ba9990175febf1c02882bdf9','9e81b9eb81017f119956b2c4d0598ddaea86279102b2c95716942040331be1f4'); +INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'1ddc441adb4b262862caf5b811b2375bd376d9b5d7b8ee251c4337478833cde9','3407db619adaf80236c8319a7e9283c10a43a7b1717d4d89115ac90e8f52b706','adc886dd2682d070e8b35731e5acf9a274cda69cebef4d6f1e9c392b064405d0'); +INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'b59447846d380cb8d32639ca13e6e396b68b18483f70b6380296bff65dced3d2','e02f456fb1e9b6de38bb9923f6f68973d592ffa04f65731c66dae734e4fd1d44','f1a8a2194f6268a21fc5c849ee03dda76407c32a8a37afc7ffc73a069617ffce'); +INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'54a1c32d20665e7ff92ea43451ff2e59a98136ad7da576fa6b2614dda700b707','5177e82a6aa417664930ecdb0495e108b3fb660ff08a608fa540a29b0c4c2650','e61419908717a6ef3ba08ae8774e53113efe5788a282f80eb442b08e94d69e14'); +INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'f0bef715c366843e002c75992b8d50d82a3ea54f144350f158e862eb03cb45dd','84abe1e98b75d07291ef4b9847c336f787fdcc74f9a2570d23cb8ce396c9104a','4fc6dce709d5543c92aa79a7c2c32530d21af1553e6aed283275e117ad1b3d2f'); +INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'0a4ce98b783b97f81fff9ab73d7a7091087e8511ebb425c81ccf60c3f9edbfd6','ca0f3a6b9b2eafb864eb324359d4ad9dd85361a7c7d2833ba6bfd230d0e60773','31b1e764c67f891085d27867fc67543424613d5258acb419cfc6f5aa0ab9c8d2'); +INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'f3b6781eebab3a6928791cf281d4ae7cb4f7fb59c6ae7575eba253e6ec6e447b','283080af19ccbde44c6e268326ddde17fc850d7ca1add3698adb3e606cd984e4','b4bd4c2f874a4e6cee7f7748ca233fd32ec5dee2f1e166f547d1005ee995bb68'); +INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'14261b6b340632c469847700cee16c0163a7f8cad4dac7ad4555efeb5f3235fb','744bcdbcd8d44066eb9528c6fa39109148ea557d3cc3bdb88a818b9f9a9dcb25','57a4e493dd28ef516d619c7a1c000e6adbbb1eb52a3c4ddd9637db0c208bf332'); +INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'3c033a502e1890e8a3c697e354cd1769e4300ce7f62ee7ac47a7201e1ad5de2c','c424d1724a85f76a855b4dc834c8b599f764b5095b0649448a0fa2aef1e41d31','ef775b75e49ab5f086d373a14ede520bcc1ded9c3aa59f1961275dd222e6347a'); +INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'acc1dc4b7ec10c0989af833b57640be486035d76f74b57a50b023fb60f418be2','dde73fa3b80a8e2d1cb8aa692dd62ad712549fdceebf4083965cb36f692d45d9','014ac745ebcaf4cdf291b304321fd70f5fb8f789766851ea0063d20cea4ae9db'); +INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'1443d97efeeb04291e117b152f1e18537035a59c80fabb574577cb3e66e5db59','a52c247beb178317cdd18532927c8281abe3af9914c676cf250084d4b1e96762','8eb77636560783ea3f761efd845262891ba2fd2e3996eb01d2d4a2f2fab0b0e7'); +INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'1c74208da191b965f52006e577c3f4df30f29b36b1d137ab457bbfe30737285d','693d04e9be7d9de1aee3cfe832c6d913213bbf44b0f04a5b394e1aceb77b7b49','d6271077d865fe377e5d9d75432e63033956ccca7b672ce2b3b693fcbd2ba3c3'); +INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'662e1b232c5afeba4df756a31d7b63f7f33dbb4aa752abbea9f0b57f1c7c4295','bce25b4036b54089a064c1fd781923787126977938ff3c206f0a8d76ddf52489','bfcb1a084bae5cd18847819f44df86a9fc0e5d87f39671894714499d2945ce8c'); +INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'8a1b60657764a35ce95c9e215600f63f0fc8c4933c682ea017553010743c97a2','0d0259b0c4755aba3d725283f1773bdd766a0ae009f2b94be00a5589b61ef8f5','c980ed12e01a9f136aa8abfa3c30320947ac490f65070c7fdac5596f65d4f8e8'); +INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'c2e25d20f3c50a67a4268d9aa3e386c92e5217cf8f106d2affaae19e49b48828','32c25e6b70ffe5ea4582a7fd8bf8c892d4fe0afb247e3aca79686e5b5ce9e430','11e46ddb7368deb479e0b6aaee90df94e9f8327fda419525a4e390737b244f13'); +INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'bd7479caeb388072138c99d19624e495200df1bf02f47caf0ae8a5007fd9dfce','0fdf6d97b6a63f690d30aca13e27aa4cd6bc3ebbf525cfe6f6eee3ce529dfff4','0d9f42d24d27f1638c8c12da766200edcae456ea6b76ec7e2e984702e64e23a6'); +INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'ddb8394df96a37e0127c8894e669072cb195ac953e2a3e922b95bf40804820b6','8cd686429ec5799fb9a78d07d662c5f51431c6d79691a45c109d512d261aa5df','7daf2767f19a56cf03e63d0c70d20e6f5f5bb7847f18110a82c590011fca2f75'); +INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'3ed7694459a57281ba8e4159ce156333aae4b596aa3ab5193ea6c1901f2c9667','b6c153092c9e72a0fc5f32febc767803bf50df6886edea271315e382903b8cc1','809802d81faf99294d677190f0c8f9f838506a7d1aaca58baeb501e0746b52c3'); +-- Triggers and indices on blocks +CREATE INDEX blocks_block_index_block_hash_idx ON blocks (block_index, block_hash) + ; +CREATE INDEX blocks_block_index_idx ON blocks (block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transactions +DROP TABLE IF EXISTS transactions; +CREATE TABLE transactions( + tx_index INTEGER UNIQUE, + tx_hash TEXT UNIQUE, + block_index INTEGER, + block_hash TEXT, + block_time INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + fee INTEGER, + data BLOB, + supported BOOL DEFAULT 1, + FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), + PRIMARY KEY (tx_index, tx_hash, block_index)); +INSERT INTO transactions VALUES(1,'63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); +INSERT INTO transactions VALUES(2,'5849bd15f5a73840e4babd220ed450d0f46128479d6bb7eaf9f4e98a409c97d4',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',1000,7650,X'0000000000000000000000010000000002FAF080',1); +INSERT INTO transactions VALUES(3,'04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,1000000,X'0000000A00000000000000000000000002FAF08000000000000000010000000005F5E100000A0000000000000000',1); +INSERT INTO transactions VALUES(4,'98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000000A00000000000000010000000006422C4000000000000000000000000002FAF080000A00000000000DBBA0',1); +INSERT INTO transactions VALUES(5,'90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',50000000,9675,X'0000000B04D5809F0085BF2655C500A8C65D6D8B42DD373160FB431AF05792B0F30B63A698EF3D31D1777AD18801E94EEF03D4314911AC03D7A82483B40614EA5CF80E52',1); +INSERT INTO transactions VALUES(6,'1ba2a0b4ee8543976aab629c78103c0ba86c60250c11d51f9bc40676487283b7',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'000000140000000000004767000000003B9ACA000100000000000000000000',1); +INSERT INTO transactions VALUES(7,'3f9e2dc4f7a72dee0e2d3badd871324506fe6c8239f62b6aa35f316800d55846',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000014000000000000476800000000000186A00000000000000000000006666F6F626172',1); +INSERT INTO transactions VALUES(8,'30bfb2793bd1a65e5993edb9c3268db31bc96b8bf1f6e3bef037da4f4e93bc65',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',1000,7650,X'00000000000000000000476700000000003D0900',1); +INSERT INTO transactions VALUES(9,'7da21bef68887cb50f8582fc0dda69ee5414993450dfab7437891b5a1117e849',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',1000,7650,X'000000000000000000004768000000000000020E',1); +INSERT INTO transactions VALUES(10,'f3cb8e3c39c261fef8d71c5222b8864bee3c7c1c4ec342430cff08945273779f',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000032000000000000025800000000000047670000000000000001',1); +INSERT INTO transactions VALUES(11,'15741649c83a752d61662fe00bd28b1c33dfd7816cb92225a0a61008f9059a59',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000032000000000000032000000000000047680000000000000001',1); +INSERT INTO transactions VALUES(12,'1a5b6320346fcb5f7b59ce88553ef92738d2f5ba0a7477e898df85b2730a0f1a',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB3300405900000000000005F5E0FF09556E69742054657374',1); +INSERT INTO transactions VALUES(13,'1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000052BB33640000000002FAF08000000000017D7840000000000000000000003B100000000A',1); +INSERT INTO transactions VALUES(14,'a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000152BB336400000000017D78400000000002793D60000000000000000000003B100000000A',1); +INSERT INTO transactions VALUES(15,'040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000052BB33640000000008F0D1800000000014DC93800000000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(16,'62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000152BB33640000000014DC93800000000008F0D1800000000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(17,'578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000252BB33C8000000002CB417800000000026BE36803FF0000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(18,'479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000352BB33C80000000026BE3680000000002CB417803FF0000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(19,'16a5d04f339e5765125c4b2fdda91e45e135e44df489b97805b5d3bae50a6485',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB33324058F7256FFC115E004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(20,'65c96e80d7bfe2c7b00086196a7fc38889d91f5907658a6bbe795c89ef90ce37',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB3365405915F3B645A1CB004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(21,'43232e4a2e0863cde59fb404a8da059c01cc8afb6c88b509f77d6cbfa02d187e',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB33C94000000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(22,'cd79f155a7a8b7737cf959cdc347db22f2f38288261842997e13844a09f6f2ee',310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000000A00000000000047670000000002FAF08000000000000000010000000002FAF080000A0000000000000000',1); +INSERT INTO transactions VALUES(23,'ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa',310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','mvCounterpartyXXXXXXXXXXXXXXW24Hef',100000000,5625,X'',1); +INSERT INTO transactions VALUES(24,'53290702a54a5c19d9a5e2fc1942c2381a4d2283f30d645579b982ae0dbb7fcc',310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',1000,7650,X'0000000000000000000047680000000000002710',1); +-- Triggers and indices on transactions +CREATE INDEX transactions_block_index_idx ON transactions (block_index) + ; +CREATE INDEX transactions_block_index_tx_index_idx ON transactions (block_index, tx_index) + ; +CREATE INDEX transactions_tx_hash_idx ON transactions (tx_hash) + ; +CREATE INDEX transactions_tx_index_idx ON transactions (tx_index) + ; +CREATE INDEX transactions_tx_index_tx_hash_block_index_idx ON transactions (tx_index, tx_hash, block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transaction_outputs +DROP TABLE IF EXISTS transaction_outputs; +CREATE TABLE transaction_outputs( + tx_index, + tx_hash TEXT, + block_index INTEGER, + out_index INTEGER, + destination TEXT, + btc_amount INTEGER, + PRIMARY KEY (tx_hash, out_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,310001,2); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92845000000,310003,4); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92945000000,310004,5); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92895000000,310005,6); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',1000000000,310005,6); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92845000000,310006,7); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',100000,310006,7); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000,310007,8); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,310007,8); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',99474,310008,9); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,310008,9); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844999976,310009,10); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844979976,310009,10); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000024,310009,10); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844559176,310010,11); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844539176,310010,11); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50420824,310010,11); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92794539176,310012,13); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92769539176,310013,14); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92773789176,310013,14); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92778789176,310014,0); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92628789176,310014,15); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91528789176,310016,17); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90937926676,310018,19); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90941039176,310018,19); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91100339176,310019,20); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91416039176,310019,20); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91441039176,310019,20); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92771039176,310020,21); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92841039176,310020,21); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',946000000,310021,22); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149840926438,310022,23); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149849426438,310023,0); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',89474,310023,24); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10526,310023,24); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000,310032,0); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,310001,2); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92845000000,310003,4); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92945000000,310004,5); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92895000000,310005,6); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',1000000000,310005,6); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92845000000,310006,7); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',100000,310006,7); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000,310007,8); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,310007,8); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',99474,310008,9); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,310008,9); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844999976,310009,10); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844979976,310009,10); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000024,310009,10); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844559176,310010,11); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844539176,310010,11); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50420824,310010,11); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92794539176,310012,13); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92769539176,310013,14); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92773789176,310013,14); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92778789176,310014,0); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92628789176,310014,15); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91528789176,310016,17); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90937926676,310018,19); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90941039176,310018,19); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91100339176,310019,20); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91416039176,310019,20); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91441039176,310019,20); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92771039176,310020,21); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92841039176,310020,21); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',946000000,310021,22); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149840926438,310022,23); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149849426438,310023,0); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',89474,310023,24); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10526,310023,24); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000,310032,0); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table credits +DROP TABLE IF EXISTS credits; +CREATE TABLE credits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + calling_function TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO credits VALUES(310000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',93000000000,'burn','63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2',1); +INSERT INTO credits VALUES(310001,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,'send','5849bd15f5a73840e4babd220ed450d0f46128479d6bb7eaf9f4e98a409c97d4',2); +INSERT INTO credits VALUES(310004,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',100000000,'btcpay','90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613',5); +INSERT INTO credits VALUES(310005,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',1000000000,'issuance','1ba2a0b4ee8543976aab629c78103c0ba86c60250c11d51f9bc40676487283b7',6); +INSERT INTO credits VALUES(310006,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',100000,'issuance','3f9e2dc4f7a72dee0e2d3badd871324506fe6c8239f62b6aa35f316800d55846',7); +INSERT INTO credits VALUES(310007,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,'send','30bfb2793bd1a65e5993edb9c3268db31bc96b8bf1f6e3bef037da4f4e93bc65',8); +INSERT INTO credits VALUES(310008,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,'send','7da21bef68887cb50f8582fc0dda69ee5414993450dfab7437891b5a1117e849',9); +INSERT INTO credits VALUES(310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',24,'dividend','f3cb8e3c39c261fef8d71c5222b8864bee3c7c1c4ec342430cff08945273779f',10); +INSERT INTO credits VALUES(310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',420800,'dividend','15741649c83a752d61662fe00bd28b1c33dfd7816cb92225a0a61008f9059a59',11); +INSERT INTO credits VALUES(310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',4250000,'filled','a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33',14); +INSERT INTO credits VALUES(310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',5000000,'cancel order','98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52',0); +INSERT INTO credits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2',16); +INSERT INTO credits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2',16); +INSERT INTO credits VALUES(310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183',18); +INSERT INTO credits VALUES(310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183',18); +INSERT INTO credits VALUES(310018,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',59137500,'bet settled: liquidated for bear','16a5d04f339e5765125c4b2fdda91e45e135e44df489b97805b5d3bae50a6485',19); +INSERT INTO credits VALUES(310018,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',3112500,'feed fee','16a5d04f339e5765125c4b2fdda91e45e135e44df489b97805b5d3bae50a6485',19); +INSERT INTO credits VALUES(310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',159300000,'bet settled','65c96e80d7bfe2c7b00086196a7fc38889d91f5907658a6bbe795c89ef90ce37',20); +INSERT INTO credits VALUES(310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',315700000,'bet settled','65c96e80d7bfe2c7b00086196a7fc38889d91f5907658a6bbe795c89ef90ce37',20); +INSERT INTO credits VALUES(310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',25000000,'feed fee','65c96e80d7bfe2c7b00086196a7fc38889d91f5907658a6bbe795c89ef90ce37',20); +INSERT INTO credits VALUES(310020,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',1330000000,'bet settled: for notequal','43232e4a2e0863cde59fb404a8da059c01cc8afb6c88b509f77d6cbfa02d187e',21); +INSERT INTO credits VALUES(310020,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',70000000,'feed fee','43232e4a2e0863cde59fb404a8da059c01cc8afb6c88b509f77d6cbfa02d187e',21); +INSERT INTO credits VALUES(310022,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',56999887262,'burn','ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa',23); +INSERT INTO credits VALUES(310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',8500000,'recredit wager remaining','1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887',0); +INSERT INTO credits VALUES(310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10000,'send','53290702a54a5c19d9a5e2fc1942c2381a4d2283f30d645579b982ae0dbb7fcc',24); +INSERT INTO credits VALUES(310032,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,'cancel order','cd79f155a7a8b7737cf959cdc347db22f2f38288261842997e13844a09f6f2ee',0); +-- Triggers and indices on credits +CREATE TRIGGER block_update_credits + BEFORE UPDATE ON credits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX credits_address_idx ON credits (address) + ; +CREATE INDEX credits_asset_idx ON credits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table debits +DROP TABLE IF EXISTS debits; +CREATE TABLE debits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + action TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO debits VALUES(310001,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'send','5849bd15f5a73840e4babd220ed450d0f46128479d6bb7eaf9f4e98a409c97d4',2); +INSERT INTO debits VALUES(310003,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,'open order','98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52',4); +INSERT INTO debits VALUES(310005,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'issuance fee','1ba2a0b4ee8543976aab629c78103c0ba86c60250c11d51f9bc40676487283b7',6); +INSERT INTO debits VALUES(310006,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'issuance fee','3f9e2dc4f7a72dee0e2d3badd871324506fe6c8239f62b6aa35f316800d55846',7); +INSERT INTO debits VALUES(310007,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',4000000,'send','30bfb2793bd1a65e5993edb9c3268db31bc96b8bf1f6e3bef037da4f4e93bc65',8); +INSERT INTO debits VALUES(310008,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',526,'send','7da21bef68887cb50f8582fc0dda69ee5414993450dfab7437891b5a1117e849',9); +INSERT INTO debits VALUES(310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',24,'dividend','f3cb8e3c39c261fef8d71c5222b8864bee3c7c1c4ec342430cff08945273779f',10); +INSERT INTO debits VALUES(310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',20000,'dividend fee','f3cb8e3c39c261fef8d71c5222b8864bee3c7c1c4ec342430cff08945273779f',10); +INSERT INTO debits VALUES(310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',420800,'dividend','15741649c83a752d61662fe00bd28b1c33dfd7816cb92225a0a61008f9059a59',11); +INSERT INTO debits VALUES(310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',20000,'dividend fee','15741649c83a752d61662fe00bd28b1c33dfd7816cb92225a0a61008f9059a59',11); +INSERT INTO debits VALUES(310012,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'bet','1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887',13); +INSERT INTO debits VALUES(310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',25000000,'bet','a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33',14); +INSERT INTO debits VALUES(310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',150000000,'bet','040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b',15); +INSERT INTO debits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',350000000,'bet','62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2',16); +INSERT INTO debits VALUES(310016,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',750000000,'bet','578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f',17); +INSERT INTO debits VALUES(310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',650000000,'bet','479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183',18); +INSERT INTO debits VALUES(310021,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,'open order','cd79f155a7a8b7737cf959cdc347db22f2f38288261842997e13844a09f6f2ee',22); +INSERT INTO debits VALUES(310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',10000,'send','53290702a54a5c19d9a5e2fc1942c2381a4d2283f30d645579b982ae0dbb7fcc',24); +-- Triggers and indices on debits +CREATE TRIGGER block_update_debits + BEFORE UPDATE ON debits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX debits_address_idx ON debits (address) + ; +CREATE INDEX debits_asset_idx ON debits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table messages +DROP TABLE IF EXISTS messages; +CREATE TABLE messages( + message_index INTEGER PRIMARY KEY, + block_index INTEGER, + command TEXT, + category TEXT, + bindings TEXT, + timestamp INTEGER); +INSERT INTO messages VALUES(0,310000,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(1,310001,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(2,310002,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(3,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(4,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(5,310003,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(6,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(7,310003,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(8,310003,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(9,310004,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(10,310004,'update','order_matches','[''order_match_id'', ''status'']',0); +INSERT INTO messages VALUES(11,310004,'insert','btcpays','[''block_index'', ''btc_amount'', ''destination'', ''order_match_id'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(12,310005,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(13,310006,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(14,310007,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(15,310008,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(16,310009,'insert','dividends','[''asset'', ''block_index'', ''dividend_asset'', ''fee_paid'', ''quantity_per_unit'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(17,310010,'insert','dividends','[''asset'', ''block_index'', ''dividend_asset'', ''fee_paid'', ''quantity_per_unit'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(18,310011,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(19,310012,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(20,310013,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(21,310013,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(22,310013,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +INSERT INTO messages VALUES(23,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(24,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(25,310013,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(26,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(27,310013,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(28,310012,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(29,310014,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(30,310014,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(31,310014,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +INSERT INTO messages VALUES(32,310014,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(33,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(34,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(35,310015,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(36,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(37,310015,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(38,310014,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(39,310016,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(40,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(41,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(42,310017,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(43,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(44,310017,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(45,310016,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(46,310018,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(47,310018,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(48,310018,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(49,310018,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(50,310019,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(51,310019,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(52,310019,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(53,310019,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(54,310020,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(55,310020,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(56,310020,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(57,310020,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(58,310021,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(59,310022,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(60,310023,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(61,310023,'update','bets','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(62,310023,'insert','bet_expirations','[''bet_hash'', ''bet_index'', ''block_index'', ''source'']',0); +INSERT INTO messages VALUES(63,310023,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(64,310032,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(65,310032,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(66,310032,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +-- Triggers and indices on messages +CREATE TRIGGER block_update_messages + BEFORE UPDATE ON messages BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX messages_block_index_idx ON messages (block_index) + ; +CREATE INDEX messages_block_index_message_index_idx ON messages (block_index, message_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_match_expirations +DROP TABLE IF EXISTS order_match_expirations; +CREATE TABLE order_match_expirations( + order_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on order_match_expirations +CREATE TRIGGER block_update_order_match_expirations + BEFORE UPDATE ON order_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_match_expirations_block_index_idx ON order_match_expirations (block_index) + ; +CREATE INDEX order_match_expirations_tx0_address_idx ON order_match_expirations (tx0_address) + ; +CREATE INDEX order_match_expirations_tx1_address_idx ON order_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_matches +DROP TABLE IF EXISTS order_matches; +CREATE TABLE order_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + forward_asset TEXT, + forward_quantity INTEGER, + backward_asset TEXT, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_paid INTEGER, + status TEXT); +INSERT INTO order_matches VALUES('04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6_98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52',3,'04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',4,'98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,'XCP',100000000,310002,310003,310003,10,10,310023,857142,'pending'); +INSERT INTO order_matches VALUES('04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6_98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52',3,'04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',4,'98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,'XCP',100000000,310002,310003,310004,10,10,310023,857142,'completed'); +-- Triggers and indices on order_matches +CREATE TRIGGER block_update_order_matches + BEFORE UPDATE ON order_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_matches_backward_asset_idx ON order_matches (backward_asset) + ; +CREATE INDEX order_matches_block_index_idx ON order_matches (block_index) + ; +CREATE INDEX order_matches_forward_asset_idx ON order_matches (forward_asset) + ; +CREATE INDEX order_matches_id_idx ON order_matches (id) + ; +CREATE INDEX order_matches_match_expire_index_idx ON order_matches (match_expire_index) + ; +CREATE INDEX order_matches_status_idx ON order_matches (status) + ; +CREATE INDEX order_matches_tx0_address_forward_asset_idx ON order_matches (tx0_address, forward_asset) + ; +CREATE INDEX order_matches_tx0_hash_idx ON order_matches (tx0_hash) + ; +CREATE INDEX order_matches_tx1_address_backward_asset_idx ON order_matches (tx1_address, backward_asset) + ; +CREATE INDEX order_matches_tx1_hash_idx ON order_matches (tx1_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_expirations +DROP TABLE IF EXISTS order_expirations; +CREATE TABLE order_expirations( + order_hash TEXT PRIMARY KEY, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO order_expirations VALUES('04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310013); +INSERT INTO order_expirations VALUES('98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310014); +INSERT INTO order_expirations VALUES('cd79f155a7a8b7737cf959cdc347db22f2f38288261842997e13844a09f6f2ee','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310032); +-- Triggers and indices on order_expirations +CREATE TRIGGER block_update_order_expirations + BEFORE UPDATE ON order_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_expirations_block_index_idx ON order_expirations (block_index) + ; +CREATE INDEX order_expirations_source_idx ON order_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table orders +DROP TABLE IF EXISTS orders; +CREATE TABLE orders( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + give_asset TEXT, + give_quantity INTEGER, + give_remaining INTEGER, + get_asset TEXT, + get_quantity INTEGER, + get_remaining INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_required INTEGER, + fee_required_remaining INTEGER, + fee_provided INTEGER, + fee_provided_remaining INTEGER, + status TEXT); +INSERT INTO orders VALUES(3,'04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6',310002,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,50000000,'XCP',100000000,100000000,10,310012,0,0,1000000,1000000,'open'); +INSERT INTO orders VALUES(4,'98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52',310003,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,105000000,'BTC',50000000,50000000,10,310013,900000,900000,6800,6800,'open'); +INSERT INTO orders VALUES(3,'04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6',310003,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'open'); +INSERT INTO orders VALUES(4,'98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52',310003,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'open'); +INSERT INTO orders VALUES(3,'04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6',310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'expired'); +INSERT INTO orders VALUES(4,'98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52',310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'expired'); +INSERT INTO orders VALUES(22,'cd79f155a7a8b7737cf959cdc347db22f2f38288261842997e13844a09f6f2ee',310021,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'open'); +INSERT INTO orders VALUES(22,'cd79f155a7a8b7737cf959cdc347db22f2f38288261842997e13844a09f6f2ee',310032,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'expired'); +-- Triggers and indices on orders +CREATE TRIGGER block_update_orders + BEFORE UPDATE ON orders BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX orders_block_index_idx ON orders (block_index) + ; +CREATE INDEX orders_expire_index_idx ON orders (expire_index) + ; +CREATE INDEX orders_get_asset_give_asset_idx ON orders (get_asset, give_asset) + ; +CREATE INDEX orders_give_asset_idx ON orders (give_asset) + ; +CREATE INDEX orders_source_give_asset_idx ON orders (source, give_asset) + ; +CREATE INDEX orders_status_idx ON orders (status) + ; +CREATE INDEX orders_tx_hash_idx ON orders (tx_hash) + ; +CREATE INDEX orders_tx_index_tx_hash_idx ON orders (tx_index, tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_expirations +DROP TABLE IF EXISTS bet_match_expirations; +CREATE TABLE bet_match_expirations( + bet_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on bet_match_expirations +CREATE INDEX bet_match_expirations_block_index_idx ON bet_match_expirations (block_index) + ; +CREATE INDEX bet_match_expirations_tx0_address_idx ON bet_match_expirations (tx0_address) + ; +CREATE INDEX bet_match_expirations_tx1_address_idx ON bet_match_expirations (tx1_address) + ; +CREATE TRIGGER block_update_bet_match_expirations + BEFORE UPDATE ON bet_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_matches +DROP TABLE IF EXISTS bet_matches; +CREATE TABLE bet_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_bet_type INTEGER, + tx1_bet_type INTEGER, + feed_address TEXT, + initial_value INTEGER, + deadline INTEGER, + target_value REAL, + leverage INTEGER, + forward_quantity INTEGER, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bet_matches VALUES('1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887_a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33',13,'1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',14,'a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310012,10,10,310022,99999999,'pending'); +INSERT INTO bet_matches VALUES('040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b_62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2',15,'040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',16,'62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310014,10,10,310024,99999999,'pending'); +INSERT INTO bet_matches VALUES('578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f_479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183',17,'578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',18,'479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,3,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310016,10,10,310026,99999999,'pending'); +INSERT INTO bet_matches VALUES('1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887_a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33',13,'1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',14,'a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310018,10,10,310022,99999999,'settled: liquidated for bear'); +INSERT INTO bet_matches VALUES('040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b_62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2',15,'040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',16,'62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310019,10,10,310024,99999999,'settled'); +INSERT INTO bet_matches VALUES('578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f_479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183',17,'578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',18,'479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,3,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310020,10,10,310026,99999999,'settled: for notequal'); +-- Triggers and indices on bet_matches +CREATE INDEX bet_matches_block_index_idx ON bet_matches (block_index) + ; +CREATE INDEX bet_matches_deadline_idx ON bet_matches (deadline) + ; +CREATE INDEX bet_matches_id_idx ON bet_matches (id) + ; +CREATE INDEX bet_matches_status_idx ON bet_matches (status) + ; +CREATE INDEX bet_matches_tx0_address_idx ON bet_matches (tx0_address) + ; +CREATE INDEX bet_matches_tx1_address_idx ON bet_matches (tx1_address) + ; +CREATE TRIGGER block_update_bet_matches + BEFORE UPDATE ON bet_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_resolutions +DROP TABLE IF EXISTS bet_match_resolutions; +CREATE TABLE bet_match_resolutions( + bet_match_id TEXT PRIMARY KEY, + bet_match_type_id INTEGER, + block_index INTEGER, + winner TEXT, + settled BOOL, + bull_credit INTEGER, + bear_credit INTEGER, + escrow_less_fee INTEGER, + fee INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_match_resolutions VALUES('1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887_a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33',1,310018,'0',0,59137500,NULL,NULL,3112500); +INSERT INTO bet_match_resolutions VALUES('040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b_62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2',1,310019,'1',159300000,315700000,NULL,NULL,25000000); +INSERT INTO bet_match_resolutions VALUES('578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f_479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183',5,310020,NULL,NULL,NULL,'NotEqual',1330000000,70000000); +-- Triggers and indices on bet_match_resolutions +CREATE TRIGGER block_update_bet_match_resolutions + BEFORE UPDATE ON bet_match_resolutions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_expirations +DROP TABLE IF EXISTS bet_expirations; +CREATE TABLE bet_expirations( + bet_index INTEGER PRIMARY KEY, + bet_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_expirations VALUES(13,'1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310023); +-- Triggers and indices on bet_expirations +CREATE INDEX bet_expirations_block_index_idx ON bet_expirations (block_index) + ; +CREATE INDEX bet_expirations_source_idx ON bet_expirations (source) + ; +CREATE TRIGGER block_update_bet_expirations + BEFORE UPDATE ON bet_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bets +DROP TABLE IF EXISTS bets; +CREATE TABLE bets( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + feed_address TEXT, + bet_type INTEGER, + deadline INTEGER, + wager_quantity INTEGER, + wager_remaining INTEGER, + counterwager_quantity INTEGER, + counterwager_remaining INTEGER, + target_value REAL, + leverage INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bets VALUES(13,'1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887',310012,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,50000000,50000000,25000000,25000000,0.0,15120,10,310022,99999999,'open'); +INSERT INTO bets VALUES(14,'a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33',310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,25000000,25000000,41500000,41500000,0.0,15120,10,310023,99999999,'open'); +INSERT INTO bets VALUES(13,'1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887',310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'open'); +INSERT INTO bets VALUES(14,'a067f79057992245507ea08e901e623918be2b0eb2d178e35b01f36da2d30a33',310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,25000000,4250000,41500000,0,0.0,15120,10,310023,99999999,'filled'); +INSERT INTO bets VALUES(15,'040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b',310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,150000000,150000000,350000000,350000000,0.0,5040,10,310024,99999999,'open'); +INSERT INTO bets VALUES(16,'62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2',310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,350000000,350000000,150000000,150000000,0.0,5040,10,310025,99999999,'open'); +INSERT INTO bets VALUES(15,'040e03dfdef2df24411a077cfe5f90f3311bbb82bb3783ea2d7e6f484afd3e2b',310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,150000000,0,350000000,0,0.0,5040,10,310024,99999999,'filled'); +INSERT INTO bets VALUES(16,'62ece578c6760773bd4252922a7a0af87da1a1c308f32423e20cf49a369ea0a2',310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,350000000,0,150000000,0,0.0,5040,10,310025,99999999,'filled'); +INSERT INTO bets VALUES(17,'578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f',310016,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,1388000200,750000000,750000000,650000000,650000000,1.0,5040,10,310026,99999999,'open'); +INSERT INTO bets VALUES(18,'479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183',310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',3,1388000200,650000000,650000000,750000000,750000000,1.0,5040,10,310027,99999999,'open'); +INSERT INTO bets VALUES(17,'578d8026c9a3a9173fdb7d5f10c6d5e7d49f375edf5fd8b3f29ccb37a8b42d1f',310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,1388000200,750000000,0,650000000,0,1.0,5040,10,310026,99999999,'filled'); +INSERT INTO bets VALUES(18,'479b0fbec468381f1e27332755b12a69800680379d0037e02f641265a8beb183',310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',3,1388000200,650000000,0,750000000,0,1.0,5040,10,310027,99999999,'filled'); +INSERT INTO bets VALUES(13,'1075391072b01264a783bf31205a83abdf7356c8c405753d3ef8599f852df887',310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'expired'); +-- Triggers and indices on bets +CREATE INDEX bets_block_index_idx ON bets (block_index) + ; +CREATE INDEX bets_expire_index_idx ON bets (expire_index) + ; +CREATE INDEX bets_feed_address_bet_type_idx ON bets (feed_address, bet_type) + ; +CREATE INDEX bets_feed_address_idx ON bets (feed_address) + ; +CREATE INDEX bets_status_idx ON bets (status) + ; +CREATE INDEX bets_tx_hash_idx ON bets (tx_hash) + ; +CREATE INDEX bets_tx_index_tx_hash_idx ON bets (tx_index, tx_hash) + ; +CREATE TRIGGER block_update_bets + BEFORE UPDATE ON bets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table broadcasts +DROP TABLE IF EXISTS broadcasts; +CREATE TABLE broadcasts( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + timestamp INTEGER, + value REAL, + fee_fraction_int INTEGER, + text TEXT, + locked BOOL, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO broadcasts VALUES(12,'1a5b6320346fcb5f7b59ce88553ef92738d2f5ba0a7477e898df85b2730a0f1a',310011,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000000,100.0,99999999,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(19,'16a5d04f339e5765125c4b2fdda91e45e135e44df489b97805b5d3bae50a6485',310018,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000050,99.86166,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(20,'65c96e80d7bfe2c7b00086196a7fc38889d91f5907658a6bbe795c89ef90ce37',310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000101,100.343,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(21,'43232e4a2e0863cde59fb404a8da059c01cc8afb6c88b509f77d6cbfa02d187e',310020,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000201,2.0,5000000,'Unit Test',0,'valid'); +-- Triggers and indices on broadcasts +CREATE TRIGGER block_update_broadcasts + BEFORE UPDATE ON broadcasts BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX broadcasts_block_index_idx ON broadcasts (block_index) + ; +CREATE INDEX broadcasts_status_source_idx ON broadcasts (status, source) + ; +CREATE INDEX broadcasts_status_source_tx_index_idx ON broadcasts (status, source, tx_index) + ; +CREATE INDEX broadcasts_timestamp_idx ON broadcasts (timestamp) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table btcpays +DROP TABLE IF EXISTS btcpays; +CREATE TABLE btcpays( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + order_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO btcpays VALUES(5,'90eb885df58d93c1d5fdc86a88257db69e6ac7904409929733250b3f7bbe5613',310004,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',50000000,'04d5809f0085bf2655c500a8c65d6d8b42dd373160fb431af05792b0f30b63a6_98ef3d31d1777ad18801e94eef03d4314911ac03d7a82483b40614ea5cf80e52','valid'); +-- Triggers and indices on btcpays +CREATE TRIGGER block_update_btcpays + BEFORE UPDATE ON btcpays BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX btcpays_block_index_idx ON btcpays (block_index) + ; +CREATE INDEX btcpays_destination_idx ON btcpays (destination) + ; +CREATE INDEX btcpays_source_idx ON btcpays (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table burns +DROP TABLE IF EXISTS burns; +CREATE TABLE burns( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + burned INTEGER, + earned INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO burns VALUES(1,'63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2',310000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',62000000,93000000000,'valid'); +INSERT INTO burns VALUES(23,'ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa',310022,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',38000000,56999887262,'valid'); +-- Triggers and indices on burns +CREATE TRIGGER block_update_burns + BEFORE UPDATE ON burns BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX burns_source_idx ON burns (source) + ; +CREATE INDEX burns_status_idx ON burns (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table cancels +DROP TABLE IF EXISTS cancels; +CREATE TABLE cancels( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + offer_hash TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on cancels +CREATE TRIGGER block_update_cancels + BEFORE UPDATE ON cancels BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX cancels_block_index_idx ON cancels (block_index) + ; +CREATE INDEX cancels_source_idx ON cancels (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dividends +DROP TABLE IF EXISTS dividends; +CREATE TABLE dividends( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset TEXT, + dividend_asset TEXT, + quantity_per_unit INTEGER, + fee_paid INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO dividends VALUES(10,'f3cb8e3c39c261fef8d71c5222b8864bee3c7c1c4ec342430cff08945273779f',310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB','XCP',600,20000,'valid'); +INSERT INTO dividends VALUES(11,'15741649c83a752d61662fe00bd28b1c33dfd7816cb92225a0a61008f9059a59',310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC','XCP',800,20000,'valid'); +-- Triggers and indices on dividends +CREATE TRIGGER block_update_dividends + BEFORE UPDATE ON dividends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dividends_asset_idx ON dividends (asset) + ; +CREATE INDEX dividends_block_index_idx ON dividends (block_index) + ; +CREATE INDEX dividends_source_idx ON dividends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table issuances +DROP TABLE IF EXISTS issuances; +CREATE TABLE "issuances"( + tx_index INTEGER, + tx_hash TEXT, + msg_index INTEGER DEFAULT 0, + block_index INTEGER, + asset TEXT, + quantity INTEGER, + divisible BOOL, + source TEXT, + issuer TEXT, + transfer BOOL, + callable BOOL, + call_date INTEGER, + call_price REAL, + description TEXT, + fee_paid INTEGER, + locked BOOL, + status TEXT, + asset_longname TEXT, + reset BOOL, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index)); +INSERT INTO issuances VALUES(6,'1ba2a0b4ee8543976aab629c78103c0ba86c60250c11d51f9bc40676487283b7',0,310005,'BBBB',1000000000,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,0,0,0.0,'',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(7,'3f9e2dc4f7a72dee0e2d3badd871324506fe6c8239f62b6aa35f316800d55846',0,310006,'BBBC',100000,0,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,0,0,0.0,'foobar',50000000,0,'valid',NULL,0); +-- Triggers and indices on issuances +CREATE TRIGGER block_update_issuances + BEFORE UPDATE ON issuances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX issuances_asset_longname_idx ON issuances (asset_longname) + ; +CREATE INDEX issuances_asset_status_idx ON issuances (asset, status) + ; +CREATE INDEX issuances_block_index_idx ON issuances (block_index) + ; +CREATE INDEX issuances_source_idx ON issuances (source) + ; +CREATE INDEX issuances_status_asset_tx_index_idx ON issuances (status, asset, tx_index DESC) + ; +CREATE INDEX issuances_status_idx ON issuances (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sends +DROP TABLE IF EXISTS sends; +CREATE TABLE "sends"( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + quantity INTEGER, + status TEXT, + msg_index INTEGER DEFAULT 0, memo BLOB, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); +INSERT INTO sends VALUES(2,'5849bd15f5a73840e4babd220ed450d0f46128479d6bb7eaf9f4e98a409c97d4',310001,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,'valid',0,NULL); +INSERT INTO sends VALUES(8,'30bfb2793bd1a65e5993edb9c3268db31bc96b8bf1f6e3bef037da4f4e93bc65',310007,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,'valid',0,NULL); +INSERT INTO sends VALUES(9,'7da21bef68887cb50f8582fc0dda69ee5414993450dfab7437891b5a1117e849',310008,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,'valid',0,NULL); +INSERT INTO sends VALUES(24,'53290702a54a5c19d9a5e2fc1942c2381a4d2283f30d645579b982ae0dbb7fcc',310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10000,'valid',0,NULL); +-- Triggers and indices on sends +CREATE TRIGGER block_update_sends + BEFORE UPDATE ON sends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sends_asset_idx ON sends (asset) + ; +CREATE INDEX sends_block_index_idx ON sends (block_index) + ; +CREATE INDEX sends_destination_idx ON sends (destination) + ; +CREATE INDEX sends_memo_idx ON sends (memo) + ; +CREATE INDEX sends_source_idx ON sends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_match_expirations +DROP TABLE IF EXISTS rps_match_expirations; +CREATE TABLE rps_match_expirations( + rps_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_match_expirations +CREATE TRIGGER block_update_rps_match_expirations + BEFORE UPDATE ON rps_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_match_expirations_block_index_idx ON rps_match_expirations (block_index) + ; +CREATE INDEX rps_match_expirations_tx0_address_idx ON rps_match_expirations (tx0_address) + ; +CREATE INDEX rps_match_expirations_tx1_address_idx ON rps_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_expirations +DROP TABLE IF EXISTS rps_expirations; +CREATE TABLE rps_expirations( + rps_index INTEGER PRIMARY KEY, + rps_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_expirations +CREATE TRIGGER block_update_rps_expirations + BEFORE UPDATE ON rps_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expirations_block_index_idx ON rps_expirations (block_index) + ; +CREATE INDEX rps_expirations_source_idx ON rps_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rpsresolves +DROP TABLE IF EXISTS rpsresolves; +CREATE TABLE rpsresolves( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + move INTEGER, + random TEXT, + rps_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on rpsresolves +CREATE TRIGGER block_update_rpsresolves + BEFORE UPDATE ON rpsresolves BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rpsresolves_block_index_idx ON rpsresolves (block_index) + ; +CREATE INDEX rpsresolves_rps_match_id_idx ON rpsresolves (rps_match_id) + ; +CREATE INDEX rpsresolves_source_idx ON rpsresolves (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_matches +DROP TABLE IF EXISTS rps_matches; +CREATE TABLE rps_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_move_random_hash TEXT, + tx1_move_random_hash TEXT, + wager INTEGER, + possible_moves INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps_matches +CREATE TRIGGER block_update_rps_matches + BEFORE UPDATE ON rps_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_matches_id_idx ON rps_matches (id) + ; +CREATE INDEX rps_matches_match_expire_index_idx ON rps_matches (match_expire_index) + ; +CREATE INDEX rps_matches_status_idx ON rps_matches (status) + ; +CREATE INDEX rps_matches_tx0_address_idx ON rps_matches (tx0_address) + ; +CREATE INDEX rps_matches_tx1_address_idx ON rps_matches (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps +DROP TABLE IF EXISTS rps; +CREATE TABLE rps( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + possible_moves INTEGER, + wager INTEGER, + move_random_hash TEXT, + expiration INTEGER, + expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps +CREATE TRIGGER block_update_rps + BEFORE UPDATE ON rps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expire_index_idx ON rps (expire_index) + ; +CREATE INDEX rps_source_idx ON rps (source) + ; +CREATE INDEX rps_status_idx ON rps (status) + ; +CREATE INDEX rps_tx_hash_idx ON rps (tx_hash) + ; +CREATE INDEX rps_tx_index_idx ON rps (tx_index) + ; +CREATE INDEX rps_tx_index_tx_hash_idx ON rps (tx_index, tx_hash) + ; +CREATE INDEX rps_wager_possible_moves_idx ON rps (wager, possible_moves) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table destructions +DROP TABLE IF EXISTS destructions; +CREATE TABLE destructions( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset INTEGER, + quantity INTEGER, + tag TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on destructions +CREATE TRIGGER block_update_destructions + BEFORE UPDATE ON destructions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX destructions_source_idx ON destructions (source) + ; +CREATE INDEX destructions_status_idx ON destructions (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table assets +DROP TABLE IF EXISTS assets; +CREATE TABLE assets( + asset_id TEXT UNIQUE, + asset_name TEXT UNIQUE, + block_index INTEGER, + asset_longname TEXT); +INSERT INTO assets VALUES('0','BTC',NULL,NULL); +INSERT INTO assets VALUES('1','XCP',NULL,NULL); +INSERT INTO assets VALUES('18279','BBBB',310005,NULL); +INSERT INTO assets VALUES('18280','BBBC',310006,NULL); +-- Triggers and indices on assets +CREATE INDEX assets_asset_id_idx ON assets (asset_id) + ; +CREATE UNIQUE INDEX assets_asset_longname_idx ON assets (asset_longname) + ; +CREATE INDEX assets_asset_name_idx ON assets (asset_name) + ; +CREATE TRIGGER block_update_assets + BEFORE UPDATE ON assets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table addresses +DROP TABLE IF EXISTS addresses; +CREATE TABLE addresses( + address TEXT UNIQUE, + options INTEGER, + block_index INTEGER); +-- Triggers and indices on addresses +CREATE INDEX addresses_address_idx ON addresses (address) + ; +CREATE TRIGGER block_update_addresses + BEFORE UPDATE ON addresses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sweeps +DROP TABLE IF EXISTS sweeps; +CREATE TABLE sweeps( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + flags INTEGER, + status TEXT, + memo BLOB, + fee_paid INTEGER, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on sweeps +CREATE TRIGGER block_update_sweeps + BEFORE UPDATE ON sweeps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sweeps_block_index_idx ON sweeps (block_index) + ; +CREATE INDEX sweeps_destination_idx ON sweeps (destination) + ; +CREATE INDEX sweeps_memo_idx ON sweeps (memo) + ; +CREATE INDEX sweeps_source_idx ON sweeps (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispensers +DROP TABLE IF EXISTS dispensers; +CREATE TABLE dispensers( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + asset TEXT, + give_quantity INTEGER, + escrow_quantity INTEGER, + satoshirate INTEGER, + status INTEGER, + give_remaining INTEGER, + oracle_address TEXT, + last_status_tx_hash TEXT, + origin TEXT, + dispense_count INTEGER DEFAULT 0); +-- Triggers and indices on dispensers +CREATE TRIGGER block_update_dispensers + BEFORE UPDATE ON dispensers BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispensers_asset_idx ON dispensers (asset) + ; +CREATE INDEX dispensers_block_index_idx ON dispensers (block_index) + ; +CREATE INDEX dispensers_give_remaining_idx ON dispensers (give_remaining) + ; +CREATE INDEX dispensers_last_status_tx_hash_idx ON dispensers (last_status_tx_hash) + ; +CREATE INDEX dispensers_source_asset_origin_idx ON dispensers (source, asset, origin) + ; +CREATE INDEX dispensers_source_idx ON dispensers (source) + ; +CREATE INDEX dispensers_source_origin_idx ON dispensers (source, origin) + ; +CREATE INDEX dispensers_status_block_index_idx ON dispensers (status, block_index) + ; +CREATE INDEX dispensers_status_idx ON dispensers (status) + ; +CREATE INDEX dispensers_tx_hash_idx ON dispensers (tx_hash) + ; +CREATE INDEX dispensers_tx_index_idx ON dispensers (tx_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenses +DROP TABLE IF EXISTS dispenses; +CREATE TABLE dispenses ( + tx_index INTEGER, + dispense_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, dispense_index, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenses +CREATE TRIGGER block_update_dispenses + BEFORE UPDATE ON dispenses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenses_block_index_idx ON dispenses (block_index) + ; +CREATE INDEX dispenses_dispenser_tx_hash_idx ON dispenses (dispenser_tx_hash) + ; +CREATE INDEX dispenses_tx_hash_idx ON dispenses (tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenser_refills +DROP TABLE IF EXISTS dispenser_refills; +CREATE TABLE dispenser_refills( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, tx_hash, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) + REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenser_refills +CREATE TRIGGER block_update_dispenser_refills + BEFORE UPDATE ON dispenser_refills BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenser_refills_block_index_idx ON dispenser_refills (block_index) + ; +CREATE INDEX dispenser_refills_tx_hash_idx ON dispenser_refills (tx_hash) + ; + +COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.json b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.json similarity index 60% rename from counterpartylib/test/fixtures/scenarios/multisig_2_of_2.json rename to counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.json index a66a524937..0a1f8a5689 100644 --- a/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.json +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.json @@ -3,72 +3,72 @@ "burn": "0100000001bc17d46fd87faf74b56fb49498a3cec6b463645cae08ffb63f872d4181fe0b07000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac87812f0e000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "send": "0100000001bbc0fe76d6d8a22b988a0beb15c430fdb4ce63e9daf8b5a1aa008d8d721cde5f010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004752210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52ae781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb974529b7c2a7965ff221029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb5262f0e000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "send": "0100000001bbc0fe76d6d8a22b988a0beb15c430fdb4ce63e9daf8b5a1aa008d8d721cde5f010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004752210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52aee80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb974529b7c2a7965ff221029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed55b2f0e000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "order": "0100000001cc8076ce195eebcaa00627b7be9edf20d6fb695b7841351603cd24c7352f2463020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb974529b7c2a7965f0821029ea8cc75076c9fb9c5417f502a30fc28198b34982dbb629ec04b4f8b05a07177210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefdc51f0e000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "order": "0100000001a3e9b4d15f8a65b10f66234df48ba72057aac1b10c4f7d802489d232b703cdea020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb974529b7c2a7965f0821029ea8cc75076c9fb9c5417f502a30fc28198b34982dbb629ec04b4f8b05a07177210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aead15200e000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "order": "01000000014ecd83b03cce2184d9e0f9c5919b1d0278bf4aa081cf7b2c67f5615908a0e282010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452d0f1e67965fed21039ea8cc75076d9fb9c541785f3bb0fc28198b34982db6d93ec04b4f8b05a07158210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef58c1f0e000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "order": "0100000001c061ff0ae290c81194efe2217e33085944045a7a229f9b38c9a34c78c1a25c02010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452d0f1e67965fed21039ea8cc75076d9fb9c541785f3bb0fc28198b34982db6d93ec04b4f8b05a07158210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae35f71f0e000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "btcpay": "0100000001f1b96cdd4208d8e72e18aa04dcbab6096a55540730c21d946136bb5fe5061a37010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0480f0fa02000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512102e34ccc12f76f0562d2061e675cec70cdcf431e5697e09058c48b078d5f94425521030539098ce7b41b980b7dca26067ecb381f6e6b231bdaf683027b48df50ca78ca210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae781e00000000000069512102c94ccc12f76f0562d2b0a4bb53c48a4320c277e12da05266452b4d3227965fc521029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeba39240b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "btcpay": "0100000001ee5a510cfa23f443be6843dff25b703114e29004e52c2c74e07fbd05751f88c6010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0480f0fa02000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512102e34ccc12f76f0562d2061e675c6ccecf0662330039f470086751173663cf57c42103add6ed97e8f98e7155a3705aaaf03aaa06fe3125525b16b2ecae4b1be7b44010210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee80300000000000069512103c94ccc12f76f0562d2764595882dfad384ee5c59fc9db179452b4d3227965faf21029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1ad9240b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "issuance": "01000000010fad02b58b3f0b6940585723b25179f8ff8bfce523cf9e9e5fe031e2f5fd07f3030000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512102f94ccc12f76f0562d2061e67436e926dc71a7fe497cceb974510d7f827975ff821029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb200240b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "issuance": "0100000001e2f7c2268e77259da19a1e287f2702bd065606ba7146a3bdc6a552ba9356bfb0030000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512102f94ccc12f76f0562d2061e67436e926dc71a7fe497cceb974510d7f827975ff821029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea2ba240b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "issuance": "010000000175c9f821ebdc70ea70d62296b977dfc4aeb555d7be2f34f16cb79837a90bd5dd010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103f34ccc12f76f0562d2061e67436e926dc71a7fe498cceb97452b4cb487965fa921039ea8cc75076d9fb9c32715caa9518e22198b34982dbb629ec04b4f8b05a07180210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeaac7230b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "issuance": "0100000001e2ea79992aeee13abd083e6132b5e1d218eb1248069ca772b6a3a4b460985993010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103f34ccc12f76f0562d2061e67436e926dc71a7fe498cceb97452b4cb487965fa921039ea8cc75076d9fb9c32715caa9518e22198b34982dbb629ec04b4f8b05a07180210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae2a9c240b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "send": "0100000001068fed98a02caf558481c2bf19bc6ec01c31bb6b8f36a8f963564d3432ef93b6010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004752210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52ae781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe497cceb97452b703b27965f0721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed86c230b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "send": "01000000010444808f68fdd011594f2e4df07156db66187a8fd294684fc6fb44b2b8c41833010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004752210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52aee80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe497cceb97452b703b27965f0721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae7876240b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "send": "0100000001ab038511e80c08e2b58dd65664b3e2992a3a5d395157d412fddaa8b7d6a3dbcf020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004752210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52ae781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d3029965f8621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0612230b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "send": "0100000001bebd8ccf6cb43d1b1ac5ab9447c36f1dfc812304df2b03dee15f3a2ab22a3de4020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004752210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52aee80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d3029965f8621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aec650240b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "dividend": "0100000001893f023e689bb8732879065527c9221de4b6cd432e2f0ecc4229e0bb8199640f020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103fa4ccc12f76f0562d2061e67656e926dc71a7fa1a8cceb97452b4d7540965fde21029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefed8220b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "dividend": "0100000001c9196a72ae21b0ec3843ca64d55a1ba07c1184813550fa0b7d7573532bb3487b020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103fa4ccc12f76f0562d2061e67656e926dc71a7fa1a8cceb97452b4d7540965fde21029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4e32240b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "dividend": "0100000001c38b08f48ebb26d17734d84a2f65748238675e5a7d467db3ef682e8f7173b24e010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512102fa4ccc12f76f0562d2061e67656e926dc71a7fa0d0cceb97452b4d754f965fb421029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef69f220b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "dividend": "0100000001811a83dd0f3db6eff7f083639a5b316ffa78cb169c8ce8a0ba7cae3bb03bc7cb010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512102fa4ccc12f76f0562d2061e67656e926dc71a7fa0d0cceb97452b4d754f965fb421029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed613240b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "broadcast": "0100000001c759506243b73f1619c2a1664fad1271024e5b762bdc4f5b0c349d1a30847b2e010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ec75a26a3f0cceb97452eb8d2d89f0a7b2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeee66220b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "broadcast": "0100000001977b32193a3562921d81acd1b8f2e61258b6d2198d92597b5340379303989ec5010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ec75a26a3f0cceb97452eb8d2d89f0a7b2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae5ef5230b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "bet": "0100000001726e86553a6b0094ff6d3c58fdcc271db0ec85335c885019ede539e52ffe70fb010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb95bfdbcd3227965f5421039fd5b435076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a07174210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1c0c220b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "bet": "0100000001619d3d45dba19055d0759bd577608268cb0ec5e6661e0590a6288fe528cc150a010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb95bfdbcd3227965f5421039fd5b435076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a07174210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeaccf230b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "bet": "01000000012b83f151dc2cebb5e1b41aa11a048d413613f43064654dfb1a1d7713f3c9e244020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb9638530d3227965f7721039cd1f115076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a071ee210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4ab1210b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "bet": "0100000001b8c043c3ceed99b49ce0168413dae8d278080c47ef8c5c9d7305c1d4e3656bc3020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb9638530d3227965f7721039cd1f115076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a071ee210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefaa9230b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "bet": "010000000112ee6bdd45f6ab5e1acbfe442166f504662c7cd1e06cc465217562329fedb508020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb9fb5facd3227965f6b21028a745ff5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0717a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae7856210b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "bet": "0100000001a111c8c770e1c2df39e92c58efd8a8dca3f4e7fded131484aa194c03a07cf723020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb9fb5facd3227965f6b21028a745ff5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0717a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4884230b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "bet": "0100000001685f9ab85f6803b920bf3dd738cd1393438f8ff164b570ff7169214fcade0937020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb8399b8cd3227965fdf210396581df5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a07111210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea6fb200b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "bet": "0100000001fd7395ae2de34d06355ec3b2c547940c535b06611f75aaa5441152837a92a1a5020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb8399b8cd3227965fdf210396581df5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a07111210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae965e230b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "bet": "0100000001723579811777586f05199c60912d8f71592f440191841d8bb90ce8021133bb75020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e903f7c29b7a3f0ccebbbf13ccd3227965fca2102b816faf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a071fc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed4a0200b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "bet": "0100000001750c78481a3b5cca7a3742195206d5dd5cee914e1c29c0131d97a93a85c5a46a020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e903f7c29b7a3f0ccebbbf13ccd3227965fca2102b816faf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a071fc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee438230b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "bet": "01000000014446a5e444cf948114f6459f5aa8d2035add9421849e1b77d1860ae37a194c67020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0ccebb1fb1dcd3227965f282102b21cdbf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0712a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0246200b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "bet": "0100000001a1ed726ac04a34ebb1d608036700234618a3812ac9140d45cc130a922ca7ce91020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0ccebb1fb1dcd3227965f282102b21cdbf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0712a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae3213230b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "broadcast": "0100000001b9712bafb721545346155597be27170d1cb4f9efbc2a82bbd9693a84b2a11b4d020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ef55a2754d5a317861b2b0179679f0aff2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefa0c200b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "broadcast": "01000000014a1c5d22d9dcb3e362beb64f850858ca71ab3ff12ecaa029779c89d9e6c245c3020000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ef55a2754d5a317861b2b0179679f0aff2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aebaf4220b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "broadcast": "010000000152141e10fe6f4206571c49949f045b5e717f9e699d315ee5e450f3e8f60a123c010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ea25a26b6037aae368e2b0179679f0adc2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef2d31f0b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "broadcast": "0100000001d4425925776bb6c8a0be01c7fed60390145e93398bf35ee57d875d7c1b9273c4010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ea25a26b6037aae368e2b0179679f0adc2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae42d6220b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "broadcast": "01000000013f09fbf7c2807b757adc2dac86bd30b810023fe57b0b3738e39b9e3cae36b0f1010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295e0e5a7fa3f0cceb97452b0179679f0ac02103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeea9a1f0b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "broadcast": "0100000001c01d5e8eb2aa009255776705e6de5acabe81dae254bb2d50c12eb42aa18e38c9010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295e0e5a7fa3f0cceb97452b0179679f0ac02103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aecab7220b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "order": "0100000001a3aa33aabaa7ae2bb682ec8f237d991da876384e4e641b1741251cc20e9a1963010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fe497cceb974529b7c2a7965f9621029ea8cc75076c9fb9c541785f3bb0fc28198b34982dbb629ec04b4f8b05a07191210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee2611f0b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "order": "01000000014e34cad875af0923425cf2644541163dff4c19a1dad08d5f7066d276062b2954010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fe497cceb974529b7c2a7965f9621029ea8cc75076c9fb9c541785f3bb0fc28198b34982dbb629ec04b4f8b05a07191210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae5299220b000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "burn": "010000000141af4cd7037dbe586cd4d1842268876b5f229f0450931367e47bb292e3dabfdb010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0200e1f505000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ace96a2905000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "burn": "01000000011e12f41717affb5305a38655ad16d395bbc88fc6692f16e8a0826ea39e6a3c6d010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0200e1f505000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac59a22c05000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" }, { - "send": "0100000001f1e92068f4f2da1a1373c8720eca4ece8d3e5cc823bc01192063b2ce760a08df010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004752210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52ae781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d1537965fe121029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae17102905000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" + "send": "0100000001f1e92068f4f2da1a1373c8720eca4ece8d3e5cc823bc01192063b2ce760a08df010000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004752210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52aee80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d1537965fe121029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea77c2c05000000004752210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000" } ] \ No newline at end of file diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.log b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.log new file mode 100644 index 0000000000..eb3a03d24e --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.log @@ -0,0 +1,231 @@ +Creating connection to `:memory:`. +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 3.00000000; txid: 070bfe81412d873fb6ff08ae5c6463b4c6cea39894b46fb574af7fd86fd417bc; vout: 0; confirmations: 7'] +Fee/KB 0.00025000 +New input: amount: 3.00000000; txid: 070bfe81412d873fb6ff08ae5c6463b4c6cea39894b46fb574af7fd86fd417bc; vout: 0; confirmations: 7 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 2.37994375 BTC +Burn: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 burned BTC for XCP (5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 2.37994375; txid: 5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.37994375; txid: 5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 2.37984725 BTC +Send: XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (eacd03b732d28924807d4f0cb1c1aa5720a78bf44d23660fb1658a5fd1b4e9a3) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 2.37984725; txid: eacd03b732d28924807d4f0cb1c1aa5720a78bf44d23660fb1658a5fd1b4e9a3; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.37984725; txid: eacd03b732d28924807d4f0cb1c1aa5720a78bf44d23660fb1658a5fd1b4e9a3; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 1000000 +Size: 272 Fee: 0.01000000 Change quantity: 2.36983725 BTC +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0) [open] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 2.36983725; txid: 025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.36983725; txid: 025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 2.36975925 BTC +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee) [open] +Considering: 025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0 +Tx0 Price: 2.0; Tx1 Inverse Price: 2.1 +Potential forward quantities: 50000000, 52500000 +Forward Quantity: 50000000 +Backward Quantity: 100000000 +Tx0 fee provided remaining: 0.01; required fee: 0.00857142 +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0) [open] +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee) [open] +Order Match: BTC for XCP (025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0_c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee) [pending] +Order match has only -10 confirmation(s). +data_btc_out=2000 (data_value=1000 len(data_array)=2) +Sorted candidate UTXOs: ['amount: 2.36975925; txid: c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.36975925; txid: c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 387 final_fee 9675 +Size: 387 Fee: 0.00009675 Change quantity: 1.86964250 BTC +Order Match: BTC for XCP (025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0_c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee) [completed] +Database: set status of order_match 025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0_c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee to completed. +BTC Payment: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 paid BTC to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 for order match 025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0_c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee (b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86964250; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 3; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.86964250; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 3; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86956450 BTC +Issuance: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 created 10.0 of divisible asset BBBB (93599860b4a4a3b672a79c064812eb18d2e1b532613e08bd3ae1ee2a9979eae2) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86956450; txid: 93599860b4a4a3b672a79c064812eb18d2e1b532613e08bd3ae1ee2a9979eae2; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 2'] +Fee/KB 0.00025000 +New input: amount: 1.86956450; txid: 93599860b4a4a3b672a79c064812eb18d2e1b532613e08bd3ae1ee2a9979eae2; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86948650 BTC +Issuance: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 created 100000 of indivisible asset BBBC (3318c4b8b244fbc64f6894d28f7a1866db5671f04d2e4f5911d0fd688f804404) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86948650; txid: 3318c4b8b244fbc64f6894d28f7a1866db5671f04d2e4f5911d0fd688f804404; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 3'] +Fee/KB 0.00025000 +New input: amount: 1.86948650; txid: 3318c4b8b244fbc64f6894d28f7a1866db5671f04d2e4f5911d0fd688f804404; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86939000 BTC +Send: BBBB from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (e43d2ab22a3a5fe1de032bdf042381fc1d6fc34794abc51a1b3db46ccf8cbdbe) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86939000; txid: e43d2ab22a3a5fe1de032bdf042381fc1d6fc34794abc51a1b3db46ccf8cbdbe; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 4'] +Fee/KB 0.00025000 +New input: amount: 1.86939000; txid: e43d2ab22a3a5fe1de032bdf042381fc1d6fc34794abc51a1b3db46ccf8cbdbe; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86929350 BTC +Send: BBBC from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (7b48b32b5373757d0bfa50358184117ca01b5ad564ca4338ecb021ae726a19c9) [valid] +Total quantity to be distributed in dividends: 0.00000024 XCP +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86929350; txid: 7b48b32b5373757d0bfa50358184117ca01b5ad564ca4338ecb021ae726a19c9; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 5'] +Fee/KB 0.00025000 +New input: amount: 1.86929350; txid: 7b48b32b5373757d0bfa50358184117ca01b5ad564ca4338ecb021ae726a19c9; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86921550 BTC +Dividend: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 paid XCP per unit of BBBB (cbc73bb03bae7cbaa0e88c9c16cb78fa6f315b9a6383f0f7efb63d0fdd831a81) [valid] +Total quantity to be distributed in dividends: 0.004208 XCP +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86921550; txid: cbc73bb03bae7cbaa0e88c9c16cb78fa6f315b9a6383f0f7efb63d0fdd831a81; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 6'] +Fee/KB 0.00025000 +New input: amount: 1.86921550; txid: cbc73bb03bae7cbaa0e88c9c16cb78fa6f315b9a6383f0f7efb63d0fdd831a81; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86913750 BTC +Dividend: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 paid XCP per unit of BBBC (c59e9803933740537b59928d19d2b65812e6f2b8d1ac811d9262353a19327b97) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86913750; txid: c59e9803933740537b59928d19d2b65812e6f2b8d1ac811d9262353a19327b97; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 7'] +Fee/KB 0.00025000 +New input: amount: 1.86913750; txid: c59e9803933740537b59928d19d2b65812e6f2b8d1ac811d9262353a19327b97; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86905950 BTC +Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:33:20 with a fee of 99.999999%% (0a15cc28e58f28a690051e66e6c50ecb68826077d59b75d05590a1db453d9d61) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86905950; txid: 0a15cc28e58f28a690051e66e6c50ecb68826077d59b75d05590a1db453d9d61; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 8'] +Fee/KB 0.00025000 +New input: amount: 1.86905950; txid: 0a15cc28e58f28a690051e66e6c50ecb68826077d59b75d05590a1db453d9d61; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86896300 BTC +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86896300; txid: c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 9'] +Fee/KB 0.00025000 +New input: amount: 1.86896300; txid: c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86886650 BTC +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0) [expired] +Expired order: 025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Considering: c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8 +Tx0 Inverse Odds: 0.5; Tx1 Odds: 0.6024096385542169 +Potential forward quantities: 50000000, 41500000 +Forward Quantity: 41500000 +Backward Quantity: 20750000 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Bet Match: BullCFD for XCP against BearCFD for XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:00 that value, leveraged 3.0x (c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8_23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86886650; txid: 23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 10'] +Fee/KB 0.00025000 +New input: amount: 1.86886650; txid: 23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86877000 BTC +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee) [expired] +Expired order: c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86877000; txid: a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 11'] +Fee/KB 0.00025000 +New input: amount: 1.86877000; txid: a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86867350 BTC +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Considering: c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8 +Skipping: leverages disagree. +Considering: a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd +Tx0 Inverse Odds: 2.3333333333333335; Tx1 Odds: 2.3333333333333335 +Potential forward quantities: 150000000, 150000000 +Forward Quantity: 150000000 +Backward Quantity: 350000000 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Bet Match: BullCFD for XCP against BearCFD for XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:00 that value, leveraged 1.0x (a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd_6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86867350; txid: 6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 12'] +Fee/KB 0.00025000 +New input: amount: 1.86867350; txid: 6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86857700 BTC +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86857700; txid: 91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 13'] +Fee/KB 0.00025000 +New input: amount: 1.86857700; txid: 91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86848050 BTC +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Considering: 91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1 +Tx0 Inverse Odds: 0.8666666666666667; Tx1 Odds: 0.8666666666666667 +Potential forward quantities: 750000000, 750000000 +Forward Quantity: 750000000 +Backward Quantity: 650000000 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Bet Match: Equal for XCP against NotEqual for XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:36:40 that value, leveraged 1.0x (91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1_c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86848050; txid: c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 14'] +Fee/KB 0.00025000 +New input: amount: 1.86848050; txid: c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86840250 BTC +Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:34:10 with a fee of 5.0%% (c473921b7c5d877de55ef38b39935e149003d6fec701bea0c8b66b77255942d4) [valid] +Bet Match Force‐Liquidated: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8_23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1) +Bet Match: BullCFD for XCP against BearCFD for XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:00 that value, leveraged 3.0x (c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8_23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1) [settled: liquidated for bear] +Database: set status of bet_match c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8_23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1 to settled: liquidated for bear. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86840250; txid: c473921b7c5d877de55ef38b39935e149003d6fec701bea0c8b66b77255942d4; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 15'] +Fee/KB 0.00025000 +New input: amount: 1.86840250; txid: c473921b7c5d877de55ef38b39935e149003d6fec701bea0c8b66b77255942d4; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86832450 BTC +Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:01 with a fee of 5.0%% (c9388ea12ab42ec1502dbb54e2da81beca5adee6056777559200aab28e5e1dc0) [valid] +Bet Match Settled: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd_6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75) +Bet Match: BullCFD for XCP against BearCFD for XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:00 that value, leveraged 1.0x (a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd_6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75) [settled] +Database: set status of bet_match a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd_6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75 to settled. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86832450; txid: c9388ea12ab42ec1502dbb54e2da81beca5adee6056777559200aab28e5e1dc0; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 16'] +Fee/KB 0.00025000 +New input: amount: 1.86832450; txid: c9388ea12ab42ec1502dbb54e2da81beca5adee6056777559200aab28e5e1dc0; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86824650 BTC +Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:36:41 with a fee of 5.0%% (54292b0676d266705f8dd0daa1194cff3d16414564f25c422309af75d8ca344e) [valid] +Bet Match Settled: NotEqual won the pot of XCP; XCP credited to the feed address (91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1_c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a) +Bet Match: Equal for XCP against NotEqual for XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:36:40 that value, leveraged 1.0x (91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1_c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a) [settled: for notequal] +Database: set status of bet_match 91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1_c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a to settled: for notequal. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86824650; txid: 54292b0676d266705f8dd0daa1194cff3d16414564f25c422309af75d8ca344e; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 17'] +Fee/KB 0.00025000 +New input: amount: 1.86824650; txid: 54292b0676d266705f8dd0daa1194cff3d16414564f25c422309af75d8ca344e; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86816850 BTC +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered BBBB for XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (6d3c6a9ea36e82a0e8162f69c68fc8bb95d316ad5586a30553fbaf1717f4121e) [open] +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.86816850; txid: 6d3c6a9ea36e82a0e8162f69c68fc8bb95d316ad5586a30553fbaf1717f4121e; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 18', 'amount: 0.00001000; txid: c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8; vout: 0; confirmations: 10', 'amount: 0.00001000; txid: 23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1; vout: 0; confirmations: 9', 'amount: 0.00001000; txid: a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd; vout: 0; confirmations: 8', 'amount: 0.00001000; txid: 6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75; vout: 0; confirmations: 7', 'amount: 0.00001000; txid: 91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1; vout: 0; confirmations: 6', 'amount: 0.00001000; txid: c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a; vout: 0; confirmations: 5'] +Fee/KB 0.00025000 +New input: amount: 1.86816850; txid: 6d3c6a9ea36e82a0e8162f69c68fc8bb95d316ad5586a30553fbaf1717f4121e; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.86811225 BTC +Burn: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 burned BTC for XCP (df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86811225; txid: df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2; vout: 0; confirmations: 19'] +Fee/KB 0.00025000 +New input: amount: 0.86811225; txid: df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.86801575 BTC +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 +Expired bet: c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8 +Send: BBBC from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (abc5e16e5a7a1a7dd7d38ff1351b252a3813d40a695ab798f6a26cb904f91ab1) [valid] +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered BBBB for XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (6d3c6a9ea36e82a0e8162f69c68fc8bb95d316ad5586a30553fbaf1717f4121e) [expired] +Expired order: 6d3c6a9ea36e82a0e8162f69c68fc8bb95d316ad5586a30553fbaf1717f4121e +Checking for conservation of assets. +XCP has been conserved (1498.99847262 XCP both issued and held) +BBBB has been conserved (10.0 BBBB both issued and held) +BBBC has been conserved (100000 BBBC both issued and held) +All assets have been conserved. diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.sql b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.sql new file mode 100644 index 0000000000..30723a4643 --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.sql @@ -0,0 +1,1593 @@ +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table blocks +DROP TABLE IF EXISTS blocks; +CREATE TABLE blocks( + block_index INTEGER UNIQUE, + block_hash TEXT UNIQUE, + block_time INTEGER, + previous_block_hash TEXT UNIQUE, + difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, + PRIMARY KEY (block_index, block_hash)); +INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); +INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'a16ae7423db132c887ae41cc33b7fa48a0cc6571d5a49e0963be25ec8a9769b4','b8fb4fb649dd315851564165b076d636e5a85e043d59c11877bdccced38f1b3e','0d33b938e0bd30ec88fa61d4b1279c327711d3e94f9fcd58dd6bab8fe23bf3b2'); +INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'0cda5c4a26f0b23d5b948142dcd226b2718c57c9c6a481250128a7a1c8ad30dc','1c009ff73127980e51ba6a7035bec5c2a9650b5a184da1d55c3d807fa658f8e7','094df5694dd8630669535c0b566eaa1b1d00e42811f549e6865776a3cc741498'); +INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'657c31576766cf1f8a699a14e6c7493498673f1948bea1be4f639247f4d52d53','c674bb5077acb71ab19a6a4a8f779015846135e7b93a5006555fe1f4ad10c58e','87e820f139354e098f6e121d5d7939d275e5dc2c07a651eb8190552a79c4e357'); +INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'e11e7eeb21ff539c27324c94a407dc6f04c739f3ed9841f9f661bf4441e4d847','105a5c9915547d3ebfe733d284d6e812cada8e86a904510fc196e2f0af5b50a4','ad43b6dd6f07ed4a1eca97f2c12edbb872d7ccd527ce1b6b355f4caa8b399446'); +INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'2742a3e99eed62c09d9ecdaf501aa69b0d0b21fc092ca061448d5016957f35e0','369b47f51b512708e680edc5ba459b91e2a514f5a5c7cb8435670a4b3ed34dbe','a6fe1dc99834260e61ae31cbe5962803c27900e3c855221e1842242881da8bad'); +INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'49f526a56f21491c797e8e2559f722ded6f6990b1f69c55dc38791d8d30f4048','f0c2ddd7c39b14fc55d8518c65aa0811fe7807ebd1eebb4b66df8459f9e5352b','99345e90afbba954c4c6220228318ead493df3b633294d741a06dcc99a9ab1a8'); +INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'78787c4c9537fc4db5d1dc7d31d4fab6b445d57021aab1a38d4bd6a9404713c5','877117b3bd10ddbe6e46f417845085a6bdecd86a4961b99c80e991b4c51e0f5e','68b48727f593d927cfb52d80c9b1c1f6ecbda05ec4f13b850e8916509be93acf'); +INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'5cc2599b63007433426c220c59a777b5c37b1165595f2ba239c3ce578c8055ab','702a5772ce8529995f7a66a244e8be495e3f7cbedb7b09f47e3d5aa941c7f4c1','6ad000dfedf069ea9c9a10eff00785855d1e605bbd93a1f9e385d404a744bec1'); +INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'9550db622e679ff3d63d814f9ffa743d57eb12491b213ef6474617a6c738c3fa','6c536f7ae10567cbd91945e3e958640e6c65408f83e4a1d93e705950ba39de1b','1be9ec17776a1370ccc44413183e98fda80ddf30d00c88fd456c0f1972b2e962'); +INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'08c005dd5bae7f21ca27803d75318ac4b968c6d4dd2c275ef284c03fea43b189','8f8156aca3441754221fbf9cc21b0e7d877a533e00f63950be3f95d0a9305433','84aa18e6845a86d075990e9f448e283ace174d439cef8a204c715eec7c7c44ec'); +INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'07f48634d06e6be1d800e068cd213a648517fe167ed89c355d9db966897ed7b0','c5956a9750e786639ceb4a252a219afef6abb753037888c90ebf17a5c5db079f','924b04f992b931f5b45227635ffdbdf85344804c549f0ca15fd0336925ecc423'); +INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'8d0be0b3731bdd0d611e81b48efa6c706a983990f31bc563d57893f705b73aa7','219d47523246e5c4ffa99ae9c29bdcfdf9f419bff3d21da76fdc91cfe99fc28d','c3253cfb07fdccdabae0ad13e37221b69f2953e0941ddca25638f03ade05f482'); +INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'e3de05180536ad40eb9007f19ccb819fee0586cb9e7c414dc560e506ae5c09b7','ce6072bd562a52051fc530ec552aa343e4980a1b236f1cb8318c415d3eb2e851','d6dc93c097f7022b6b875d168e91e6060c5466dd1f650d2340351cd8cca64b02'); +INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'e521556db091cc726fb38cbebfd10923e37dab652c51dca73a646fe5bd81bb96','1a1e24f2debcd4b5b1e350a71823758d3114335ac831367bc91c9e487b94c65c','3391ad9f9d91f39daec2264096a8e057c5e5928a4c2c274dbc99cd67804ec157'); +INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'1cd6d92fbbca9266135a35f20a4328d510c8d209ba6161dc8c9e9bfa69032c57','80ee1bd354b8e1aa1c2f57926fbd36c0d9e2dbd3f77d8f2e43d59b29bd8175a6','c26f84557ec57e6d4734f0415c4898aab3fe40a07f361025320bcf37b90b97f2'); +INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'62759ea6d5070225bd30253a42b6c68fdaf2c4165b1b221b8e7bdddeb26e9737','30a124b4460d985c715c7bbd85cfbe972a5caf457e45844e0a54daa258ca3376','3701b7042eef9b50072165dcc3080386222cf2c055ce9821a6606a2cb97c5298'); +INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'f9fc0dd4d98ac5e06e4f9673cf5678f9fc264cda23172e24427b833331b73c33','cdbbf3665287df62a1660198e00049d06f649f37c49cb76e9fb1eab12960e66c','5b923f6a2ed6afabcd84e77b59450e19260125ed0fd30ae419a046b953eb4720'); +INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'4a355b8e80a902030f384f58700d05da9a6efaae3f3ce0b1a056dc1250d9ec63','355616d4b8b8408ea7061e787ca35918b6d0417895a2a2ff224d207f0f76e02a','34cb2099fa481bdad61a935a8a23b675085eff85ae5c22c9ff2230cc653d3989'); +INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'57aee8f9c9b63342ceeea3a3162998e9034a3d624d6d85b19782943ce170cef5','7987b849a43c706d33e421d45e99ca6593c9aa8c69079522888f746a8d4ff748','0163077488a314856cf9629bdf2948c931926d1cc711ab75f29f60202cc6ec5f'); +INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'d11f94528a9e0034365e4388ee455f02102d2024c65e1428cdee28b6e5aa7e1c','14d0604fb6986f281715ae660221c79b7bfddf15cbc7da02c722e86b8e264d85','fb7286fd9840f46e2752478a1012f6eb793bfc3d2d2ac52650429bf6ddf959ce'); +INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'4397f5568bfcf8cc90d1e72b7c61e7cc6905a0d9d3b3890c33e2afb464a25fb9','5483ead85237ef0ceb3486e3c3e6ee1e5080a5dd602f805b811cedf996b8dbaa','4216eb59b503ce94afc9d5ae4efee150fb5c0a669a1ad605834cb96890922389'); +INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'16b7018344f7a97695eb17dc5921c4955b3f8cf4d9e70bd8628041c4033886b9','bd68fe9b7aef054c8a5925dff9ff140cb5c00eb611a8802156196ed486479ad1','d86987748ad55a5d7cb5c52a32298f95527a7f4c2006260eedc73c54038ebe7c'); +INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'c3c26212677f4aed4614b653f1e5da509f962c29502d22c84c1c5522bca0dcf5','109e820ac7d290ecec049098115ba6b467ba90ba624aa24326cc7e103e51b265','6b36c8baa17b3d2d4f7c2e8728d2e126843ab37c71d3584127c47a5fa06a1900'); +INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'420b753d9e2a4ae5c00cf65efccb9a657d2daeb19159075d1671a076d8c1ade1','8e03eae75b5f9306a0a8142296412f7271b17f8c751e9e8e1b1cbeca5418f4eb','25a580ee9dddb70011af8f38fe211eed291898e492ee8e419c50beeca0e45084'); +INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'786e9c043df5025bb8d123322e2dd9cba30cc433ff90a44b7b7036369565835b','6a80f89b076199d165801b34c7d292976e069920f2ae4184e09dad8411735b94','543d2316ebeaa6d6e92a48ebf9f3a68006768d399317ded704e99a782176e16b'); +INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'1a2e0585eb1a7f608b4ca4b1d252f555f87e7f16fff124ed869285ec17643059','a2110149cc4e90d1474c53bdf91e24f8bbb8931548542a6afda94bc343fe3a7f','2a591f98be409fb8ba7183b68552ec037672bdd460e1a240d7880302329cfcee'); +INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'44a1f10e2df25328c38e20c36029bff557c7a93784030ece591406df9c71ebd6','d087d907b7af1ac1171c61f00c756754fc94e0edf0dc265d9eced163a07357c1','fcc0f724b43bf4caf6e15635d4bffabe124bf8d6e329bb859f184369cc1e330d'); +INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'093f82c2b8e108242edc6dad72e5878700b9c33606c359e673bdfe65341db64a','5796b7de2e12cda876546b21e2a64e92b85792c201f39fe404e7fa6c395e78db','1f38bd0ef0d0f672c419f73279394710b38dd4a8b9c8c772a72e2b0bab456f25'); +INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'efac93e04f7cd9d3b1c0af3da102c29b50d940b4b5687fb0061b3b6e169290f6','5daed82ccefd923a597451b918ece6172dbc75df5cd53ea0f7e40065e3d0d929','dfe5687c4b803b840ba94b69de549b3184e83ad32dd47c577e6dc288e0d8b440'); +INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'1fa464e853787685a588de6dab287456de7a0efdcd76052a41ddaf5e2f85a648','818415429923b4a38cb65dddb4e8b8a17264cea0188e905d4a19db340e98ef82','6432c2641a9598d40023ef6516d4c1fd534faee73e8f65fec7d951a9240e15b6'); +INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'fee866f1cf6e5f83010b97e0e9d88b54ce43fdf45e89081ba3b2fe07b62434fc','7e3fb0dc1ce885afb71be88ad0ca3b189202535d328ff70bda7cceaede6813bb','f2b061f869e0cec8b346fd9ed9ae4e5273d4ade5e15fd103f04d3d7d82b3e2f8'); +INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'11ed526c46610698e7a4f102ae91755a541d668750ec3bc10decd0c1709d1115','e3044e5fc57d122eb707d271ca1f4248358a8f477a6466cedb739e7799351bb8','7ac6f2032996d0777b568c480ae6b477837419b596c9216b5d9de6342f615313'); +INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'7930e5a2c6150df64dfd995801aec68ce11df292e206f08f7ff20eda9ca2d017','cbe01ce5a4da72538e9310180de025f141ea8baf1b6eeede8164cac3488532fe','22bd28b5f90ed4e1b268bfab0091210fa9f94de12a3b29a382b959b325ea7f3b'); +INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'c5834a54b3ad7f9fdbb18a87c8cefe867eff2ba1ae5bff238a3a041431d0afdd','81bceadbd9f9b956ed25021e2e0a9f4217c7424522105f8a0ba41c9f78234fcd','000174dd998ddb31521007cdcfca24aab7b00460e29feb28515be4eb5b7c08ed'); +INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'5a4b3f29cb1554ae8f670955df4dde45fdcc57623a50ca7d8f2c78ad79186a7a','0ec430eb4c16f386b5abbd6586133741dfe6c19eb820d388810f3680442d363a','14c4476f13d5dc770f5acd593390382e6b9e44cba8b3e06dafd4a4395c241753'); +INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'b81834ed9e92514fe7d277378be72e1f81043a615a4b67cb67dbcf97e3c3b43e','a883860baff0c6dec150c9d80b8a640401e191312eeebd4e9f21914e7803c46b','edce37299b92286ee36e429d15533a22d505176a8fa2490af7b3bc9e9f73df6a'); +INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'736adff04611f10a4e384b5d5c44651bdf037c0caeb8dda5bedbbc6d18d04ca2','821ad697a76d9a35b14a7c388b65b4f3a86fc66c42e02af6d568f73e2586beec','195d6ef0caed7b404f28473b5552a843d8d826d83ffc480c273b2d7089e076a5'); +INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'34d49fb14a7ec85ebd02ffe04768f5aa7382ed0ac7f9ae903e71567dc5d9ab67','c5ff4e50b07b755c23a6d9ca6dd5efe71a2728c4c662418fab814993be455308','5c9ee780537742df1946f3094708db5483fa15b7a8ae4964bb26b4aa7606ce8f'); +INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'9bfc3bf0ed35dd256f0df04c813dab9dd818238163e6b01842e18815971e7010','8a2ea429a26990e70f9c8937d11c58c986f991c55f196416344847435c670849','fae87a35faf37ed130981ba06f4dbd4119142852211b7c2d0edb06e20f82a9ad'); +INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'da7a63f22053d1713c805684d14695c31670eaf848bf23eee3331e679744f291','9f186391b30cc438ae59dabfb18dfca8811193a8fe37cada73d513ad688a80f0','4271bc30aca11720e97ad5dfbfd6fc95695e2b7b48d121e948ad861d70286295'); +INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'ddb485115b64342bcb172cc3e77b20effb1294e635459119b59179f3b6a87d66','f73c8b5e92181566aeee4ec42a1e50b950fd18680c69c58fe20b5288a915d7e9','9535727cbfbe6126f1f6b5ba2fb132876c693ccb8b2a9d88bc35bd79db6478fe'); +INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'b58d05ae5f282f7904c7a759ae5624194b5cb091f43f05d738cb4002a999c26d','73ee837bac9153dbc94c23879192b6c2fd71a9a6148502e8c4693bd342c4feec','e2f12f531534c8720ba40208f9e9fb7530c9bd0f6363f87ad821a760bd467d1c'); +INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'c18e1989fccd8bc7168ebf2acc035c224a9010b428b81c814683b0ce1e244113','9ef577154ca6e451585e9dcc4c3690d496b8a666856987194c4e41414743945f','1f448558f13e1ab7548051b8cdea83693075da2cf0e712729933ebfcd8ed5544'); +INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'1a935492fce6a168d9aafd24246bba6f5615f53a47311549059b21adc6a67154','29f3ff5d49a8c6ffbf0ddc41a5e45fd3b777fd7c9ea60a914191fc551ac46ea4','329095b38783945f0438c00b0d8bb1ed412b925708b7c49708459a58f2187625'); +INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'536611cb3cb3005f8c4ffc5b8ed8271734448b5d6f49bd47eb0456bc4ee207e4','6f22c984234616fa84a474dc80c5d5e25ccdbec1a84b0cabb279505e93aa4d6c','29e7e34f0ccbdb56b86d97b5459d9d3331d8d97ce29285e95f476ac3ec2b167b'); +INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'ebbeea29c073c61dad3e091302cd945a9926741db0dc6a918792c4c01b8cc30c','a1d1a029c0bcbe481f8ba760714e266ff9e759844517ceef96bbaefb05652dcd','4a2b65fdf0b5ccd5b5ad0b094c17b8140a46cd7d93e35eb83917b37d0972b344'); +INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'d9baff8bec82f3c29f1fa69c9ddd456f1867f33a55d1648605ea7109270d8e07','26f6ea6c1e350b91f4757619dd52bb7a2b2bad7277497f0d4e1d61b363eb7a99','22337583c94fa2b84ac857e1306fec9c721627f07a6ffdf319e67ab81ab4a15e'); +INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'09ad4a6bb3f671e6ac6d595bcbfb82371cc41f35c309142678eb5b7df97a5de5','5e32dc4d14838fdf0460146fd87eeb59ece3416bb7104362d24fd6d2bf0fe963','03ecde14c3c1592af13d9dcc0233ec5ac237d121c5f9fb955d4a17cd6d05d07c'); +INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'208200708851a32b0ffaecade58f78f8ba7d5820457c582d5ca127e16fec0952','c0a8253cff82f71d9a90c7b982e5d5093d5c2bbc2ee2859d9d7d09afbef56192','bf94f18fc7172af0d99ebcbd3bb59b452016aee141836b6229b7505205a91173'); +INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'9d1a7335d989bb73b0363bc88da6dd82c0fbaf064b1d70708b0aa2f6a8a9958b','c07861a54cc9537b7a2486e5a7e6366cd04413fb1307712ec6af55588dd22cfc','9ab3d00f99cb4dd23e91fd254ee0ebab584fa7ceebd7c7dfd3a66111f583d795'); +INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'2fd9039e49fcbb070315defae275bed858cfbb539bc4db8f2ec5f5ff6d69ea25','0ae948495f47c1ad343052f786467c6236cd6ca23dce0c628503a44ada8f8329','7d6198f16eba9082f4e5b96702453fe1befcada3d87e8d4513cffde41de1b10f'); +INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'2e97864865a020b04ed60b22c347d9dbebce5d00abce86c2b3a5054a3184699b','986536c5e9cec38d9b78bef44e21e73f93a654b9c421c7822dcba475b14f2127','e787ea88b914f142323f0edbf50de7c40e94af60b75fbc899219c754f52e7b43'); +INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'f6a8e9f4cde78fbf6c9a5ea176312116f3813f2c0bcaee6c92f3beb13a8c3899','4ffb95c683e1839d31018cc7ec92e978014b8cd32f308c2819ff2e79ff60fa2d','4bbeab1332e58b0b0d218e749ebabb4f43fc61380d8a2f48d519069575cb4ff0'); +INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'1d84e4657febaa291b4873d808d9ab433370227976196fd6436a65839c3575d1','0ed99730b61327cff9ed15d8585f70d7629b2b10150a717093dac4fafcc4e737','b5f1307a1d63f12d7d5a827215f6dcdda752e6101c10b551b4dd3021a8353f51'); +INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'083f6b773191caaf1844f47c53077e8724e100d0b46461ddaa642b88d5265c9a','69aa5d1c74c026da7b7cebe352bd6d907a31174cfd6f346e09382b0cf3fb8239','e8b688e4971f1591b60346987372d570e46de724dad0985775cd2eca59340270'); +INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'b1302087b804fc5753df5a4d8aaf8626e80ff99b429f52fed97767b051c24e8c','e35d2a19e5b60e2534a36d8c1d0c14c6211d56c29b4aa4953a14bf0b83bcc405','bf91f883b2bb09be033bd94037527ee7e0b95858cba4c1ae7b1886912b2f3abc'); +INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'956c9ca0b51eaba7343703a165eb96d5947fc764457ef3dde5ca90c18d3b2f3d','165a88d3d459ce6f4f37cc2ddb1c365dd01542b102dc68181d41b95ebde044dd','546c3eafd4419035fed133f98593c9f7e491c974022b48571bbbf2cd5a8fec6f'); +INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'e86cae3e73aa13e8498a98de335ed0cbdb7899b24e91839bbf0f50aa22355ecb','37394f57952a82ab5fb6ceb7323152d83f3c911a533e289c55b531fc83269268','c5c6e3465cfb0da3dfd80de20624fed06930b4fc11f0c26875fc0f892705d00d'); +INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'54bd5e4fc1bc17df27f9e6f22b5e1facd82229a877e09ec0136f878f2da81344','ebd7b1c7c24aa51a0622e244d1b486d4bde8b1019d86e1d8845b6e90847ad09b','6deb012ad6098115b7080b0f17652addc9f8ed3c4c53f191a1a7722a0f623d94'); +INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'1403832427d4c482b0d2d925e08a72fe37f5aaa6af73e74f601f7e22fdad7662','cb71b795988456a345fd21a3c729005ab802707d54311480012920f07db40bc9','32be25f6f94592e8fda2dd6d02d4a5e03f5f55a0ddbea1569018d71bc636a53b'); +INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'7b08f124a953d0e5511b0698d3314f5ec71ebba77b94c4d236ff9738d5a587e8','cf47be21938b5a55ffb8eba6a9f63eb61b89e679b279d75080571832bf08c0e0','8661bbe6949bcfa031011e7c9fbf3ea97069a89c337b31f34bd5db65fb97062c'); +INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'1de158dfd18413618b9800236a2aa265d2fab497b09a839be408da8871b0960a','a9c1a3c24a410649e701fc0b321b2030b6fc35de7a2538a10e75b482cbe96b3f','a43f943d52cc4c31aa3004a1e0512d40c50442f70f34ca78010dbaf3e3e5d158'); +INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'aa4be540bad6cd762a02b77856c3d6a737d90245e71f61b63a426573bffb3a4a','93d0499dcc4fc819927eed8d1eec8b094eb5a4323b70d2cec33d568e31737ce4','a6b287105db3f2cd0ed750150a267798970a0b835ba26b303aef305a0270ec48'); +INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'49edce8190c2480fe3c6b3df7c7c5f13d34f67c3aef3b2aa12eaea603153aa83','a76d957ffb41dbfd83b8c92ad487582586cdf13ca49dc1dfc30e869afc8ca76b','5045b3c316b54ca6ab04270c47364493c46a9d66137f08f9316d4346c8e061fd'); +INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'a2a8c9946cf45490858deb15c8f277ec545854dfc02dc9d248a684c0c3544d6e','0270a3faca0bc1a674fbd3632a1edbe8363d5115db8af56f135493f09a63df30','4831dfd445e6c77b0c96b5b228cb2b99909319b0dd689882ab608f8a0829286f'); +INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'ca1e5d385fd9cec1184d28095a6f4a2ec2914d40cc016309fe322dbb335cf2c3','85484b37f06238496ca822d539fe09e0e2906d12cf5b6d77c6219af29ec7410a','6b3399075d1985177ae2607bb98c371373a8d08c4e13658ab53ccd2ee6b3ee4f'); +INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'73519f53874cc8cbe9052bf8dd18c590e0a4bd5bdc2a286c4930e8cfd006a993','9c360f75cdc0788ebf8a530fa967e8eaefc3876b19739dfef2f7307e1af414f2','bc76353d95f0712f9f6a4de1cb0ad581b9236aa4d80e70f7354291257e83f26a'); +INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'5de09a95e36480de84f9d3c8db3e18b7bf5145f8b6ee6bde57b5c3de11274cbd','b4a32df829f1f913a9077d0ecd83362230bf893ffd654703538c5fc1c30a181e','871e2eff902ad966494730ecb19de4af41f19e9f4db011d5a36d02b40aac71cd'); +INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'be6a452931358d500eda0fd2aa3a91b86483fa847a7bf350f23d33d85712592e','fc4f551737950e1293a8718899c3b74c2ce76d8d1f58d6e22d10976ffd15eb24','88f755b8be84f0968a16156b2405d73732a51d1d91b988bb6f5163ad22ed9dd5'); +INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'5940a47dfa1a1c8bc1e51f1e64100cd0604c74197c88b39f6f7a9d5b763a0b56','53ce1fdeb3b9e39930ad127bc86bc71e7b497f24cc34af2a022200db36ebfa36','66d8dcdf848971e191770b48d19307eebc6cf0a4dfdbc42e8665702ea7aee2cb'); +INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'6aebe68545207e7cc81d68c3aca801f0b39e276ac86e8e0130d5029eefb60e2e','0d482039b615aa55b721fef8ddaffcc2942838dbda8784940e9fdd8dba8b1465','670f8806bb2d6774b9532a214b0b96b46f05a7e7ea97ed9e038240cc962877d3'); +INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'d005aff752907b93e2dfe442896c8976203f0139fb67cda3ea1936aea495e008','8be094b2e99ec5c85a594d4a4059b7427ffbee3671190b84161fbf2fadb6f313','45e5f82650cb491fee52da85d34951347cbc21f45a2a3aad91dc3b578eae3081'); +INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'781f0ebe67964c25640f0bf5624e08cda546dbbb6648bd6e8d9f280c7f075f7c','9c5e049c1738beda53ffdffe18492b0af038a756278f2bdeaddaa1a726681ce5','ad8ddda8581f43f6b163f7eb8abfe4e90580130688d2d2e9b07066d787e71707'); +INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'83b5e1ca76fda895b144e8c03cda5fc3d18f6324b5413fd74923e51a94ccc53a','a7199dd9b360cc694f85a81ccf72fd614e6c0400d753132cb517ca9da55df86a','9ab3ecb9eadf1eb5aa022307ac9d9c5dee2409bfb5ea80a805f77eecb571b4e9'); +INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'4293be396327c0aa3c56c77a9152068cc32612692c76ba94e8961c59a9ad780f','833f9d3ae03e5819eec47318d948999dfbe35fcbe66766f985b6ca71eccae54a','bc32b51c38c69ca05e2c2acbcca79da7725d22deb4c62d049c90eee1b6695c73'); +INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'d08b93b609f1766534cb0c30502350b9e4ccc4a885ebff7633e9e5c5b52d8e90','7db8bbcaa76b087fbcdbd8f5b428b3587c494f0cd7d458a2d519abb0ef26f424','d286254b93f7058fb443173d1c8d21396e7e46db6f032f4d3a00e89439cd5a9c'); +INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'06c72d219df429f2873af74b6250f3d12996cce14496d151bf8bd4cf819532e4','8f6a902dd8d5d573658f07e8ac598ccc46ed49bff95b2a9ed89a051c852215a5','5063f699212050111932af0b5f830b4fe0e65ad290970c2c97769e7a31fd45ed'); +INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'0ff019cc4b9b8a394aad1b9f8f579fd5c4cc48a846e4fe71ab2f45226cec5a1e','e1ab0a4cbd4e60c5b1da333c5ef542bbc1d8bbd7709fdb35374c072a1f54d38c','108f6cc9ae320ad0746ee7dec480b368bf39659c9e9a51091f592aea0f24b0e5'); +INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'6ea40a02464725d0ba45b9969bdbb7529ae5e3ca794ae00abf4783bfc9667104','be6f6965b6ba8aae157eb48f28bce3fa91c3bbc22b88fc3ee8d4f126c1538032','4d086bb2185c2644b030c28d77e7c26464f510825491b965131df8e283c03e15'); +INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'076abf036bd51c47525fe4e638dbad403a8a1667a5b7c2f81ffc2a70e79b80a8','eb97110f496f9813e14f127af2cdcdb26d54e9745e274fe227fb0646cc132c29','0589262f37c9f13e0b83715664cf2661ce82e1002064404f1794ea862c8bda11'); +INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'8cc2e62f7b3ae2c89977ee9e31acacff38f944d00a978e9b0e48678487cdbe27','93c6c5967f4d297df962f2853f2a2ba3870f5692c8835413c08528cf243985dc','aef7f2f2683ddafb3c3d7647633936c81bb91b653ffcd6814bee93be849c7d7e'); +INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'ec86fa6786b598b091121fc2001650bc04668d26d88805efff7271312c76a373','e6cf70178316b3c594c60d10ac1ee3783f1dafe5054ce4c6fb932bf3c771f703','13294b54af9ed2609321ad0e67e9cfd01e875543aeae1b539ec3437423ab4a1d'); +INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'6b720db96b2d10816e5022ab8c61fafba49cc6bf484909fb500295451e61f768','254cf1d1ac865c611a3d9fbd78001152928a52ad94fd640c526e043ce7c0fdb3','15bf3288587ceaccdd4a03b520a19ae675ca5de4279f99a380c7b013c42bbb60'); +INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'d8c6fabb9b9dff0f1f3ba35e75c08be55dc4ded8dcf54e51f0cd857625b87dc8','a34f7e98c65b95becae5908e74cfedcb846366a83605f9d8685e98ac629d1278','943fe109b6d960543cb884cd723ed53323c9c0d071ca464607f95fad7daef411'); +INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'eba03194b13ca764dbfbb86f86d16841df4486f12c26a214f7f1020468b52d27','e5a15333b0539a58bcf306d993b0be078d8dfd3cf3f5929a690da5ac534eff5e','cffc01d511b3dc04f4265e0c8da286b6e3bfc42aff0d86cbb001ab63d6176139'); +INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'d7fa8085722edc91ea5cb907e439649533e32ad5429b52bc10463629719af5ab','bfedffe97e2bf812728130721dec204767d92ab05bfcf2c4596b5386fc6ea380','9ae5ad826d6accea86d0a8afcda97dfdbc27215d69e13f4168f83c8084027562'); +INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'e84e0b26a5a67af1bca0cdadadea17b52b79f160d8acc0281289de1c70bef248','2b4c3ff824d597cc1376a524f89bac6deef025a71395e848b51e9c06002d7f12','cfa8da01de91a523443a65b11c3b807e74623c34a0183e4a626c9e91cb08d699'); +INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'ac3522ba0e8278bac956b5f9d7af271424f8e4eff23d57d2a5ff88416dd02ff4','2b3b181734d815e3cd024f6fd91b11de8cd457bdc5f833520af281a6c42ab391','5b6a0a14b2f93da02d14ce61732098f061f1c8e25ce0cc9f88bca9dae0ec87d2'); +INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'86255a3e32e6c7a96d0f0a6e7815d61d9a970272f1df38bb0c29ee9f2051f2e4','9092b97fab9af004edd169f26446c6712e5e1ed1d5f94fc5ac0b49565fa65b4b','e255ee9dc5f14e15700620beb07eadfa0436fa16f13e2ae2be80ad6afb5c0f85'); +INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'9694fd19263381693133a47584432de876ef1e0a32060d52c8db96811ff7d09e','06ae398816ea8ca96fa424903182c7df9ce93c5d1bdbc2ead089ee71acb90531','79ba4ab50fc791c97476a2ae526d5df7160be5bdc8885cc4a286d58212fafa5d'); +INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'3cb1b469cc6627cbed3f0db1a00370d5c95edf9940f8a4c9406fc78076640d90','2c688b2021aa321432ae1bd5a60a9f65cdb6d3720512ca2c304bd2773e7647d9','5d440e1fb3960bcb638f85ff2c26c030cac87a01a1aed3827b9e65f0da3b7fbd'); +INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'cac7cc49c1d632aef2e9bcb3456f60df2ff11110c4e9980989ce0f2d8a5835e1','2a7ce0455e84f973c078752f1c0ea93ffdbe993f239baeb7ed947e749c119dfb','ef4d860262ba83f36288d96826b19f563b8ceb77c06021a9b21221ea53ff8bf1'); +INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'1614a317b1144c7f08fb2785bf468bb299b9f19450331b7fdfebd510fa07e574','270190f8eea6e059acfe66f7369986d3748f707f3ad0eaa2e396a190cc047a6f','6295b1cdf513157176552bca25ef83516bc43eea3924ef53ba71e0c56090200d'); +INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'631d42f4b3fb091a4c67f737bc2da60b8bf9820d27c758f5b9453b40813c5bc5','35ca62f9b66717328f41e23c80e72395f4ece758ce3ca9aabe1d1edd87d06016','af6d59fa99c17f2db520b39337f2a37065d88d9a0ae992ed477a13d8c538f3ca'); +INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'2b3f460da72fc0a9b3a720abca80bff0c44654287de69567c43c62a5557144bf','37d35cf95c6f102413739a672d5dc1c3b0760068de256676b336c631bdc94447','bd531fbce66bab34c818aa0e4bdb267847331ab825c84b3af90665ea87eb9c03'); +INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'db62bf94ddb276cf55ddfe73f8023e760788647910807adff6e0672ce1d5e23d','2eec38760b106cf52b3bf0fa51198348cb611ae9bb75edd8e4a343e7fef1e042','993531140bb0d26b634d17d07260660d3896c6fea41477772e2412fa9d23338e'); +INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'1c427808f1eb1972df57b51eea9f3405d3d63a1d58c5a3faba616d7160e3a264','be57a1f4088437c89e3bdd7c9456b8ac9dc6011d15ada8d5432ab662f80e9a52','f3f80b6cbc43d759f06657adda632eab28ca3ea2843b09532a9e930f4899d1d0'); +INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'cd28b5ac0f80f8815467663c1e90b15ffe46ce067a1b2ce004b0d371cb0ceb16','cf5fed759ba01d430d2e97ed6d52503a67c35688f02ad6742e87f1da1b468ae0','7f84e684327e6c3bfbb4aa17f600dc0376e84d7c2136f281ab4c6aa12cc5a6c9'); +INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'69adfbe756c116e395fb3a5170b57210ac2721b07144b3d7a35c4327f28e28c9','528e0ea934cb95d328ad13fb3a3a47a1d89824ee44abbb2cc271d707bb6d62d1','e971cc6ecab404e7862f21db23bbb366ea58fe3706c041726dabe00ab84d6ca7'); +INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'d50cb66a25a410db360cdf749b5d10932410b5e37c3e5d3d834a65b5671dcca6','f0e0e40238d13f69c9c40cad5b8be218cb09af9bc061e728b56d74a42182788b','c605cca3e8089d7c54353db6df199a4a9ec229c8d2e09b2e4bc82b1f0f3a5430'); +INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'384f8d2eda5f1b7b8273ef149ac37fcaa9ae51865fd57bd348339579b8a078eb','19ac618404aade5a0914a9a9c159ea229384be303a320b08b9915474beccf1df','019d6dc7fbc9ca4b0540f6ec9ae72321baa8c4d84271a976dadcad886077c193'); +INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'5eff25450225c71f85f34466d6e359001eed8f05ea5042e7d65c30ccfeb6098f','7d02630f0fbe3e5c3b16766f1d04dd1a83c305f74f0546276d970b36e870ba8e','36b1ed139cf908d814495bb3125be729e3c4764884bb325ba673cdf9c4d93fb7'); +-- Triggers and indices on blocks +CREATE INDEX blocks_block_index_block_hash_idx ON blocks (block_index, block_hash) + ; +CREATE INDEX blocks_block_index_idx ON blocks (block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transactions +DROP TABLE IF EXISTS transactions; +CREATE TABLE transactions( + tx_index INTEGER UNIQUE, + tx_hash TEXT UNIQUE, + block_index INTEGER, + block_hash TEXT, + block_time INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + fee INTEGER, + data BLOB, + supported BOOL DEFAULT 1, + FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), + PRIMARY KEY (tx_index, tx_hash, block_index)); +INSERT INTO transactions VALUES(1,'5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); +INSERT INTO transactions VALUES(2,'eacd03b732d28924807d4f0cb1c1aa5720a78bf44d23660fb1658a5fd1b4e9a3',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'0000000000000000000000010000000002FAF080',1); +INSERT INTO transactions VALUES(3,'025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,1000000,X'0000000A00000000000000000000000002FAF08000000000000000010000000005F5E100000A0000000000000000',1); +INSERT INTO transactions VALUES(4,'c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000000A00000000000000010000000006422C4000000000000000000000000002FAF080000A00000000000DBBA0',1); +INSERT INTO transactions VALUES(5,'b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',50000000,9675,X'0000000B025CA2C1784CA3C9389B9F227A5A04445908337E21E2EF9411C890E20AFF61C0C6881F7505BD7FE0742C2CE50490E21431705BF2DF4368BE43F423FA0C515AEE',1); +INSERT INTO transactions VALUES(6,'93599860b4a4a3b672a79c064812eb18d2e1b532613e08bd3ae1ee2a9979eae2',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'000000140000000000004767000000003B9ACA000100000000000000000000',1); +INSERT INTO transactions VALUES(7,'3318c4b8b244fbc64f6894d28f7a1866db5671f04d2e4f5911d0fd688f804404',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'00000014000000000000476800000000000186A00000000000000000000006666F6F626172',1); +INSERT INTO transactions VALUES(8,'e43d2ab22a3a5fe1de032bdf042381fc1d6fc34794abc51a1b3db46ccf8cbdbe',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000000000000000000476700000000003D0900',1); +INSERT INTO transactions VALUES(9,'7b48b32b5373757d0bfa50358184117ca01b5ad564ca4338ecb021ae726a19c9',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'000000000000000000004768000000000000020E',1); +INSERT INTO transactions VALUES(10,'cbc73bb03bae7cbaa0e88c9c16cb78fa6f315b9a6383f0f7efb63d0fdd831a81',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'00000032000000000000025800000000000047670000000000000001',1); +INSERT INTO transactions VALUES(11,'c59e9803933740537b59928d19d2b65812e6f2b8d1ac811d9262353a19327b97',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'00000032000000000000032000000000000047680000000000000001',1); +INSERT INTO transactions VALUES(12,'0a15cc28e58f28a690051e66e6c50ecb68826077d59b75d05590a1db453d9d61',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB3300405900000000000005F5E0FF09556E69742054657374',1); +INSERT INTO transactions VALUES(13,'c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000028000052BB33640000000002FAF08000000000017D7840000000000000000000003B100000000A',1); +INSERT INTO transactions VALUES(14,'23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000028000152BB336400000000017D78400000000002793D60000000000000000000003B100000000A',1); +INSERT INTO transactions VALUES(15,'a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000028000052BB33640000000008F0D1800000000014DC93800000000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(16,'6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000028000152BB33640000000014DC93800000000008F0D1800000000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(17,'91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000028000252BB33C8000000002CB417800000000026BE36803FF0000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(18,'c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000028000352BB33C80000000026BE3680000000002CB417803FF0000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(19,'c473921b7c5d877de55ef38b39935e149003d6fec701bea0c8b66b77255942d4',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB33324058F7256FFC115E004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(20,'c9388ea12ab42ec1502dbb54e2da81beca5adee6056777559200aab28e5e1dc0',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB3365405915F3B645A1CB004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(21,'54292b0676d266705f8dd0daa1194cff3d16414564f25c422309af75d8ca344e',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB33C94000000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(22,'6d3c6a9ea36e82a0e8162f69c68fc8bb95d316ad5586a30553fbaf1717f4121e',310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000000A00000000000047670000000002FAF08000000000000000010000000002FAF080000A0000000000000000',1); +INSERT INTO transactions VALUES(23,'df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1',310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','mvCounterpartyXXXXXXXXXXXXXXW24Hef',100000000,5625,X'',1); +INSERT INTO transactions VALUES(24,'abc5e16e5a7a1a7dd7d38ff1351b252a3813d40a695ab798f6a26cb904f91ab1',310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'0000000000000000000047680000000000002710',1); +-- Triggers and indices on transactions +CREATE INDEX transactions_block_index_idx ON transactions (block_index) + ; +CREATE INDEX transactions_block_index_tx_index_idx ON transactions (block_index, tx_index) + ; +CREATE INDEX transactions_tx_hash_idx ON transactions (tx_hash) + ; +CREATE INDEX transactions_tx_index_idx ON transactions (tx_index) + ; +CREATE INDEX transactions_tx_index_tx_hash_block_index_idx ON transactions (tx_index, tx_hash, block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transaction_outputs +DROP TABLE IF EXISTS transaction_outputs; +CREATE TABLE transaction_outputs( + tx_index, + tx_hash TEXT, + block_index INTEGER, + out_index INTEGER, + destination TEXT, + btc_amount INTEGER, + PRIMARY KEY (tx_hash, out_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,310001,2); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92845000000,310003,4); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92945000000,310004,5); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92895000000,310005,6); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',1000000000,310005,6); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92845000000,310006,7); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',100000,310006,7); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',996000000,310007,8); +INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,310007,8); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',99474,310008,9); +INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,310008,9); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844999976,310009,10); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844979976,310009,10); +INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000024,310009,10); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844559176,310010,11); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844539176,310010,11); +INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50420824,310010,11); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92794539176,310012,13); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92769539176,310013,14); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92773789176,310013,14); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92778789176,310014,0); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92628789176,310014,15); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91528789176,310016,17); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90937926676,310018,19); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90941039176,310018,19); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91100339176,310019,20); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91416039176,310019,20); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91441039176,310019,20); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92771039176,310020,21); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92841039176,310020,21); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',946000000,310021,22); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',149840926438,310022,23); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',149849426438,310023,0); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',89474,310023,24); +INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10526,310023,24); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',996000000,310032,0); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,310001,2); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92845000000,310003,4); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92945000000,310004,5); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92895000000,310005,6); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',1000000000,310005,6); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92845000000,310006,7); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',100000,310006,7); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',996000000,310007,8); +INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,310007,8); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',99474,310008,9); +INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,310008,9); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844999976,310009,10); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844979976,310009,10); +INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000024,310009,10); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844559176,310010,11); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92844539176,310010,11); +INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50420824,310010,11); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92794539176,310012,13); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92769539176,310013,14); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92773789176,310013,14); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92778789176,310014,0); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92628789176,310014,15); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91528789176,310016,17); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90937926676,310018,19); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',90941039176,310018,19); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91100339176,310019,20); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91416039176,310019,20); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',91441039176,310019,20); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92771039176,310020,21); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',92841039176,310020,21); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',946000000,310021,22); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',149840926438,310022,23); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',149849426438,310023,0); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',89474,310023,24); +INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10526,310023,24); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',996000000,310032,0); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table credits +DROP TABLE IF EXISTS credits; +CREATE TABLE credits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + calling_function TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO credits VALUES(310000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',93000000000,'burn','5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb',1); +INSERT INTO credits VALUES(310001,'2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'send','eacd03b732d28924807d4f0cb1c1aa5720a78bf44d23660fb1658a5fd1b4e9a3',2); +INSERT INTO credits VALUES(310004,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',100000000,'btcpay','b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2',5); +INSERT INTO credits VALUES(310005,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',1000000000,'issuance','93599860b4a4a3b672a79c064812eb18d2e1b532613e08bd3ae1ee2a9979eae2',6); +INSERT INTO credits VALUES(310006,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',100000,'issuance','3318c4b8b244fbc64f6894d28f7a1866db5671f04d2e4f5911d0fd688f804404',7); +INSERT INTO credits VALUES(310007,'2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,'send','e43d2ab22a3a5fe1de032bdf042381fc1d6fc34794abc51a1b3db46ccf8cbdbe',8); +INSERT INTO credits VALUES(310008,'2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,'send','7b48b32b5373757d0bfa50358184117ca01b5ad564ca4338ecb021ae726a19c9',9); +INSERT INTO credits VALUES(310009,'2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',24,'dividend','cbc73bb03bae7cbaa0e88c9c16cb78fa6f315b9a6383f0f7efb63d0fdd831a81',10); +INSERT INTO credits VALUES(310010,'2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',420800,'dividend','c59e9803933740537b59928d19d2b65812e6f2b8d1ac811d9262353a19327b97',11); +INSERT INTO credits VALUES(310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',4250000,'filled','23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1',14); +INSERT INTO credits VALUES(310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',5000000,'cancel order','c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee',0); +INSERT INTO credits VALUES(310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75',16); +INSERT INTO credits VALUES(310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75',16); +INSERT INTO credits VALUES(310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a',18); +INSERT INTO credits VALUES(310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a',18); +INSERT INTO credits VALUES(310018,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',59137500,'bet settled: liquidated for bear','c473921b7c5d877de55ef38b39935e149003d6fec701bea0c8b66b77255942d4',19); +INSERT INTO credits VALUES(310018,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',3112500,'feed fee','c473921b7c5d877de55ef38b39935e149003d6fec701bea0c8b66b77255942d4',19); +INSERT INTO credits VALUES(310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',159300000,'bet settled','c9388ea12ab42ec1502dbb54e2da81beca5adee6056777559200aab28e5e1dc0',20); +INSERT INTO credits VALUES(310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',315700000,'bet settled','c9388ea12ab42ec1502dbb54e2da81beca5adee6056777559200aab28e5e1dc0',20); +INSERT INTO credits VALUES(310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',25000000,'feed fee','c9388ea12ab42ec1502dbb54e2da81beca5adee6056777559200aab28e5e1dc0',20); +INSERT INTO credits VALUES(310020,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',1330000000,'bet settled: for notequal','54292b0676d266705f8dd0daa1194cff3d16414564f25c422309af75d8ca344e',21); +INSERT INTO credits VALUES(310020,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',70000000,'feed fee','54292b0676d266705f8dd0daa1194cff3d16414564f25c422309af75d8ca344e',21); +INSERT INTO credits VALUES(310022,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',56999887262,'burn','df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1',23); +INSERT INTO credits VALUES(310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',8500000,'recredit wager remaining','c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8',0); +INSERT INTO credits VALUES(310023,'2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10000,'send','abc5e16e5a7a1a7dd7d38ff1351b252a3813d40a695ab798f6a26cb904f91ab1',24); +INSERT INTO credits VALUES(310032,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,'cancel order','6d3c6a9ea36e82a0e8162f69c68fc8bb95d316ad5586a30553fbaf1717f4121e',0); +-- Triggers and indices on credits +CREATE TRIGGER block_update_credits + BEFORE UPDATE ON credits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX credits_address_idx ON credits (address) + ; +CREATE INDEX credits_asset_idx ON credits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table debits +DROP TABLE IF EXISTS debits; +CREATE TABLE debits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + action TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO debits VALUES(310001,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'send','eacd03b732d28924807d4f0cb1c1aa5720a78bf44d23660fb1658a5fd1b4e9a3',2); +INSERT INTO debits VALUES(310003,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',105000000,'open order','c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee',4); +INSERT INTO debits VALUES(310005,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'issuance fee','93599860b4a4a3b672a79c064812eb18d2e1b532613e08bd3ae1ee2a9979eae2',6); +INSERT INTO debits VALUES(310006,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'issuance fee','3318c4b8b244fbc64f6894d28f7a1866db5671f04d2e4f5911d0fd688f804404',7); +INSERT INTO debits VALUES(310007,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,'send','e43d2ab22a3a5fe1de032bdf042381fc1d6fc34794abc51a1b3db46ccf8cbdbe',8); +INSERT INTO debits VALUES(310008,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,'send','7b48b32b5373757d0bfa50358184117ca01b5ad564ca4338ecb021ae726a19c9',9); +INSERT INTO debits VALUES(310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',24,'dividend','cbc73bb03bae7cbaa0e88c9c16cb78fa6f315b9a6383f0f7efb63d0fdd831a81',10); +INSERT INTO debits VALUES(310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',20000,'dividend fee','cbc73bb03bae7cbaa0e88c9c16cb78fa6f315b9a6383f0f7efb63d0fdd831a81',10); +INSERT INTO debits VALUES(310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',420800,'dividend','c59e9803933740537b59928d19d2b65812e6f2b8d1ac811d9262353a19327b97',11); +INSERT INTO debits VALUES(310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',20000,'dividend fee','c59e9803933740537b59928d19d2b65812e6f2b8d1ac811d9262353a19327b97',11); +INSERT INTO debits VALUES(310012,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'bet','c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8',13); +INSERT INTO debits VALUES(310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',25000000,'bet','23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1',14); +INSERT INTO debits VALUES(310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',150000000,'bet','a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd',15); +INSERT INTO debits VALUES(310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',350000000,'bet','6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75',16); +INSERT INTO debits VALUES(310016,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',750000000,'bet','91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1',17); +INSERT INTO debits VALUES(310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',650000000,'bet','c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a',18); +INSERT INTO debits VALUES(310021,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,'open order','6d3c6a9ea36e82a0e8162f69c68fc8bb95d316ad5586a30553fbaf1717f4121e',22); +INSERT INTO debits VALUES(310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10000,'send','abc5e16e5a7a1a7dd7d38ff1351b252a3813d40a695ab798f6a26cb904f91ab1',24); +-- Triggers and indices on debits +CREATE TRIGGER block_update_debits + BEFORE UPDATE ON debits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX debits_address_idx ON debits (address) + ; +CREATE INDEX debits_asset_idx ON debits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table messages +DROP TABLE IF EXISTS messages; +CREATE TABLE messages( + message_index INTEGER PRIMARY KEY, + block_index INTEGER, + command TEXT, + category TEXT, + bindings TEXT, + timestamp INTEGER); +INSERT INTO messages VALUES(0,310000,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(1,310001,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(2,310002,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(3,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(4,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(5,310003,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(6,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(7,310003,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(8,310003,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(9,310004,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(10,310004,'update','order_matches','[''order_match_id'', ''status'']',0); +INSERT INTO messages VALUES(11,310004,'insert','btcpays','[''block_index'', ''btc_amount'', ''destination'', ''order_match_id'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(12,310005,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(13,310006,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(14,310007,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(15,310008,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(16,310009,'insert','dividends','[''asset'', ''block_index'', ''dividend_asset'', ''fee_paid'', ''quantity_per_unit'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(17,310010,'insert','dividends','[''asset'', ''block_index'', ''dividend_asset'', ''fee_paid'', ''quantity_per_unit'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(18,310011,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(19,310012,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(20,310013,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(21,310013,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(22,310013,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +INSERT INTO messages VALUES(23,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(24,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(25,310013,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(26,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(27,310013,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(28,310012,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(29,310014,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(30,310014,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(31,310014,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +INSERT INTO messages VALUES(32,310014,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(33,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(34,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(35,310015,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(36,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(37,310015,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(38,310014,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(39,310016,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(40,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(41,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(42,310017,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(43,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(44,310017,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(45,310016,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(46,310018,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(47,310018,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(48,310018,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(49,310018,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(50,310019,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(51,310019,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(52,310019,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(53,310019,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(54,310020,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(55,310020,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(56,310020,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(57,310020,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(58,310021,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(59,310022,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(60,310023,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(61,310023,'update','bets','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(62,310023,'insert','bet_expirations','[''bet_hash'', ''bet_index'', ''block_index'', ''source'']',0); +INSERT INTO messages VALUES(63,310023,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(64,310032,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(65,310032,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(66,310032,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +-- Triggers and indices on messages +CREATE TRIGGER block_update_messages + BEFORE UPDATE ON messages BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX messages_block_index_idx ON messages (block_index) + ; +CREATE INDEX messages_block_index_message_index_idx ON messages (block_index, message_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_match_expirations +DROP TABLE IF EXISTS order_match_expirations; +CREATE TABLE order_match_expirations( + order_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on order_match_expirations +CREATE TRIGGER block_update_order_match_expirations + BEFORE UPDATE ON order_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_match_expirations_block_index_idx ON order_match_expirations (block_index) + ; +CREATE INDEX order_match_expirations_tx0_address_idx ON order_match_expirations (tx0_address) + ; +CREATE INDEX order_match_expirations_tx1_address_idx ON order_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_matches +DROP TABLE IF EXISTS order_matches; +CREATE TABLE order_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + forward_asset TEXT, + forward_quantity INTEGER, + backward_asset TEXT, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_paid INTEGER, + status TEXT); +INSERT INTO order_matches VALUES('025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0_c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee',3,'025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',4,'c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,'XCP',100000000,310002,310003,310003,10,10,310023,857142,'pending'); +INSERT INTO order_matches VALUES('025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0_c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee',3,'025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',4,'c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,'XCP',100000000,310002,310003,310004,10,10,310023,857142,'completed'); +-- Triggers and indices on order_matches +CREATE TRIGGER block_update_order_matches + BEFORE UPDATE ON order_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_matches_backward_asset_idx ON order_matches (backward_asset) + ; +CREATE INDEX order_matches_block_index_idx ON order_matches (block_index) + ; +CREATE INDEX order_matches_forward_asset_idx ON order_matches (forward_asset) + ; +CREATE INDEX order_matches_id_idx ON order_matches (id) + ; +CREATE INDEX order_matches_match_expire_index_idx ON order_matches (match_expire_index) + ; +CREATE INDEX order_matches_status_idx ON order_matches (status) + ; +CREATE INDEX order_matches_tx0_address_forward_asset_idx ON order_matches (tx0_address, forward_asset) + ; +CREATE INDEX order_matches_tx0_hash_idx ON order_matches (tx0_hash) + ; +CREATE INDEX order_matches_tx1_address_backward_asset_idx ON order_matches (tx1_address, backward_asset) + ; +CREATE INDEX order_matches_tx1_hash_idx ON order_matches (tx1_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_expirations +DROP TABLE IF EXISTS order_expirations; +CREATE TABLE order_expirations( + order_hash TEXT PRIMARY KEY, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO order_expirations VALUES('025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310013); +INSERT INTO order_expirations VALUES('c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310014); +INSERT INTO order_expirations VALUES('6d3c6a9ea36e82a0e8162f69c68fc8bb95d316ad5586a30553fbaf1717f4121e','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310032); +-- Triggers and indices on order_expirations +CREATE TRIGGER block_update_order_expirations + BEFORE UPDATE ON order_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_expirations_block_index_idx ON order_expirations (block_index) + ; +CREATE INDEX order_expirations_source_idx ON order_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table orders +DROP TABLE IF EXISTS orders; +CREATE TABLE orders( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + give_asset TEXT, + give_quantity INTEGER, + give_remaining INTEGER, + get_asset TEXT, + get_quantity INTEGER, + get_remaining INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_required INTEGER, + fee_required_remaining INTEGER, + fee_provided INTEGER, + fee_provided_remaining INTEGER, + status TEXT); +INSERT INTO orders VALUES(3,'025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0',310002,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,50000000,'XCP',100000000,100000000,10,310012,0,0,1000000,1000000,'open'); +INSERT INTO orders VALUES(4,'c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee',310003,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',105000000,105000000,'BTC',50000000,50000000,10,310013,900000,900000,6800,6800,'open'); +INSERT INTO orders VALUES(3,'025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0',310003,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'open'); +INSERT INTO orders VALUES(4,'c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee',310003,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'open'); +INSERT INTO orders VALUES(3,'025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0',310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'expired'); +INSERT INTO orders VALUES(4,'c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee',310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'expired'); +INSERT INTO orders VALUES(22,'6d3c6a9ea36e82a0e8162f69c68fc8bb95d316ad5586a30553fbaf1717f4121e',310021,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'open'); +INSERT INTO orders VALUES(22,'6d3c6a9ea36e82a0e8162f69c68fc8bb95d316ad5586a30553fbaf1717f4121e',310032,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'expired'); +-- Triggers and indices on orders +CREATE TRIGGER block_update_orders + BEFORE UPDATE ON orders BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX orders_block_index_idx ON orders (block_index) + ; +CREATE INDEX orders_expire_index_idx ON orders (expire_index) + ; +CREATE INDEX orders_get_asset_give_asset_idx ON orders (get_asset, give_asset) + ; +CREATE INDEX orders_give_asset_idx ON orders (give_asset) + ; +CREATE INDEX orders_source_give_asset_idx ON orders (source, give_asset) + ; +CREATE INDEX orders_status_idx ON orders (status) + ; +CREATE INDEX orders_tx_hash_idx ON orders (tx_hash) + ; +CREATE INDEX orders_tx_index_tx_hash_idx ON orders (tx_index, tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_expirations +DROP TABLE IF EXISTS bet_match_expirations; +CREATE TABLE bet_match_expirations( + bet_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on bet_match_expirations +CREATE INDEX bet_match_expirations_block_index_idx ON bet_match_expirations (block_index) + ; +CREATE INDEX bet_match_expirations_tx0_address_idx ON bet_match_expirations (tx0_address) + ; +CREATE INDEX bet_match_expirations_tx1_address_idx ON bet_match_expirations (tx1_address) + ; +CREATE TRIGGER block_update_bet_match_expirations + BEFORE UPDATE ON bet_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_matches +DROP TABLE IF EXISTS bet_matches; +CREATE TABLE bet_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_bet_type INTEGER, + tx1_bet_type INTEGER, + feed_address TEXT, + initial_value INTEGER, + deadline INTEGER, + target_value REAL, + leverage INTEGER, + forward_quantity INTEGER, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bet_matches VALUES('c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8_23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1',13,'c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',14,'23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310012,10,10,310022,99999999,'pending'); +INSERT INTO bet_matches VALUES('a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd_6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75',15,'a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',16,'6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310014,10,10,310024,99999999,'pending'); +INSERT INTO bet_matches VALUES('91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1_c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a',17,'91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',18,'c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',2,3,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310016,10,10,310026,99999999,'pending'); +INSERT INTO bet_matches VALUES('c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8_23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1',13,'c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',14,'23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310018,10,10,310022,99999999,'settled: liquidated for bear'); +INSERT INTO bet_matches VALUES('a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd_6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75',15,'a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',16,'6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310019,10,10,310024,99999999,'settled'); +INSERT INTO bet_matches VALUES('91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1_c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a',17,'91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',18,'c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',2,3,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310020,10,10,310026,99999999,'settled: for notequal'); +-- Triggers and indices on bet_matches +CREATE INDEX bet_matches_block_index_idx ON bet_matches (block_index) + ; +CREATE INDEX bet_matches_deadline_idx ON bet_matches (deadline) + ; +CREATE INDEX bet_matches_id_idx ON bet_matches (id) + ; +CREATE INDEX bet_matches_status_idx ON bet_matches (status) + ; +CREATE INDEX bet_matches_tx0_address_idx ON bet_matches (tx0_address) + ; +CREATE INDEX bet_matches_tx1_address_idx ON bet_matches (tx1_address) + ; +CREATE TRIGGER block_update_bet_matches + BEFORE UPDATE ON bet_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_resolutions +DROP TABLE IF EXISTS bet_match_resolutions; +CREATE TABLE bet_match_resolutions( + bet_match_id TEXT PRIMARY KEY, + bet_match_type_id INTEGER, + block_index INTEGER, + winner TEXT, + settled BOOL, + bull_credit INTEGER, + bear_credit INTEGER, + escrow_less_fee INTEGER, + fee INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_match_resolutions VALUES('c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8_23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1',1,310018,'0',0,59137500,NULL,NULL,3112500); +INSERT INTO bet_match_resolutions VALUES('a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd_6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75',1,310019,'1',159300000,315700000,NULL,NULL,25000000); +INSERT INTO bet_match_resolutions VALUES('91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1_c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a',5,310020,NULL,NULL,NULL,'NotEqual',1330000000,70000000); +-- Triggers and indices on bet_match_resolutions +CREATE TRIGGER block_update_bet_match_resolutions + BEFORE UPDATE ON bet_match_resolutions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_expirations +DROP TABLE IF EXISTS bet_expirations; +CREATE TABLE bet_expirations( + bet_index INTEGER PRIMARY KEY, + bet_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_expirations VALUES(13,'c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310023); +-- Triggers and indices on bet_expirations +CREATE INDEX bet_expirations_block_index_idx ON bet_expirations (block_index) + ; +CREATE INDEX bet_expirations_source_idx ON bet_expirations (source) + ; +CREATE TRIGGER block_update_bet_expirations + BEFORE UPDATE ON bet_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bets +DROP TABLE IF EXISTS bets; +CREATE TABLE bets( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + feed_address TEXT, + bet_type INTEGER, + deadline INTEGER, + wager_quantity INTEGER, + wager_remaining INTEGER, + counterwager_quantity INTEGER, + counterwager_remaining INTEGER, + target_value REAL, + leverage INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bets VALUES(13,'c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8',310012,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,50000000,50000000,25000000,25000000,0.0,15120,10,310022,99999999,'open'); +INSERT INTO bets VALUES(14,'23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1',310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1,1388000100,25000000,25000000,41500000,41500000,0.0,15120,10,310023,99999999,'open'); +INSERT INTO bets VALUES(13,'c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8',310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'open'); +INSERT INTO bets VALUES(14,'23f77ca0034c19aa841413edfde7f4a3dca8d8ef582ce939dfc2e170c7c811a1',310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1,1388000100,25000000,4250000,41500000,0,0.0,15120,10,310023,99999999,'filled'); +INSERT INTO bets VALUES(15,'a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd',310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,150000000,150000000,350000000,350000000,0.0,5040,10,310024,99999999,'open'); +INSERT INTO bets VALUES(16,'6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75',310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1,1388000100,350000000,350000000,150000000,150000000,0.0,5040,10,310025,99999999,'open'); +INSERT INTO bets VALUES(15,'a5a1927a83521144a5aa751f61065b530c9447c5b2c35e35064de32dae9573fd',310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,150000000,0,350000000,0,0.0,5040,10,310024,99999999,'filled'); +INSERT INTO bets VALUES(16,'6aa4c5853aa9971d13c0291c4e91ee5cddd506521942377aca5c3b1a48780c75',310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1,1388000100,350000000,0,150000000,0,0.0,5040,10,310025,99999999,'filled'); +INSERT INTO bets VALUES(17,'91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1',310016,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',2,1388000200,750000000,750000000,650000000,650000000,1.0,5040,10,310026,99999999,'open'); +INSERT INTO bets VALUES(18,'c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a',310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',3,1388000200,650000000,650000000,750000000,750000000,1.0,5040,10,310027,99999999,'open'); +INSERT INTO bets VALUES(17,'91cea72c920a13cc450d14c92a81a318462300670308d6b1eb344ac06a72eda1',310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',2,1388000200,750000000,0,650000000,0,1.0,5040,10,310026,99999999,'filled'); +INSERT INTO bets VALUES(18,'c345c2e6d9899c7729a0ca2ef13fab71ca5808854fb6be62e3b3dcd9225d1c4a',310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',3,1388000200,650000000,0,750000000,0,1.0,5040,10,310027,99999999,'filled'); +INSERT INTO bets VALUES(13,'c36b65e3d4c105739d5c8cef470c0878d2e8da138416e09cb499edcec343c0b8',310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'expired'); +-- Triggers and indices on bets +CREATE INDEX bets_block_index_idx ON bets (block_index) + ; +CREATE INDEX bets_expire_index_idx ON bets (expire_index) + ; +CREATE INDEX bets_feed_address_bet_type_idx ON bets (feed_address, bet_type) + ; +CREATE INDEX bets_feed_address_idx ON bets (feed_address) + ; +CREATE INDEX bets_status_idx ON bets (status) + ; +CREATE INDEX bets_tx_hash_idx ON bets (tx_hash) + ; +CREATE INDEX bets_tx_index_tx_hash_idx ON bets (tx_index, tx_hash) + ; +CREATE TRIGGER block_update_bets + BEFORE UPDATE ON bets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table broadcasts +DROP TABLE IF EXISTS broadcasts; +CREATE TABLE broadcasts( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + timestamp INTEGER, + value REAL, + fee_fraction_int INTEGER, + text TEXT, + locked BOOL, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO broadcasts VALUES(12,'0a15cc28e58f28a690051e66e6c50ecb68826077d59b75d05590a1db453d9d61',310011,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000000,100.0,99999999,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(19,'c473921b7c5d877de55ef38b39935e149003d6fec701bea0c8b66b77255942d4',310018,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000050,99.86166,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(20,'c9388ea12ab42ec1502dbb54e2da81beca5adee6056777559200aab28e5e1dc0',310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000101,100.343,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(21,'54292b0676d266705f8dd0daa1194cff3d16414564f25c422309af75d8ca344e',310020,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000201,2.0,5000000,'Unit Test',0,'valid'); +-- Triggers and indices on broadcasts +CREATE TRIGGER block_update_broadcasts + BEFORE UPDATE ON broadcasts BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX broadcasts_block_index_idx ON broadcasts (block_index) + ; +CREATE INDEX broadcasts_status_source_idx ON broadcasts (status, source) + ; +CREATE INDEX broadcasts_status_source_tx_index_idx ON broadcasts (status, source, tx_index) + ; +CREATE INDEX broadcasts_timestamp_idx ON broadcasts (timestamp) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table btcpays +DROP TABLE IF EXISTS btcpays; +CREATE TABLE btcpays( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + order_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO btcpays VALUES(5,'b0bf5693ba52a5c6bda34671ba065606bd02277f281e9aa19d25778e26c2f7e2',310004,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',50000000,'025ca2c1784ca3c9389b9f227a5a04445908337e21e2ef9411c890e20aff61c0_c6881f7505bd7fe0742c2ce50490e21431705bf2df4368be43f423fa0c515aee','valid'); +-- Triggers and indices on btcpays +CREATE TRIGGER block_update_btcpays + BEFORE UPDATE ON btcpays BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX btcpays_block_index_idx ON btcpays (block_index) + ; +CREATE INDEX btcpays_destination_idx ON btcpays (destination) + ; +CREATE INDEX btcpays_source_idx ON btcpays (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table burns +DROP TABLE IF EXISTS burns; +CREATE TABLE burns( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + burned INTEGER, + earned INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO burns VALUES(1,'5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb',310000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',62000000,93000000000,'valid'); +INSERT INTO burns VALUES(23,'df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1',310022,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',38000000,56999887262,'valid'); +-- Triggers and indices on burns +CREATE TRIGGER block_update_burns + BEFORE UPDATE ON burns BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX burns_source_idx ON burns (source) + ; +CREATE INDEX burns_status_idx ON burns (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table cancels +DROP TABLE IF EXISTS cancels; +CREATE TABLE cancels( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + offer_hash TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on cancels +CREATE TRIGGER block_update_cancels + BEFORE UPDATE ON cancels BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX cancels_block_index_idx ON cancels (block_index) + ; +CREATE INDEX cancels_source_idx ON cancels (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dividends +DROP TABLE IF EXISTS dividends; +CREATE TABLE dividends( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset TEXT, + dividend_asset TEXT, + quantity_per_unit INTEGER, + fee_paid INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO dividends VALUES(10,'cbc73bb03bae7cbaa0e88c9c16cb78fa6f315b9a6383f0f7efb63d0fdd831a81',310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB','XCP',600,20000,'valid'); +INSERT INTO dividends VALUES(11,'c59e9803933740537b59928d19d2b65812e6f2b8d1ac811d9262353a19327b97',310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC','XCP',800,20000,'valid'); +-- Triggers and indices on dividends +CREATE TRIGGER block_update_dividends + BEFORE UPDATE ON dividends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dividends_asset_idx ON dividends (asset) + ; +CREATE INDEX dividends_block_index_idx ON dividends (block_index) + ; +CREATE INDEX dividends_source_idx ON dividends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table issuances +DROP TABLE IF EXISTS issuances; +CREATE TABLE "issuances"( + tx_index INTEGER, + tx_hash TEXT, + msg_index INTEGER DEFAULT 0, + block_index INTEGER, + asset TEXT, + quantity INTEGER, + divisible BOOL, + source TEXT, + issuer TEXT, + transfer BOOL, + callable BOOL, + call_date INTEGER, + call_price REAL, + description TEXT, + fee_paid INTEGER, + locked BOOL, + status TEXT, + asset_longname TEXT, + reset BOOL, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index)); +INSERT INTO issuances VALUES(6,'93599860b4a4a3b672a79c064812eb18d2e1b532613e08bd3ae1ee2a9979eae2',0,310005,'BBBB',1000000000,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,0,0,0.0,'',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(7,'3318c4b8b244fbc64f6894d28f7a1866db5671f04d2e4f5911d0fd688f804404',0,310006,'BBBC',100000,0,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,0,0,0.0,'foobar',50000000,0,'valid',NULL,0); +-- Triggers and indices on issuances +CREATE TRIGGER block_update_issuances + BEFORE UPDATE ON issuances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX issuances_asset_longname_idx ON issuances (asset_longname) + ; +CREATE INDEX issuances_asset_status_idx ON issuances (asset, status) + ; +CREATE INDEX issuances_block_index_idx ON issuances (block_index) + ; +CREATE INDEX issuances_source_idx ON issuances (source) + ; +CREATE INDEX issuances_status_asset_tx_index_idx ON issuances (status, asset, tx_index DESC) + ; +CREATE INDEX issuances_status_idx ON issuances (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sends +DROP TABLE IF EXISTS sends; +CREATE TABLE "sends"( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + quantity INTEGER, + status TEXT, + msg_index INTEGER DEFAULT 0, memo BLOB, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); +INSERT INTO sends VALUES(2,'eacd03b732d28924807d4f0cb1c1aa5720a78bf44d23660fb1658a5fd1b4e9a3',310001,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'valid',0,NULL); +INSERT INTO sends VALUES(8,'e43d2ab22a3a5fe1de032bdf042381fc1d6fc34794abc51a1b3db46ccf8cbdbe',310007,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,'valid',0,NULL); +INSERT INTO sends VALUES(9,'7b48b32b5373757d0bfa50358184117ca01b5ad564ca4338ecb021ae726a19c9',310008,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,'valid',0,NULL); +INSERT INTO sends VALUES(24,'abc5e16e5a7a1a7dd7d38ff1351b252a3813d40a695ab798f6a26cb904f91ab1',310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10000,'valid',0,NULL); +-- Triggers and indices on sends +CREATE TRIGGER block_update_sends + BEFORE UPDATE ON sends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sends_asset_idx ON sends (asset) + ; +CREATE INDEX sends_block_index_idx ON sends (block_index) + ; +CREATE INDEX sends_destination_idx ON sends (destination) + ; +CREATE INDEX sends_memo_idx ON sends (memo) + ; +CREATE INDEX sends_source_idx ON sends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_match_expirations +DROP TABLE IF EXISTS rps_match_expirations; +CREATE TABLE rps_match_expirations( + rps_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_match_expirations +CREATE TRIGGER block_update_rps_match_expirations + BEFORE UPDATE ON rps_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_match_expirations_block_index_idx ON rps_match_expirations (block_index) + ; +CREATE INDEX rps_match_expirations_tx0_address_idx ON rps_match_expirations (tx0_address) + ; +CREATE INDEX rps_match_expirations_tx1_address_idx ON rps_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_expirations +DROP TABLE IF EXISTS rps_expirations; +CREATE TABLE rps_expirations( + rps_index INTEGER PRIMARY KEY, + rps_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_expirations +CREATE TRIGGER block_update_rps_expirations + BEFORE UPDATE ON rps_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expirations_block_index_idx ON rps_expirations (block_index) + ; +CREATE INDEX rps_expirations_source_idx ON rps_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rpsresolves +DROP TABLE IF EXISTS rpsresolves; +CREATE TABLE rpsresolves( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + move INTEGER, + random TEXT, + rps_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on rpsresolves +CREATE TRIGGER block_update_rpsresolves + BEFORE UPDATE ON rpsresolves BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rpsresolves_block_index_idx ON rpsresolves (block_index) + ; +CREATE INDEX rpsresolves_rps_match_id_idx ON rpsresolves (rps_match_id) + ; +CREATE INDEX rpsresolves_source_idx ON rpsresolves (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_matches +DROP TABLE IF EXISTS rps_matches; +CREATE TABLE rps_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_move_random_hash TEXT, + tx1_move_random_hash TEXT, + wager INTEGER, + possible_moves INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps_matches +CREATE TRIGGER block_update_rps_matches + BEFORE UPDATE ON rps_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_matches_id_idx ON rps_matches (id) + ; +CREATE INDEX rps_matches_match_expire_index_idx ON rps_matches (match_expire_index) + ; +CREATE INDEX rps_matches_status_idx ON rps_matches (status) + ; +CREATE INDEX rps_matches_tx0_address_idx ON rps_matches (tx0_address) + ; +CREATE INDEX rps_matches_tx1_address_idx ON rps_matches (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps +DROP TABLE IF EXISTS rps; +CREATE TABLE rps( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + possible_moves INTEGER, + wager INTEGER, + move_random_hash TEXT, + expiration INTEGER, + expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps +CREATE TRIGGER block_update_rps + BEFORE UPDATE ON rps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expire_index_idx ON rps (expire_index) + ; +CREATE INDEX rps_source_idx ON rps (source) + ; +CREATE INDEX rps_status_idx ON rps (status) + ; +CREATE INDEX rps_tx_hash_idx ON rps (tx_hash) + ; +CREATE INDEX rps_tx_index_idx ON rps (tx_index) + ; +CREATE INDEX rps_tx_index_tx_hash_idx ON rps (tx_index, tx_hash) + ; +CREATE INDEX rps_wager_possible_moves_idx ON rps (wager, possible_moves) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table destructions +DROP TABLE IF EXISTS destructions; +CREATE TABLE destructions( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset INTEGER, + quantity INTEGER, + tag TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on destructions +CREATE TRIGGER block_update_destructions + BEFORE UPDATE ON destructions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX destructions_source_idx ON destructions (source) + ; +CREATE INDEX destructions_status_idx ON destructions (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table assets +DROP TABLE IF EXISTS assets; +CREATE TABLE assets( + asset_id TEXT UNIQUE, + asset_name TEXT UNIQUE, + block_index INTEGER, + asset_longname TEXT); +INSERT INTO assets VALUES('0','BTC',NULL,NULL); +INSERT INTO assets VALUES('1','XCP',NULL,NULL); +INSERT INTO assets VALUES('18279','BBBB',310005,NULL); +INSERT INTO assets VALUES('18280','BBBC',310006,NULL); +-- Triggers and indices on assets +CREATE INDEX assets_asset_id_idx ON assets (asset_id) + ; +CREATE UNIQUE INDEX assets_asset_longname_idx ON assets (asset_longname) + ; +CREATE INDEX assets_asset_name_idx ON assets (asset_name) + ; +CREATE TRIGGER block_update_assets + BEFORE UPDATE ON assets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table addresses +DROP TABLE IF EXISTS addresses; +CREATE TABLE addresses( + address TEXT UNIQUE, + options INTEGER, + block_index INTEGER); +-- Triggers and indices on addresses +CREATE INDEX addresses_address_idx ON addresses (address) + ; +CREATE TRIGGER block_update_addresses + BEFORE UPDATE ON addresses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sweeps +DROP TABLE IF EXISTS sweeps; +CREATE TABLE sweeps( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + flags INTEGER, + status TEXT, + memo BLOB, + fee_paid INTEGER, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on sweeps +CREATE TRIGGER block_update_sweeps + BEFORE UPDATE ON sweeps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sweeps_block_index_idx ON sweeps (block_index) + ; +CREATE INDEX sweeps_destination_idx ON sweeps (destination) + ; +CREATE INDEX sweeps_memo_idx ON sweeps (memo) + ; +CREATE INDEX sweeps_source_idx ON sweeps (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispensers +DROP TABLE IF EXISTS dispensers; +CREATE TABLE dispensers( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + asset TEXT, + give_quantity INTEGER, + escrow_quantity INTEGER, + satoshirate INTEGER, + status INTEGER, + give_remaining INTEGER, + oracle_address TEXT, + last_status_tx_hash TEXT, + origin TEXT, + dispense_count INTEGER DEFAULT 0); +-- Triggers and indices on dispensers +CREATE TRIGGER block_update_dispensers + BEFORE UPDATE ON dispensers BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispensers_asset_idx ON dispensers (asset) + ; +CREATE INDEX dispensers_block_index_idx ON dispensers (block_index) + ; +CREATE INDEX dispensers_give_remaining_idx ON dispensers (give_remaining) + ; +CREATE INDEX dispensers_last_status_tx_hash_idx ON dispensers (last_status_tx_hash) + ; +CREATE INDEX dispensers_source_asset_origin_idx ON dispensers (source, asset, origin) + ; +CREATE INDEX dispensers_source_idx ON dispensers (source) + ; +CREATE INDEX dispensers_source_origin_idx ON dispensers (source, origin) + ; +CREATE INDEX dispensers_status_block_index_idx ON dispensers (status, block_index) + ; +CREATE INDEX dispensers_status_idx ON dispensers (status) + ; +CREATE INDEX dispensers_tx_hash_idx ON dispensers (tx_hash) + ; +CREATE INDEX dispensers_tx_index_idx ON dispensers (tx_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenses +DROP TABLE IF EXISTS dispenses; +CREATE TABLE dispenses ( + tx_index INTEGER, + dispense_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, dispense_index, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenses +CREATE TRIGGER block_update_dispenses + BEFORE UPDATE ON dispenses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenses_block_index_idx ON dispenses (block_index) + ; +CREATE INDEX dispenses_dispenser_tx_hash_idx ON dispenses (dispenser_tx_hash) + ; +CREATE INDEX dispenses_tx_hash_idx ON dispenses (tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenser_refills +DROP TABLE IF EXISTS dispenser_refills; +CREATE TABLE dispenser_refills( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, tx_hash, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) + REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenser_refills +CREATE TRIGGER block_update_dispenser_refills + BEFORE UPDATE ON dispenser_refills BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenser_refills_block_index_idx ON dispenser_refills (block_index) + ; +CREATE INDEX dispenser_refills_tx_hash_idx ON dispenser_refills (tx_hash) + ; + +COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.json b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.json similarity index 69% rename from counterpartylib/test/fixtures/scenarios/multisig_2_of_3.json rename to counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.json index 64a320c80e..a0661fe8b3 100644 --- a/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.json +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.json @@ -3,72 +3,72 @@ "burn": "0100000001fcccfbce1963380480e3a0a01f1c71a0f9599401186f1d26625f5d0f1fd731d3000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac87812f0e000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "send": "010000000199a3d639e755cf6d79a4e1aac5df25de9bd9611b1af27635c454f497545db315010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353ae781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb974529b7c2a7965ff221029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb5262f0e000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "send": "010000000199a3d639e755cf6d79a4e1aac5df25de9bd9611b1af27635c454f497545db315010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353aee80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb974529b7c2a7965ff221029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed55b2f0e000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "order": "01000000010505a7bd8329d492bac33eefdb0c0c6ea6690b85f2cef8da9230989464c5e452020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb974529b7c2a7965f0821029ea8cc75076c9fb9c5417f502a30fc28198b34982dbb629ec04b4f8b05a07177210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefdc51f0e000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "order": "01000000014fb847b2ecbe43904a1535470514dc2c98af027727b0e0d6fb175ccee4851212020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb974529b7c2a7965f0821029ea8cc75076c9fb9c5417f502a30fc28198b34982dbb629ec04b4f8b05a07177210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aead15200e000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "order": "0100000001d884d351e9641665bae49958d1cac84a1fe4b6c563be00872a33ad365defb812010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452d0f1e67965fed21039ea8cc75076d9fb9c541785f3bb0fc28198b34982db6d93ec04b4f8b05a07158210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef58c1f0e000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "order": "01000000017583820ec1aea4e7167991d98232e178468ece0edf5624d4aee83c8718eb53c9010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452d0f1e67965fed21039ea8cc75076d9fb9c541785f3bb0fc28198b34982db6d93ec04b4f8b05a07158210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae35f71f0e000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "btcpay": "01000000015c65cfd6c9dce083dd85eac9bcf730bf70c765facdc5e7fe067f05ccd0892279010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff0480f0fa02000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512103e34ccc12f76f0562d2061e675c7c2a829a2cd290da4beb2926eefbd638dc972c2103547994ece3d7faafa1a82b764fe88500905bf89d52bd9c790586b5eec2d0ceb9210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae781e00000000000069512103c94ccc12f76f0562d236e9db9e8417b044faa36a26038ecb452b4d3227965fb321029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeba39240b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "btcpay": "01000000016a72d14420a83ee728056e8f1e8a2b12a5006964c8145d3da898b214334aa489010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff0480f0fa02000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512103e34ccc12f76f0562d2061e675ca7c186df9d434b5e18cfc19a2583bc61eebe332103ac2a15e47e7b781d6b8074274845758653b8202ab5135fc3d4832be2050563fb210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee80300000000000069512102c94ccc12f76f0562d22d9479d80097452024d783b41d99fd452b4d3227965fce21029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1ad9240b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "issuance": "010000000195a459f8154f3393cb9ba3391726b1dd11b1bd2654ffd516cce97cbc50057a95030000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512102f94ccc12f76f0562d2061e67436e926dc71a7fe497cceb974510d7f827975ff821029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb200240b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "issuance": "0100000001e61497ebe91aa3deca7e36c0b877587a42631ce02bd18f2bcf4d61c19980c5f0030000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512102f94ccc12f76f0562d2061e67436e926dc71a7fe497cceb974510d7f827975ff821029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea2ba240b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "issuance": "0100000001cf2e7af61a8284b325070e364ec9656f2340387e7433aeaf9c5b4985a1e34235010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103f34ccc12f76f0562d2061e67436e926dc71a7fe498cceb97452b4cb487965fa921039ea8cc75076d9fb9c32715caa9518e22198b34982dbb629ec04b4f8b05a07180210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeaac7230b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "issuance": "0100000001c92c4ccfc0251f4e95fa0a15cdbd66f3c0d01a0114ad28d4b7d4ef395e103892010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103f34ccc12f76f0562d2061e67436e926dc71a7fe498cceb97452b4cb487965fa921039ea8cc75076d9fb9c32715caa9518e22198b34982dbb629ec04b4f8b05a07180210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae2a9c240b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "send": "010000000152f47744a4787e68624c48d8f3e049beaa89dc7971292c395c8ce037dc945287010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353ae781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe497cceb97452b703b27965f0721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed86c230b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "send": "0100000001e8b661a61001432937c69f10a55939dba1cf7c86ad19fa351635df9e05d6d919010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353aee80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe497cceb97452b703b27965f0721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae7876240b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "send": "010000000148ec677832085e7f53fb4f2ba394d16e55e1846e299060c1148c699b3aa39c20020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353ae781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d3029965f8621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0612230b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "send": "0100000001a0414663b414e38569e7accb72b413590eb37030cff26cd962f1682f255956b2020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353aee80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d3029965f8621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aec650240b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "dividend": "01000000016adf8d343f286f764198991df6db90db34319658013b08d3dd65c42c31a9d7ba020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103fa4ccc12f76f0562d2061e67656e926dc71a7fa1a8cceb97452b4d7540965fde21029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefed8220b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "dividend": "0100000001118a2311b61a0bd2cf11f4d75d09b2ffd3233313fe2c7ff9a60a978181242e59020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103fa4ccc12f76f0562d2061e67656e926dc71a7fa1a8cceb97452b4d7540965fde21029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4e32240b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "dividend": "0100000001964e458e4894906ae5c17920771d7b4df3fb2a1a608069c60f496245939199cb010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512102fa4ccc12f76f0562d2061e67656e926dc71a7fa0d0cceb97452b4d754f965fb421029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef69f220b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "dividend": "01000000010a5271f1ea7c23a95790321720f862c9643c609b75bdf1f4dea4bdd613dbf6f2010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512102fa4ccc12f76f0562d2061e67656e926dc71a7fa0d0cceb97452b4d754f965fb421029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed613240b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "broadcast": "0100000001176ee7f37fbfce847b139dabc294a2a59091e323444efc1fe638fcb431de1250010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ec75a26a3f0cceb97452eb8d2d89f0a7b2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeee66220b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "broadcast": "0100000001d8100ce3e9b222b4f2d164ec091b689de8bdfd409f6cf788329d15d36b3c35a4010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ec75a26a3f0cceb97452eb8d2d89f0a7b2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae5ef5230b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "0100000001877137eeb42964630e85b25def186cbed8ccf376de0d173481305d56079442cd010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb95bfdbcd3227965f5421039fd5b435076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a07174210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1c0c220b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "01000000018490d9714051c76777a58068766c9f21096a830e5f81a334950f7122484ac79e010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb95bfdbcd3227965f5421039fd5b435076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a07174210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeaccf230b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "01000000014342f867ccf8fb17414181a9cbf7b548107ed293c1d82b47cc3518d8bc9a6086020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb9638530d3227965f7721039cd1f115076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a071ee210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4ab1210b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "01000000019cf173a932c08e54079361d18d4e557c30d549e91e106ecb4cfbfd8649dc92ef020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb9638530d3227965f7721039cd1f115076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a071ee210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefaa9230b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "0100000001e80d6492939a0c0cbe3419740e18325cd96522d7456702836936387578f4e419020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb9fb5facd3227965f6b21028a745ff5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0717a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae7856210b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "01000000014399723e23c168c7dfc9d976e1e87dd4bd2ad15bb780eedd54d48ea15e3a9dce020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb9fb5facd3227965f6b21028a745ff5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0717a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4884230b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "0100000001a600ab0bd3aa3413456705935f8043eb9c1f0a3bfcdbaaa8bf7948f8805139cb020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb8399b8cd3227965fdf210396581df5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a07111210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea6fb200b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "01000000013d2eec15508be916d798945a52633cad5d8686ae965c0ca66703180842882267020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb8399b8cd3227965fdf210396581df5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a07111210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae965e230b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "0100000001c3fa19eeed7473fc2a56894842fcb6f6c4da50b10d60c8b58b97870c7f9e7378020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e903f7c29b7a3f0ccebbbf13ccd3227965fca2102b816faf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a071fc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed4a0200b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "0100000001cd4fe2e5f9a6b53bdcd40f523de521ddb155f3669f173e981a1ed689ad69c610020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e903f7c29b7a3f0ccebbbf13ccd3227965fca2102b816faf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a071fc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee438230b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "01000000012be532d416f9dd3e668b698f064f2a3775f62bcf0c8fcfe3642c08aab2650517020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0ccebb1fb1dcd3227965f282102b21cdbf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0712a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0246200b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "0100000001bcd2dcbefaf32b15c2ea12e3fa857261e1c990d0b4b3a46fd87b746091ebacca020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0ccebb1fb1dcd3227965f282102b21cdbf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0712a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae3213230b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "broadcast": "010000000179b6c6981f2f536ace6f5cfc3ac1a7e2dfe15afe150a31b3990a87abd743b7b8020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ef55a2754d5a317861b2b0179679f0aff2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefa0c200b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "broadcast": "01000000010cdd178f8a6d21be2d53e8de77285911e24dd34a02c81e40af9271b705714967020000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ef55a2754d5a317861b2b0179679f0aff2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aebaf4220b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "broadcast": "01000000016188f43f98011834e51ab55dfb404326c152df7eabcd283e383988be634ddb16010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ea25a26b6037aae368e2b0179679f0adc2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef2d31f0b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "broadcast": "0100000001cd3b5ebdb12de232585ca5f6bea690d55da0c72c04ff733814dfa7eddff87be8010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ea25a26b6037aae368e2b0179679f0adc2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae42d6220b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "broadcast": "01000000012fc5f409d1ad7f150f02368ff7bf1e1cb7650b53f50dcdb9fcc12350989d40f0010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295e0e5a7fa3f0cceb97452b0179679f0ac02103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeea9a1f0b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "broadcast": "0100000001df974e0ce7c974d730ddd82c8c92255af41da3be8ce29657c0c6ab4ae62dcd1f010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295e0e5a7fa3f0cceb97452b0179679f0ac02103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aecab7220b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "order": "01000000017e0a1bf52e1f6375e2d7fafdf32d4f2c2677bd0ad87e239c18fec2289414334e010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fe497cceb974529b7c2a7965f9621029ea8cc75076c9fb9c541785f3bb0fc28198b34982dbb629ec04b4f8b05a07191210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee2611f0b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "order": "0100000001738b0bbed1b03b7860266b25df8e41d26c07e8513fc0ffc7db230b8aad574bdc010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fe497cceb974529b7c2a7965f9621029ea8cc75076c9fb9c541785f3bb0fc28198b34982dbb629ec04b4f8b05a07191210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae5299220b000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "burn": "0100000001648de4516b2dc76236a14cefba132ca8f2d49166e842770abc4e83b7b48a06cc010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff0200e1f505000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ace96a2905000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "burn": "0100000001b78a0753b597c6d340d2982d3d690f4bbac4bdd184ef54e03315e79601350844010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff0200e1f505000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac59a22c05000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "send": "010000000101bdc18529ab4873e1d4162fe789d7eb67c762a3da5f97906f13ec41b3091718010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353ae781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d1537965fe121029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae17102905000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "send": "010000000101bdc18529ab4873e1d4162fe789d7eb67c762a3da5f97906f13ec41b3091718010000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353aee80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d1537965fe121029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea77c2c05000000006952210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" } ] \ No newline at end of file diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.log b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.log new file mode 100644 index 0000000000..ad39813535 --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.log @@ -0,0 +1,231 @@ +Creating connection to `:memory:`. +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 3.00000000; txid: d331d71f0f5d5f62261d6f18019459f9a0711c1fa0a0e38004386319cefbccfc; vout: 0; confirmations: 7'] +Fee/KB 0.00025000 +New input: amount: 3.00000000; txid: d331d71f0f5d5f62261d6f18019459f9a0711c1fa0a0e38004386319cefbccfc; vout: 0; confirmations: 7 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 2.37994375 BTC +Burn: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 burned BTC for XCP (15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 2.37994375; txid: 15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.37994375; txid: 15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 2.37984725 BTC +Send: XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (121285e4ce5c17fbd6e0b0277702af982cdc14054735154a9043beecb247b84f) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 2.37984725; txid: 121285e4ce5c17fbd6e0b0277702af982cdc14054735154a9043beecb247b84f; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.37984725; txid: 121285e4ce5c17fbd6e0b0277702af982cdc14054735154a9043beecb247b84f; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 1000000 +Size: 272 Fee: 0.01000000 Change quantity: 2.36983725 BTC +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375) [open] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 2.36983725; txid: c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.36983725; txid: c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 2.36975925 BTC +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a) [open] +Considering: c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375 +Tx0 Price: 2.0; Tx1 Inverse Price: 2.1 +Potential forward quantities: 50000000, 52500000 +Forward Quantity: 50000000 +Backward Quantity: 100000000 +Tx0 fee provided remaining: 0.01; required fee: 0.00857142 +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375) [open] +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a) [open] +Order Match: BTC for XCP (c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375_89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a) [pending] +Order match has only -10 confirmation(s). +data_btc_out=2000 (data_value=1000 len(data_array)=2) +Sorted candidate UTXOs: ['amount: 2.36975925; txid: 89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.36975925; txid: 89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 387 final_fee 9675 +Size: 387 Fee: 0.00009675 Change quantity: 1.86964250 BTC +Order Match: BTC for XCP (c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375_89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a) [completed] +Database: set status of order_match c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375_89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a to completed. +BTC Payment: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid BTC to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 for order match c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375_89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a (f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86964250; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 3; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.86964250; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 3; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86956450 BTC +Issuance: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 created 10.0 of divisible asset BBBB (9238105e39efd4b7d428ad14011ad0c0f366bdcd150afa954e1f25c0cf4c2cc9) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86956450; txid: 9238105e39efd4b7d428ad14011ad0c0f366bdcd150afa954e1f25c0cf4c2cc9; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 2'] +Fee/KB 0.00025000 +New input: amount: 1.86956450; txid: 9238105e39efd4b7d428ad14011ad0c0f366bdcd150afa954e1f25c0cf4c2cc9; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86948650 BTC +Issuance: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 created 100000 of indivisible asset BBBC (19d9d6059edf351635fa19ad867ccfa1db3959a5109fc63729430110a661b6e8) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86948650; txid: 19d9d6059edf351635fa19ad867ccfa1db3959a5109fc63729430110a661b6e8; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 3'] +Fee/KB 0.00025000 +New input: amount: 1.86948650; txid: 19d9d6059edf351635fa19ad867ccfa1db3959a5109fc63729430110a661b6e8; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86939000 BTC +Send: BBBB from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (b25659252f68f162d96cf2cf3070b30e5913b472cbace76985e314b4634641a0) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86939000; txid: b25659252f68f162d96cf2cf3070b30e5913b472cbace76985e314b4634641a0; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 4'] +Fee/KB 0.00025000 +New input: amount: 1.86939000; txid: b25659252f68f162d96cf2cf3070b30e5913b472cbace76985e314b4634641a0; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86929350 BTC +Send: BBBC from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (592e248181970aa6f97f2cfe133323d3ffb2095dd7f411cfd20b1ab611238a11) [valid] +Total quantity to be distributed in dividends: 0.00000024 XCP +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86929350; txid: 592e248181970aa6f97f2cfe133323d3ffb2095dd7f411cfd20b1ab611238a11; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 5'] +Fee/KB 0.00025000 +New input: amount: 1.86929350; txid: 592e248181970aa6f97f2cfe133323d3ffb2095dd7f411cfd20b1ab611238a11; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86921550 BTC +Dividend: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid XCP per unit of BBBB (f2f6db13d6bda4def4f1bd759b603c64c962f82017329057a9237ceaf171520a) [valid] +Total quantity to be distributed in dividends: 0.004208 XCP +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86921550; txid: f2f6db13d6bda4def4f1bd759b603c64c962f82017329057a9237ceaf171520a; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 6'] +Fee/KB 0.00025000 +New input: amount: 1.86921550; txid: f2f6db13d6bda4def4f1bd759b603c64c962f82017329057a9237ceaf171520a; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86913750 BTC +Dividend: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid XCP per unit of BBBC (a4353c6bd3159d3288f76c9f40fdbde89d681b09ec64d1f2b422b2e9e30c10d8) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86913750; txid: a4353c6bd3159d3288f76c9f40fdbde89d681b09ec64d1f2b422b2e9e30c10d8; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 7'] +Fee/KB 0.00025000 +New input: amount: 1.86913750; txid: a4353c6bd3159d3288f76c9f40fdbde89d681b09ec64d1f2b422b2e9e30c10d8; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86905950 BTC +Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:33:20 with a fee of 99.999999%% (9ec74a4822710f9534a3815f0e836a09219f6c766880a57767c7514071d99084) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86905950; txid: 9ec74a4822710f9534a3815f0e836a09219f6c766880a57767c7514071d99084; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 8'] +Fee/KB 0.00025000 +New input: amount: 1.86905950; txid: 9ec74a4822710f9534a3815f0e836a09219f6c766880a57767c7514071d99084; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86896300 BTC +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86896300; txid: ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 9'] +Fee/KB 0.00025000 +New input: amount: 1.86896300; txid: ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86886650 BTC +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375) [expired] +Expired order: c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Considering: ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c +Tx0 Inverse Odds: 0.5; Tx1 Odds: 0.6024096385542169 +Potential forward quantities: 50000000, 41500000 +Forward Quantity: 41500000 +Backward Quantity: 20750000 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet Match: BullCFD for XCP against BearCFD for XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that value, leveraged 3.0x (ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c_ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86886650; txid: ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 10'] +Fee/KB 0.00025000 +New input: amount: 1.86886650; txid: ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86877000 BTC +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a) [expired] +Expired order: 89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86877000; txid: 6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 11'] +Fee/KB 0.00025000 +New input: amount: 1.86877000; txid: 6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86867350 BTC +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Considering: ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c +Skipping: leverages disagree. +Considering: 6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d +Tx0 Inverse Odds: 2.3333333333333335; Tx1 Odds: 2.3333333333333335 +Potential forward quantities: 150000000, 150000000 +Forward Quantity: 150000000 +Backward Quantity: 350000000 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet Match: BullCFD for XCP against BearCFD for XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that value, leveraged 1.0x (6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d_10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86867350; txid: 10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 12'] +Fee/KB 0.00025000 +New input: amount: 1.86867350; txid: 10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86857700 BTC +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86857700; txid: caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 13'] +Fee/KB 0.00025000 +New input: amount: 1.86857700; txid: caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86848050 BTC +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Considering: caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc +Tx0 Inverse Odds: 0.8666666666666667; Tx1 Odds: 0.8666666666666667 +Potential forward quantities: 750000000, 750000000 +Forward Quantity: 750000000 +Backward Quantity: 650000000 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet Match: Equal for XCP against NotEqual for XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:40 that value, leveraged 1.0x (caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc_67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86848050; txid: 67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 14'] +Fee/KB 0.00025000 +New input: amount: 1.86848050; txid: 67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86840250 BTC +Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:34:10 with a fee of 5.0%% (e87bf8dfeda7df143873ff042cc7a05dd590a6bef6a55c5832e22db1bd5e3bcd) [valid] +Bet Match Force‐Liquidated: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c_ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943) +Bet Match: BullCFD for XCP against BearCFD for XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that value, leveraged 3.0x (ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c_ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943) [settled: liquidated for bear] +Database: set status of bet_match ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c_ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943 to settled: liquidated for bear. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86840250; txid: e87bf8dfeda7df143873ff042cc7a05dd590a6bef6a55c5832e22db1bd5e3bcd; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 15'] +Fee/KB 0.00025000 +New input: amount: 1.86840250; txid: e87bf8dfeda7df143873ff042cc7a05dd590a6bef6a55c5832e22db1bd5e3bcd; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86832450 BTC +Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:01 with a fee of 5.0%% (1fcd2de64aabc6c05796e28cbea31df45a25928c2cd8dd30d774c9e70c4e97df) [valid] +Bet Match Settled: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d_10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd) +Bet Match: BullCFD for XCP against BearCFD for XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that value, leveraged 1.0x (6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d_10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd) [settled] +Database: set status of bet_match 6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d_10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd to settled. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86832450; txid: 1fcd2de64aabc6c05796e28cbea31df45a25928c2cd8dd30d774c9e70c4e97df; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 16'] +Fee/KB 0.00025000 +New input: amount: 1.86832450; txid: 1fcd2de64aabc6c05796e28cbea31df45a25928c2cd8dd30d774c9e70c4e97df; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86824650 BTC +Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:41 with a fee of 5.0%% (dc4b57ad8a0b23dbc7ffc03f51e8076cd2418edf256b2660783bb0d1be0b8b73) [valid] +Bet Match Settled: NotEqual won the pot of XCP; XCP credited to the feed address (caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc_67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c) +Bet Match: Equal for XCP against NotEqual for XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:40 that value, leveraged 1.0x (caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc_67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c) [settled: for notequal] +Database: set status of bet_match caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc_67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c to settled: for notequal. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86824650; txid: dc4b57ad8a0b23dbc7ffc03f51e8076cd2418edf256b2660783bb0d1be0b8b73; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 17'] +Fee/KB 0.00025000 +New input: amount: 1.86824650; txid: dc4b57ad8a0b23dbc7ffc03f51e8076cd2418edf256b2660783bb0d1be0b8b73; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86816850 BTC +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BBBB for XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (4408350196e71533e054ef84d1bdc4ba4b0f693d2d98d240d3c697b553078ab7) [open] +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.86816850; txid: 4408350196e71533e054ef84d1bdc4ba4b0f693d2d98d240d3c697b553078ab7; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 18', 'amount: 0.00001000; txid: ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c; vout: 0; confirmations: 10', 'amount: 0.00001000; txid: ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943; vout: 0; confirmations: 9', 'amount: 0.00001000; txid: 6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d; vout: 0; confirmations: 8', 'amount: 0.00001000; txid: 10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd; vout: 0; confirmations: 7', 'amount: 0.00001000; txid: caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc; vout: 0; confirmations: 6', 'amount: 0.00001000; txid: 67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c; vout: 0; confirmations: 5'] +Fee/KB 0.00025000 +New input: amount: 1.86816850; txid: 4408350196e71533e054ef84d1bdc4ba4b0f693d2d98d240d3c697b553078ab7; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.86811225 BTC +Burn: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 burned BTC for XCP (181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86811225; txid: 181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6; vout: 0; confirmations: 19'] +Fee/KB 0.00025000 +New input: amount: 0.86811225; txid: 181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.86801575 BTC +Bet: XCP against XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Expired bet: ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c +Send: BBBC from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (f4a0c2582fb141e9451a7c00fa61afc147b9959c2dd20a1978950936fdb53831) [valid] +Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BBBB for XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (4408350196e71533e054ef84d1bdc4ba4b0f693d2d98d240d3c697b553078ab7) [expired] +Expired order: 4408350196e71533e054ef84d1bdc4ba4b0f693d2d98d240d3c697b553078ab7 +Checking for conservation of assets. +XCP has been conserved (1498.99847262 XCP both issued and held) +BBBB has been conserved (10.0 BBBB both issued and held) +BBBC has been conserved (100000 BBBC both issued and held) +All assets have been conserved. diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.sql b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.sql new file mode 100644 index 0000000000..f727abcb5f --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.sql @@ -0,0 +1,1593 @@ +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table blocks +DROP TABLE IF EXISTS blocks; +CREATE TABLE blocks( + block_index INTEGER UNIQUE, + block_hash TEXT UNIQUE, + block_time INTEGER, + previous_block_hash TEXT UNIQUE, + difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, + PRIMARY KEY (block_index, block_hash)); +INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); +INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'cff3ba7c92f6b318eb4a4a5e2b90b655fc055d4e8a82101b813aef6e1c6152e4','9f6f20e36fd2b2b44df6e91fbfaeffc6d7fae9917b27d196245ee90c36d99ff1','bc5d8c91c313b29a25eaa2d2e11e1bd97fe008d00c839297dcd49e1621db3f52'); +INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'2281de0177f4fcf8d730e2751d7b9fb5da4df741196bbcaff470c7860a2ca0b6','49836952844fe3f887e718d236efa6b1f4cc0b81cfc010f79a6349562ebfc162','7cc5e482a40df2d4117bf20b8147533413476cdcfd1e6deecdccbc59c47fc932'); +INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'802742a55d8ab83de24c45efb86d1daa0ad4e565cc4db6dcaa5cedb16ec4125f','017a0ddcf461ffcc3c89042ba6a6337efcc276c8f144daad445ba0e4a36bab33','4ad1a9f32ee87ac0555d21ce47678479bcf1c8eda08a2e077415a61b779727ab'); +INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'ed279c6a985256134cfb39f1283ec97c8dc800b7255a3e8243ca9846884d0378','8ec458bf08abe2f3634eafac5af321f02cf5d470c2a87301b8061efe3dcc644f','38e2d500e8d15490bedc66c0f0bbcdc99344b029769d491d3a4525ccdf103bd1'); +INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'bba1ec90ee149be7d8a88ff9df1fca931e076e885be21bc822637829a8675e02','e2e334cb3c300e622a50d2c206fe532a3320f56c445dc1a9dec750417260fe9a','f1685e33922ffd2bf21efe93ad4485fdb0a38ce9eeb9153cbb30b5d6f488167f'); +INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'5f8a9d465e686b3e9471041bd15d645b7fc8afee36ee890873aa6c3c51d87bb5','260ad7ae2e2b555f7adf9155fcb761e7ed7a2d22f128457db0f1ff363b498d64','4f344d84a72456f31d0dbccce963e00d84e86d281841128a17207ae7f8d6f253'); +INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'153795f1c7ae2dbec7fc19bb25d03dd518f0664bca82b9bb92bb7c4f1e22f040','c047baa686f8bf24c406cf03687c0b4fe6b95e4afe0b396e0f507a694fb10245','8c23065853e3425deb7e59ca9ab4a20a5e0c1d112d089fb7979fc2ce46a28751'); +INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'c5d21baa8c6949a8e9f0d73a37436d431bf4876ab3b60b82553877ec53fc4454','d9532f5bdd583968d88ed24feb95b50c5e319d36171dd7bc6067ddf3d13c623c','ee7d313e39ad6e5a404a72a511b1f9d9b7ea57cd2b00cf8b6ce68383a986b8c5'); +INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'579de8204446e9128076fd27a644a82da77ca5ff2793ff56815c24a11218af5e','5b37c224e5684c0b3a913793e7e97c4f88b26b6c6d7683de8e06bb9485fba409','8af7b1e91eb3234a0a6ca4ce7b3ae7a9cbe036e2f4f56d73ef46af9b0cbc6b07'); +INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'c03a6e31f50f172c86029ce6a810ec730e1179ad3e76ba5d4290595ec414bb87','f81c6592f74098821e15c146c2a7e4a5be2cc743431d37a5fb6d4143b89907d5','e0874cb759b043d5a0cffe4bba8158c93ab85b34a913dd3b5c6e8c4e820469c0'); +INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'804651f6571bb24ef7534c97116ae35fb0b6b31aa6a4574a419aae7fc2900b1c','3698516a21c2c590522e6419eae91ed8b469d922863141def1f3e295c4954dfd','461bd1cc8d501c1d94bdc966fdb8d850c73747640d27822f765e14b8252e5619'); +INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'a9a18fcba1a83d637dcfd633f32848d55c86c5b499e0c15af6a626653b7424b8','deaaba2ecb1772901052ae6490a1015e75146af3b2707b1c148562deff91af49','b23e33acc698f16c20720d7cae47429e28fa50214661707259ad3bf5da52c4da'); +INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'27298dbdb9026b5d54228b686b7a76f9d42479da79b38b9ef7cd13e4fee27159','e409e7c7435482a64f10aaaaa6e62d69a4f0ae3083922c91907d6f15393dbb22','ed6230f6972e95b5728039f0cb668a93b431fb8120887c3e4d9efff73711bcfb'); +INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'f5fbbb8870bb8253cfba52c58765b8c2493ceee6a2db5779a4212ed456bf892e','78b492a743e24d50541f29a1a8e476434e81961bd457552c55fcbbac68d68fca','2327901e1e084e191b56b5f56730d95fc90445dacc43d1b3b2ff7d549df9a7ae'); +INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'f1e77a7a4d28d64a0cfd878112074b6205ef09055b93b8923b0c6466a07ea500','475ee3563b60fa5bbf8f8db5eabf9bdfea4a2f1b5fc82aedc37fa7c581c5f065','17e95de3200b7dadc9375719c11bbdaa5fb441c6125616a50420fae6f28d0890'); +INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'014bcc839c0ea0d2fecd9aab3074528ffee3b2dce7f805e4d459e2dfb3d98a51','5d40b180a3f3b38eedd15c7f40e8585aaa5e2fdde3967dff443a74703fa45fd4','e4f3292966345066bd2d5fdf57edc9f16e38ba245cae6aedd1299f16445334ca'); +INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'9f72d6a84ee58e1e851a90a62b525dc257c3b1b0c7e9964f93a7e5df6a2e4007','e990e43e7272c9d971fcc782768bea70c71d45fa7d712a7195bcc4151617a57f','8ea5befe37e882d68b4854d46f7d31a80fad75ead250d75913c3ce91c79ed1ad'); +INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'5d1e195a7d313d703253640cd98be600b04a7d98aae69b5327a29e740573198d','443444009d5700747b2d345cc10a70bf5a48214bc279d811a311ef76e52abf04','ad4a01ac4bb17dc1b080b66ff614c471db9af2a4bb7d6cb43969ccc1de81d7a5'); +INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'f38538a4a2cba9bcf8821b56e1dc877990e027135d3f220338cd8cb11f3eb205','abe72d22a1fb28e1ce34bfe3f1fd012d5a41fe219a0c4ee96f3b4b0e49aea889','9b465ca5ad8928674f1cef6fba63fbfd65e6ebda6e6e558b75ccbbed84f1fc75'); +INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'3a51f1f061d953c940ac7e53f8bb37df041f2d4f42a16f5c5d23707b8b0c0dc6','8bea2f5ef9805bffa4b23881f7635ec213525f8dfe98aa45e716e43a73ffe114','f8b973c67e304e36776fb0af00cdda875d9338a793b7e82bcea63e947ab91fda'); +INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'cce3284c53fcf79ba268d925e32ab70e3d4df1e6f13dbcbe2920e93fc689128b','d0e8a123b3125a8e057d8504b7a96e77188895c86907c273922b80e7e9ca42d2','e1c658beae5bf602905165fed484aa6cb3316c55f0a06f8541c7a13e005c5e55'); +INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'6ad5172a6dcaa6706d5a4f6fd8ada183e103b9faab58e42c1365613a26477490','1c207ab28dd2c5d297f47d5ac366699523cd97ccfc8a3e348dbf6fe900c32b5d','866ab553c37b57fa91dac5fe86eab9b1f77084dea5ba15c32f2a36dbf1a86c46'); +INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'c9361fea7f3dd2415969eb6ad7fe893381c9ca65ea391f2e47a966e342db3a90','c0867554bd3d50cd8ca4bb6e2d055250fa0c3c46f47b5f03ce5022b7090e07d4','6c3ad31d4e3467077111df1fbd89a800a8ff3b50f521a57c2d850f896947a67c'); +INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'f63680db66cf963aaaebf64130629790e7492b5ea9396434c2179a5eb8774412','6a3cc06342da18a8eae7180bd93af2cc3a6f7c51916a19265365814f52a58119','afd5351bd7ae4c51647241a70f9ad11e849d1d98f0adaccee584ca046d56d8b2'); +INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'d69ea243fcd5e525ae03af680d5610b654a9d2bad17782e196305aaa110a6ba9','7e4a0076ce614d5b7bcb0a59c84e79d21702a3507ba88bc0d8ce9e644d7fe692','640312589b96c8d1d1f7ac443e3a70f9582cb163f50859b84b603e2d9e106446'); +INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'721906ed4cbd1524fafdc8e3ffef27d8b03e0c798bbcbe3eee7bc7f14afe4e81','c1596eb8c172f2968ddd2ef70c1a8f125ab989c1a7bb012ab56f6c75cd96bb41','8e5f183242f85edf8332740d4a909795d864ad8999ccda69a79f4791e1b09823'); +INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'27912da2afa797876030dd0e50c31aea462d54c7bfa4f89d2f14fdb7b80db6b0','2d653751a75829265f2cfe2dd7bcc3a594be62492893d36642e3c8815d339fbd','2a223297238ba02439e0c841d983a1599eb7220d0ee2b809cf24f1bda5ba5c8d'); +INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'cc0734ecfd2bdbd2d04d236b853f60e324feaa9115fae33a8add961c4a5f9436','3d5c1eb8dafccfee04f7d91b2819d9f51a9fe8df4050c025c19c29ceb18b3575','04a8532f67fa4e77c3b8eb1b40b5031847f56b1423a4c8ea15e1a6aca193322f'); +INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'d3f5fbbe85d5a81fef8735c73349f61a43122f4b6f3f7aa61215323a683ce3aa','e6600d6d90725ce81afdd7b00220f8df650f85dc3a308d2486fab88edaaa8981','d6806ba376783f03ceb1834ae52cfbbb3f56be24e3030d278101ca9a78c6c94b'); +INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'74d08f0d1cad9f7102d0cfe70f50614c7ae7f4844ca6d02390031e1e96c2b418','341aa44dcd4967cc3356ca23c97111b1cf3ee128c944493a0ebc6458c4f119be','8ab0f0622c3ab2ae9fa595c466f62a8a3226d7e5eca1b109e6a56eb6ec823c74'); +INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'753a1a8bb877851ae24dbc33884344f34ee18c6b0d70a4d909231448b943e8cd','b9385290e5bd72f2a1a5d2cc889108a6da0aa888fdcf76170b166888c6301407','da744d83f89d1b84543883df6aea4cbe4f3948ba536b8835b54f4838213ef899'); +INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'f7c62d08a4efc854dea6f47249786d3d00778d97223dd84de1d0fd1eef3e2ee7','6c27a0cb80d8602b9ccd126f53bb69727d358353b4c1299434c3472b0469d85f','04678cc58f3acb8576b3bbd0a0a0596ccf7411a648b03632274306f3e166bd0c'); +INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'833690f195e85b427b61890640fe8f0cc7419e0f4301b6f4738bab12be06dbb8','cb3ca17e5c792309fead54d49039ee0e00e7b17291868a3a2e86e09bb3dae80e','5abb320fca527fe911c599bd4c19872e3eb411bf4c424f144f0a5599a82b7cfc'); +INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'a1e118474a6f70b8f700a67b43ee0272c4609d3309603b5be6434ca587eaa704','2f097bb1b1dff2b4266dcb3b46d29255401e23a2fcfb75f28e9f7184733e14bc','d63826de6ba124dd5cb0817b906ecd00cb6e4d8777fbc7565fc28afcbfda97bc'); +INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'3b6427f61fb59ffd674ed8e0af75687fc4ccf8b462011727d4dc4bdf4c794775','be05766d9a1c70d8907d523979a313ccec8cf2900335fd91800b4b90da3bee12','c88a66b2fa925e1772125912639d486395579a55e65cd8f47c26769518ad93bb'); +INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'d065384f739c52a718f656717f88eb2fecc10d8567a93ccf823434c003d28c55','41cb2236ce676fd45ae98593c9cac6291fa95479ec07a5af615ccb5fbbeab760','d3feda481f181d2cef937fd21d46d1580864482a881138cbbc3287d155b10363'); +INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'22cddc8dbfcbaf4b851fa5379c740a96294acc3d772dcf6d684881bef18d7fbf','0beb88a3d4adbf913601c2d5144599cecfd48886ca51f995aecfeb50c56aab1c','933c72aefaa083d184293cdd4540a73a6e1561e60961994b1d04f9d3b1d1f92a'); +INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'93172c51a9c4cb5c33937a199a32ad3c13a40a60f4c194a1187e2c59a15c0ccc','ea276540d3637a9165f482c48e414467e3a78c2c25c6a70bbed0c38f7205920e','39d6e154b495c7b4e4eb3248d0b614940d89e64ac0e7f045943a4ac55a045395'); +INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'7a167a13f7e576c7e066035dbe2a2513659f1386c095a9e63afa494c043b7def','15ef5d6175a7ce1937554ed6c2b10be6555aa14f7179245b7b140d1a620095fc','e7226055f7b588f788186f87bff4ef224aef9c37a13af85e5caa181cb4d71af1'); +INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'4733d9ada3d4f60bc09f0a6eba3fdcdcd8e8b18adfd38c7bf06372259e2d38f3','4ac5fe346b8577626d58c9442c95fccd4955506ac712ee3f27b5df6b7ec1d0df','78a2f175a801868262e075f8a610f31bc3caa336ab27882fae12b31b09aa787e'); +INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'b8021bbe3744e58cedfc3dd99220fce48f4e56a8fe8256d7894dd55c7312a76d','acbb3114dc5c7599eabdaec4833952c3b6de20dde616233f3945151977d5be16','662c56dec282c1dcd99df19e37644da1630a7dd45324884a680bcd51a3dda795'); +INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'017b79a5fb34785dd39964a61a5bde69d676f75ee085c27bbc9e3381983c2dab','6cbdfb2d6b3677c91097b1e80a32dafb0172725fabff370adcf444321ee48509','233d260e7f023cae68c3dfa8239b2e3ed49c0c27fceb7e1fcc02f7722447549d'); +INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'cf5389c037b6c619025bf95d9718fb5548cd67978c3ebf26f76029873828162e','a091876d90aaf1dd5b0d53403a3a9b5788710bf3d0c1996184a91961a1f24aa0','88850c87b6caff6fecebcc463d7fabcc8f61e9ba89b577846fd38529a267820c'); +INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'df116ea1fcf5f968644dcc97c1149f0ef6061b188fd56c27152543256ce79009','eafb7d2cbbb2d1afe4a3eb65ca6bc7be653d7d824238264082d2c5e382757e54','9f2953f273bd620578b4fe71346c403107aaf655053e0b70aa0c15304559beee'); +INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'c12cfaa984bfb34e781ac93848a87cdc0318c45a1cd9f02d31f5c3a4abe8d918','61cb811c578f90cd6cc9f6963ff80c280f6ad0edb53fe53dd3075a8818404fe8','1eab209fc0fc7e9432542095e9157d8f723f5349a9f32b66712976ea14886188'); +INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'999a9ed2673de2db7637e22eb8a1876e0c794e90f09cdd76d1442e56ae12b1c8','ce9e3f0524576a630ed0154cf69c7798065a001e6752c4f369c30b06aebbe378','037e365e037a80893beeb0742ad945742e383e7a076caf199c36a5086b42eaf4'); +INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'240c9a2f6dc918ed868abfb5de6838d7a17f02263fdda0ccd3c7481c09e155d1','4f83f9bc531841759d1071a92ccda5d898af693fc88db0de16b2d2ca09630d59','4f4319f573e791c8a77b0a2496e727f51fe0911373ff7fb0fad794c5c7c7d125'); +INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'79836105e355e25afd709d15632e2c0d1ab53ab251cd3750ffee9fea4a2605b8','b17c5d4fc0eef05c315095d265b324a0ea7dee28145d7b4e251a944b4b6a16fb','93f0c966c09d999c9a34353304eee9edfefabb5a42db8eb53f0c61ded8627eef'); +INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'6bf0789392e97311c4283d9f748b37effe7b0d1678076e30ce5725eff345a8c5','f9f7ec8bdc9301d4ea41a099d04f84631badad709fdbdf43582327f183102590','22e2123c28e3e194f93aed54fd954c0822b173fbe22c9a822779204ca599b3e0'); +INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'1842c46a03800f5e191cb8d641aead6bc80e6d25c2ec826f3a5df426059cc1cb','458e51569acd6ef757e0b36ab3f558e76f239ea3bfbf1b0ce7824f39ec5ac23b','4a6453db76748b2ce7f55a45b1c45ae1e164768c1237593cefc9859fdee1170b'); +INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'d424b02109320491b2d32388869d6468ab1fca26d4bf72374cfef729efad866d','53e0972193c4f689d3a7216f22607a9b0cb7b8a9f43f144469bfbf25f59edb09','695cd3769970d8de57864539408c301b5b0a68051fa56649ed4bae554e327d31'); +INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'d1db4181403136b41168ab7786831f2fadfc418a05b7477246ab097bab531859','89bbd06ca16ed2098ac6b7accd2296b4e0a2d8236dbf1cc14137e90ebad364e3','5be2909508104e2465ad2751fb88065442fb942fa7d6d2d8f94f63fb02807217'); +INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'97fdb6b2c8e636d23109a67af55ab4bb30955a84073274de3fdc788074dc1b6b','8b8739b799483eb556e0e32f92cc092c349bb2bcb87044e88e762d55d6f1b033','c9853ffea97d3a70c400fed255e7b58724685c3b70a2eb01496f208131e643e8'); +INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'0506be4f04a22058504406210af3f1475dbf6d6834c1c1b7f6ac0fe013b47363','05673a7bf2fc7e9a5daf3732cb03bcf43712df43ef7ecf1bfe89d18f54726b6b','285e87aaec3acebf4da9e34abf50a02e6cce3bb09898de0b7e503c46a9da3db4'); +INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'3dc7894c1368c9ef5d32a95fdc292e7de8237b73b61365a25b9d0da95eedc2e6','4651aab35442e5ec1d79ba6422ca0c2b0df02369ee49b33efe1ef54e2ebc7080','fe24a57eb1232022a1dd19fb2f3567fd0573c6e36ccd0133e0f82e3e797e1a22'); +INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'a9ef2c8bf3a88c326d2bdd722c3d82ed4f4c10b65620b136d4b893ed93174795','d826fea28c0f5e82a6fbefae4d6885a0a49a3180d3c16d6eeb4faff9f57d4d89','8d0e5b458138e16ce8f2f9498282e8925419a02d94fec380a2712d601363eeed'); +INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'13b76edecb04a9733107d5c21420ee20424fd463dcde2ea98424ad99ed3383f0','fe620dd60bf5b6f3c610495735deca47cdbfcbb510975ebba2f68c7df6d32a15','c6365b74fade2e92ee0aa88caab93be90f1ab7dc63f996cddb95b42ecaf6e956'); +INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'41c8a47d7bc4e73aa2f09685acb9fac052c5c55764ec3a8250abbbcde40dbe90','553ea196d7a1045f71dc6261cbfe4b84c78b7dc37de89b8865f4d385cbb42863','c2fa8a0376bf244ced2b65053f9e7aaa04b1efc58082bee4f0a79ba63e8fd81d'); +INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'0b8ec211d258206ab8c318c079d9deb33d444a7086d5a05aaba97abc0be137df','c3fd7824c9b8413f24feb96ca676285447a980d684f730d10b81c06a440fab7a','862b0633bc046313bdf458b8195055fc3fff807f86ab6b7d6022ccfafffda3f0'); +INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'f5c2686408577854893d11b02f52d8ea917e90777dddf67c98aabb36a3339b6f','3f73e1d36c82dfc8ee58f83502643d962ba6558cbf0fb46d83fea966b5cdfc59','21827f2c501e31216d470e279f62c7b92072da35208b1b8f7f240be2fbe4c9ae'); +INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'b80d446905550494f56f4f8240b501d593b0d0e63b5d98a09e180b1a0a68e3b1','f1995db5beea80756d509ddf79d3467bb14ae96b0d151175499030505d1f648e','0c345ce57ae781be24c13192f460913c56a9574aa15825503854f526947fc6b0'); +INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'41b30d23becc727151698b29a1bb733e45ae5086683c5256d073a6f817baaf49','de6a4e6bbd49de2001ce26387040970beeb7062b4e16911757204d2745f6c409','764de2405946d3159f994b926010813ee08973975cd67b1256eb616cedb17c96'); +INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'f873f47e89715e965c98e92616339f8ff4200f6b8ef5cf747e8de2d101cbde02','f2954d07588b07ffc063170f43afbb12548fe61584575a979526d28dd631edaa','4c001ca3e995213995bdc2db0dce7a58ec248e93ff7bb8477b81ae91f552844f'); +INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'14ce21ebfe6a00eccd7bf1aac2d5cf122441d2ebe8c0f5fd6dd14a95b5a209b3','96b5675e5c3a3b66d7e2bd3424316119cf795c17bbbf2c8677b66872e4659574','b81a5b3f177f81081392796fe5aa1fcca11e8c8a0189f12f1c2480e599595bb1'); +INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'adb05bac5e7f1e6a1679d5c51f252dc877ebd99c2b73a56df69a9c848cef98a7','243e437b3c00d8106e8c9c2cb08d22376e8a16bd3b62a8b62b86128ddd6d139e','40478bc4a4de7f4e0c8d44fd02fd34729d03450cfc4338ef3f9dcc0ab8479b2e'); +INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'9065476b6b2cfb122888e036cea71d36f3d5f7d6c72451c63d770b40a4560fac','4af47a042289756821ffb0b14aba38fcc8c972fd254220d3991b05642df641e6','a8a263f98e2bfbfa92b48ae85680f978f4a70d45c43c1912e2164f1cae818354'); +INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'7d5d369827ec0cd44743ed9a519d45003789ff8dc2e511191d2726e1482f58d2','4d61dab0197a7a3f452f3751a92cb1f5378106a13be0351f0f8942d011da097d','1793dd6e0d0d142f468c0783640b9820d773507340d0010a66d4f3ae4963bcbb'); +INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'301b22a9338d5dd39bbebf6bf518ac53bbb8e1cf7469322484cbcee2fee666ef','ae0cf0361293deb7b8903f20aca2410197db694ea3aff0aec3b635690168f5a5','a924e83b9bd228d49a3bd069fceea07824ddefc8a527058794b27a317c3a1eab'); +INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'fc281736e1dfe5a89a9a3dd098565c645904a4ad1626dd70ac8e9bc447dfb8b8','460295c507a33a24231d1f4c760e5987b54f29d1e17bc97959db2a712f0339bf','bdc8da3f081faf85977af78d44f6fce11e51c2cbd2d4673159b89a085f1b1a34'); +INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'b0249a0dfd008a4554adc24085d3c5f44278403cbccb44ba27ee354b23c5627b','d07500b12517493106b918ff5b6c96c371bc10bb3699eb279647539ea7ab1fd5','4f9f59e7666cb5e57bce597b75ec673043fbae87638cd6fd4d2d088420722ab9'); +INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'d34051879c8db679ac5c49e50edf2085d0ce88dfc1adb971e7b097c0177854c2','874e494499820bcc0ba41ac5cd1bd153ac1772f730c9b842b77b289adbb2c2f5','9f718c1612daf64999ea728083eba82c43ce522846af087ffa0720e6527b2532'); +INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'0186c5312af19576cc628a85014ce7c33892dc23b5352c8ff5a0f230adfe263b','01342c18caeaea6b35f2d815b9aeffbd92228f6ad285103faa13cb25171fdfc6','0925a28798369ee6c0c57bd0abb52074d423ec0586514d40490cdea3a284ece6'); +INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'5376530512d61c3967f21cf01418d317ed072976119b8583fefaf3991b93d8b2','72a7d63ad0b15a401210b197da00ca549b6e8c80d8eda1650cf9017bcbc92532','d650cc617ba80b9ccc1c5aefac62b2866e8261953944d6ecd59565ed90afe9e5'); +INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'d15fe704fe5de58e9203ff5ded50218a1a01609b65a1a259aec510b8b9e6d690','924753a39229b5005b684c4b2dd111b6233347b89179f2fd2732d256b960ace0','e02061a370aed903e4907c2dd1f836d75b60fdce8632972ef0603cce33d73166'); +INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'61015667044d0dddac3bdb16db67faa6ebcb71758101bfad898fca8ed183e7c3','298ed692f21afcee61b06fd853cf07e5707dbd63a05f0caff6b6a177edc3b613','cd0210cd6cdb8b73067a2567e07cfce86f0085870295559958899a28b3b8881a'); +INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'5dd06f32075c46b6e573d73f12c1c31cf82cac5d1588bbdf302b8fe95c4b948b','528e4b6aee88202f84f9f2b56611d0aba2336d925b8d8fe47039504e6eea1ebc','5bd9b94bb406de703d6e946c5dd8295fb2ffa5cdbcc7d0fe5354aed51e70e625'); +INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'8e1782c2f35a07fcc4c57b34b2226b70cc4c7af2761386f38fc8fd74d53d5e60','76682f0ffbc6b86d16fbcec967a7562f6f12558c12aa3d9abd8779f51cc870ab','495636e0f526ef0a53b302b9375b7407a0beb3d7055902d8dae2836ab3d4153c'); +INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'6469ff80c3890d274817d30602f33d5d4b0a7c0a9e3b85100d21d7b38d894efb','187e9ae8428d46b7f8c8d652ab31dcf7c86a574cc781714a71784857dc0d1365','317413899df749aa5554d34fdd2f1478333cef23b408364e8f8377cd60d46319'); +INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'3ca73c2bf37c694281938a0599335633dccf0284a027f5f3b8e17a9e68cbcdf0','f7830250755fc0566ee5162a06e7308b51c9c0a7a951752be6cff224806a90fa','27370758e77a9d1c3818d44a2921abbde144b23b2ece45b5eb4eceab07ac390a'); +INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'ae4a36e1ce7d5e11f059301684573cddce85b70ba69188a116e0611ceba5c140','8d3b4ed30546c5f19f5522a0f57a86c29159ce27bf9e1e183a5ecffd9fbae8a2','c01351d95914d6c733e21353a8a9a6d3b854bf80f296746a68f6b620f5344599'); +INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'c2c0b96c64f1ed555c8553da976e0fcc3a5ef403819ceac49cf22b476281ced1','d9ecf83f3f9f40246bee151938855fce34e0f9c636a5c9c2c80c896eb59287b9','3ac3410b693a21631f34417012a129a24f8776c8e377ee46a5aefcba4d3a134f'); +INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'88d1b09f8141b90b44740e4618422298f8a64f2b3d11230c6b04084ef8d11b2c','49e2f64485ac3ef523a079732bce9b2197384e2abfb3a4ad9340bca5a7179e31','729549a7824e98ff8574edaa4031fe57280f4d11a8dfcfaea3fe81d1bf6470b7'); +INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'dab22ae7a9216033777136cbbac87a3597cf6478a2fd008260caab3cad0cde3f','5406c6e3c63633910da82fc039c525dbeeb1aa818dc450a9d34d43084eef680f','8931e79aa14a0bfadab481f82751443458399797849b96fce1e9bf426d823547'); +INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'a185e60dc97d19a211b0dfaa3f3da154956499b4af146751bf1d776fc68c15b8','76e009b37822fc739a1e4abccf9f908a5fcdbed7fac540a719efbff8ebc694b7','187cd5dcac4da9ff47c81842af5512e7f6864bcdc57d430d94925119b9c8f273'); +INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'622c574321be176c535fde918f319e10cfacaab383978be51406334303d14a8d','f3a3c37d89eb008f2194267a1eb5a7a52e9443f8b1f5fe51267d93a57eee27c7','95b794c4ccaa1233afbff517ce642cd8c04aeb75cba8a124b2979b36ddc5aa7a'); +INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'5556084b92f51175d4de4097fcd820a3c367c2f0630d3a20081296e892462d84','f284f757d004154b6ab9b9ee9d18281e6f8dd51f25f3f1fc7cc58450e0ba5f17','39af43fb612dd698be8df6d207de7cf731c4fca392fa4ab91a5812d50e8e3dcd'); +INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'fc9dd8ef92fc7d47b187a75bd16e9698d61fa9ce6b4da7bba75982f59b0fbbc5','e5f9da1d98725423a240687ba2985b42f8acb274ba0122b4e31e25c57619845f','8293308da0da202cb9a69f7e95c8b6f45d85ca480bf57cfa31f49cb635c61030'); +INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'21f7329fa27373fba176043db9081b0d9f95f75421e5adce87177a3edffcedc0','7935ee6c215a123367ddfae34507170148723d08f1963aad7e47b68520fa4e70','dfa193f84dc1e9e4dbb0b59c4c89faa3a913d6445e56ef79a240bc6c810ddc64'); +INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'19164a10a0602df57d1add2e3a31ad4eef9d3ef9e53e70174b44aa91de2d6296','d35a417416c712908cdfbeda76e261a55c605ff8091605a79d4d4fc986ae76cd','dcba7f6a4a05d8428071f06b0c4eaf30812af9afb00b46e10664ecc72ff9a3d6'); +INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'87f1c713c5f2cd84fab28b996008900f86bf9eaad25ceedac1507348a949be7c','44c73622e27c362abf0460a5e0d7b836091523b763b6183cb9815cee30d66bef','338149c3f332f74580199c14d3965e23045488a9dcd34b572c2a0456917211c7'); +INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'75264a6a628d669a60b4a8ca7e24b6b5ef1ad2c74d955b8325959f906c3bc337','c1771520c57b0c705c3a5f0d576622c8dd40c399e4946b63ba153af976b23b0e','4c95bc0942c9692b2c7c36ba3bad1ed28fe0e2b4e21f0f7d42cd1e3184841dad'); +INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'27914e38b3ca9d8444275e5c6d24b5cfe0b4093f7c645d5c1fc3c39e0d3a3c60','329ae5ae96b71b9a116cb82d9518110e63d32a9dfcb6fece911201ab6c3a78c5','db27ff9d575d717600965e635f85f227fcc959562d80d29ee0d925003da7886d'); +INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'eca83e762899ace4d990b8acb23183263df5f92be10b63aecab3518b340b975d','6183465e58c5e5ef0f359a032e98d12cd247ff080ae44dc7a90ee35006e74e9e','c5cf4cc7316ecf5894d8b1784699c0f198a0f170f250bbe52f9b723bf6111434'); +INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'3544fab97fe90a35b1f52ba955f88a8149d90329986df38d97e12992201bb187','407c0451107403f827f434f3f8f8e3c9adb33362ab584802d87903afe3851f4d','25f68834695dc5db7ef38f35e583841d309cc8243396981278cb373c7b148484'); +INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'df1e6d8f1be344f78c0b58baf7260c2abdbed3175adc45a122947815c08fcc16','d4bc7124f8beb9fe04930a1b19a66aef57669e6bf790a5d38441beefcc001dbf','280b9cdc9db2cbc821f930a009a37f0ca86215ec129c7b1082d4bea818268a87'); +INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'8b9febcfe1a9447f6a820c060f503dfe6e5c02738df4d9d63b007fe03847a6c7','7038d6f46cc32e35793799e50fbce7bde13c52c379e3bea10da0e6443a221c62','21809246b48c1176b704365aa17bcc2cd9710647ba92e881f5fb8d7f03820787'); +INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'b927091b4cf42f8537058a9adbec3814b574c1e1ccd242fe44c5f3671a191304','7640d47e11233c9d27a8e868bec5595acd99b3c7326a480298f7ea38c4a66689','97b509dd88222947ae6cea9d05cd83dba3ab8a78e8634457e5c2ff132f23da17'); +INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'649d094cfc74f90e06bb4514276aaf3b0a0ed45f56397a2f774cae9602d02e6f','ce9cdd6db6e1bbea3a9446b50b092e504bcc58900befb237580896e1c107eaab','113c708543d2c31488379349289f248f82f793225e82f4ccf523a12235e6d8a7'); +INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'c9a9dec300afba2cc3f171f76ff4c07cbeb7a41a86a3f498f712e066a8acbd17','7153d6b86e3d8ed76bed0edd2dbd4fe6200e1e6d82d51dd3f812d6b43109f503','01d2776c0f56f3407d61771059ac70efd6dab0be196f5e80e610b11be4c417ef'); +INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'3c7434887f9373b5370664180ba640fa63c2eb5b85569875105e4f4db67d8c02','adfefb6d18cdf44329bf9330e32f265145f60290f2a75db73fea8dd8ed2eb7d6','59959d361896f12c9be7e62fcbd7fa78779cd365d719638394a404afc91985b0'); +INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'7e6a09386c3d8552a0dcc25b75143876a3046ebac0ff9cb09d6224ea7e2f3df9','2776deb848ce539546aada2bc1756d9de92b23e0a8d513f5dbfb1b0bb3be3bc5','8826b44560d4c5571c767a67539f6f62bd5a052d62f9cd9a46cd7e7b8c4b23ca'); +INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'6903c0c5941f334f1374aa731e389b010043fc5940d4e9ae8b94480fb4fca030','6612c5f602f26ccc2cf4961f27e64c188ba405870cc0d7cf881c4e0fcb9a54ce','652e2ccd67309917c9c06161f59938928fe791a3ff445d259460206eb97b724f'); +-- Triggers and indices on blocks +CREATE INDEX blocks_block_index_block_hash_idx ON blocks (block_index, block_hash) + ; +CREATE INDEX blocks_block_index_idx ON blocks (block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transactions +DROP TABLE IF EXISTS transactions; +CREATE TABLE transactions( + tx_index INTEGER UNIQUE, + tx_hash TEXT UNIQUE, + block_index INTEGER, + block_hash TEXT, + block_time INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + fee INTEGER, + data BLOB, + supported BOOL DEFAULT 1, + FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), + PRIMARY KEY (tx_index, tx_hash, block_index)); +INSERT INTO transactions VALUES(1,'15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); +INSERT INTO transactions VALUES(2,'121285e4ce5c17fbd6e0b0277702af982cdc14054735154a9043beecb247b84f',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',1000,7650,X'0000000000000000000000010000000002FAF080',1); +INSERT INTO transactions VALUES(3,'c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,1000000,X'0000000A00000000000000000000000002FAF08000000000000000010000000005F5E100000A0000000000000000',1); +INSERT INTO transactions VALUES(4,'89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000000A00000000000000010000000006422C4000000000000000000000000002FAF080000A00000000000DBBA0',1); +INSERT INTO transactions VALUES(5,'f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',50000000,9675,X'0000000BC953EB18873CE8AED42456DF0ECE8E4678E13282D9917916E7A4AEC10E82837589A44A3314B298A83D5D14C8646900A5122B8A1E8F6E0528E73EA82044D1726A',1); +INSERT INTO transactions VALUES(6,'9238105e39efd4b7d428ad14011ad0c0f366bdcd150afa954e1f25c0cf4c2cc9',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'000000140000000000004767000000003B9ACA000100000000000000000000',1); +INSERT INTO transactions VALUES(7,'19d9d6059edf351635fa19ad867ccfa1db3959a5109fc63729430110a661b6e8',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000014000000000000476800000000000186A00000000000000000000006666F6F626172',1); +INSERT INTO transactions VALUES(8,'b25659252f68f162d96cf2cf3070b30e5913b472cbace76985e314b4634641a0',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',1000,7650,X'00000000000000000000476700000000003D0900',1); +INSERT INTO transactions VALUES(9,'592e248181970aa6f97f2cfe133323d3ffb2095dd7f411cfd20b1ab611238a11',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',1000,7650,X'000000000000000000004768000000000000020E',1); +INSERT INTO transactions VALUES(10,'f2f6db13d6bda4def4f1bd759b603c64c962f82017329057a9237ceaf171520a',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000032000000000000025800000000000047670000000000000001',1); +INSERT INTO transactions VALUES(11,'a4353c6bd3159d3288f76c9f40fdbde89d681b09ec64d1f2b422b2e9e30c10d8',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000032000000000000032000000000000047680000000000000001',1); +INSERT INTO transactions VALUES(12,'9ec74a4822710f9534a3815f0e836a09219f6c766880a57767c7514071d99084',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB3300405900000000000005F5E0FF09556E69742054657374',1); +INSERT INTO transactions VALUES(13,'ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000052BB33640000000002FAF08000000000017D7840000000000000000000003B100000000A',1); +INSERT INTO transactions VALUES(14,'ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000152BB336400000000017D78400000000002793D60000000000000000000003B100000000A',1); +INSERT INTO transactions VALUES(15,'6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000052BB33640000000008F0D1800000000014DC93800000000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(16,'10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000152BB33640000000014DC93800000000008F0D1800000000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(17,'caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000252BB33C8000000002CB417800000000026BE36803FF0000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(18,'67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000352BB33C80000000026BE3680000000002CB417803FF0000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(19,'e87bf8dfeda7df143873ff042cc7a05dd590a6bef6a55c5832e22db1bd5e3bcd',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB33324058F7256FFC115E004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(20,'1fcd2de64aabc6c05796e28cbea31df45a25928c2cd8dd30d774c9e70c4e97df',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB3365405915F3B645A1CB004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(21,'dc4b57ad8a0b23dbc7ffc03f51e8076cd2418edf256b2660783bb0d1be0b8b73',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB33C94000000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(22,'4408350196e71533e054ef84d1bdc4ba4b0f693d2d98d240d3c697b553078ab7',310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000000A00000000000047670000000002FAF08000000000000000010000000002FAF080000A0000000000000000',1); +INSERT INTO transactions VALUES(23,'181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01',310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','mvCounterpartyXXXXXXXXXXXXXXW24Hef',100000000,5625,X'',1); +INSERT INTO transactions VALUES(24,'f4a0c2582fb141e9451a7c00fa61afc147b9959c2dd20a1978950936fdb53831',310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',1000,7650,X'0000000000000000000047680000000000002710',1); +-- Triggers and indices on transactions +CREATE INDEX transactions_block_index_idx ON transactions (block_index) + ; +CREATE INDEX transactions_block_index_tx_index_idx ON transactions (block_index, tx_index) + ; +CREATE INDEX transactions_tx_hash_idx ON transactions (tx_hash) + ; +CREATE INDEX transactions_tx_index_idx ON transactions (tx_index) + ; +CREATE INDEX transactions_tx_index_tx_hash_block_index_idx ON transactions (tx_index, tx_hash, block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transaction_outputs +DROP TABLE IF EXISTS transaction_outputs; +CREATE TABLE transaction_outputs( + tx_index, + tx_hash TEXT, + block_index INTEGER, + out_index INTEGER, + destination TEXT, + btc_amount INTEGER, + PRIMARY KEY (tx_hash, out_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,310001,2); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92845000000,310003,4); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92945000000,310004,5); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92895000000,310005,6); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',1000000000,310005,6); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92845000000,310006,7); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',100000,310006,7); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000,310007,8); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,310007,8); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',99474,310008,9); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,310008,9); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844999976,310009,10); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844979976,310009,10); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000024,310009,10); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844559176,310010,11); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844539176,310010,11); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50420824,310010,11); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92794539176,310012,13); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92769539176,310013,14); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92773789176,310013,14); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92778789176,310014,0); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92628789176,310014,15); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91528789176,310016,17); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90937926676,310018,19); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90941039176,310018,19); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91100339176,310019,20); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91416039176,310019,20); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91441039176,310019,20); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92771039176,310020,21); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92841039176,310020,21); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',946000000,310021,22); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149840926438,310022,23); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149849426438,310023,0); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',89474,310023,24); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10526,310023,24); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000,310032,0); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,310001,2); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92845000000,310003,4); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92945000000,310004,5); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92895000000,310005,6); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',1000000000,310005,6); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92845000000,310006,7); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',100000,310006,7); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000,310007,8); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,310007,8); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',99474,310008,9); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,310008,9); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844999976,310009,10); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844979976,310009,10); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000024,310009,10); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844559176,310010,11); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844539176,310010,11); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50420824,310010,11); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92794539176,310012,13); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92769539176,310013,14); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92773789176,310013,14); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92778789176,310014,0); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92628789176,310014,15); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91528789176,310016,17); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90937926676,310018,19); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90941039176,310018,19); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91100339176,310019,20); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91416039176,310019,20); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91441039176,310019,20); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92771039176,310020,21); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92841039176,310020,21); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',946000000,310021,22); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149840926438,310022,23); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149849426438,310023,0); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',89474,310023,24); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10526,310023,24); +INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000,310032,0); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table credits +DROP TABLE IF EXISTS credits; +CREATE TABLE credits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + calling_function TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO credits VALUES(310000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',93000000000,'burn','15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399',1); +INSERT INTO credits VALUES(310001,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,'send','121285e4ce5c17fbd6e0b0277702af982cdc14054735154a9043beecb247b84f',2); +INSERT INTO credits VALUES(310004,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',100000000,'btcpay','f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6',5); +INSERT INTO credits VALUES(310005,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',1000000000,'issuance','9238105e39efd4b7d428ad14011ad0c0f366bdcd150afa954e1f25c0cf4c2cc9',6); +INSERT INTO credits VALUES(310006,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',100000,'issuance','19d9d6059edf351635fa19ad867ccfa1db3959a5109fc63729430110a661b6e8',7); +INSERT INTO credits VALUES(310007,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,'send','b25659252f68f162d96cf2cf3070b30e5913b472cbace76985e314b4634641a0',8); +INSERT INTO credits VALUES(310008,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,'send','592e248181970aa6f97f2cfe133323d3ffb2095dd7f411cfd20b1ab611238a11',9); +INSERT INTO credits VALUES(310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',24,'dividend','f2f6db13d6bda4def4f1bd759b603c64c962f82017329057a9237ceaf171520a',10); +INSERT INTO credits VALUES(310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',420800,'dividend','a4353c6bd3159d3288f76c9f40fdbde89d681b09ec64d1f2b422b2e9e30c10d8',11); +INSERT INTO credits VALUES(310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',4250000,'filled','ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943',14); +INSERT INTO credits VALUES(310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',5000000,'cancel order','89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a',0); +INSERT INTO credits VALUES(310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd',16); +INSERT INTO credits VALUES(310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd',16); +INSERT INTO credits VALUES(310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c',18); +INSERT INTO credits VALUES(310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c',18); +INSERT INTO credits VALUES(310018,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',59137500,'bet settled: liquidated for bear','e87bf8dfeda7df143873ff042cc7a05dd590a6bef6a55c5832e22db1bd5e3bcd',19); +INSERT INTO credits VALUES(310018,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',3112500,'feed fee','e87bf8dfeda7df143873ff042cc7a05dd590a6bef6a55c5832e22db1bd5e3bcd',19); +INSERT INTO credits VALUES(310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',159300000,'bet settled','1fcd2de64aabc6c05796e28cbea31df45a25928c2cd8dd30d774c9e70c4e97df',20); +INSERT INTO credits VALUES(310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',315700000,'bet settled','1fcd2de64aabc6c05796e28cbea31df45a25928c2cd8dd30d774c9e70c4e97df',20); +INSERT INTO credits VALUES(310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',25000000,'feed fee','1fcd2de64aabc6c05796e28cbea31df45a25928c2cd8dd30d774c9e70c4e97df',20); +INSERT INTO credits VALUES(310020,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',1330000000,'bet settled: for notequal','dc4b57ad8a0b23dbc7ffc03f51e8076cd2418edf256b2660783bb0d1be0b8b73',21); +INSERT INTO credits VALUES(310020,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',70000000,'feed fee','dc4b57ad8a0b23dbc7ffc03f51e8076cd2418edf256b2660783bb0d1be0b8b73',21); +INSERT INTO credits VALUES(310022,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',56999887262,'burn','181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01',23); +INSERT INTO credits VALUES(310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',8500000,'recredit wager remaining','ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c',0); +INSERT INTO credits VALUES(310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10000,'send','f4a0c2582fb141e9451a7c00fa61afc147b9959c2dd20a1978950936fdb53831',24); +INSERT INTO credits VALUES(310032,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,'cancel order','4408350196e71533e054ef84d1bdc4ba4b0f693d2d98d240d3c697b553078ab7',0); +-- Triggers and indices on credits +CREATE TRIGGER block_update_credits + BEFORE UPDATE ON credits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX credits_address_idx ON credits (address) + ; +CREATE INDEX credits_asset_idx ON credits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table debits +DROP TABLE IF EXISTS debits; +CREATE TABLE debits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + action TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO debits VALUES(310001,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'send','121285e4ce5c17fbd6e0b0277702af982cdc14054735154a9043beecb247b84f',2); +INSERT INTO debits VALUES(310003,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,'open order','89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a',4); +INSERT INTO debits VALUES(310005,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'issuance fee','9238105e39efd4b7d428ad14011ad0c0f366bdcd150afa954e1f25c0cf4c2cc9',6); +INSERT INTO debits VALUES(310006,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'issuance fee','19d9d6059edf351635fa19ad867ccfa1db3959a5109fc63729430110a661b6e8',7); +INSERT INTO debits VALUES(310007,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',4000000,'send','b25659252f68f162d96cf2cf3070b30e5913b472cbace76985e314b4634641a0',8); +INSERT INTO debits VALUES(310008,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',526,'send','592e248181970aa6f97f2cfe133323d3ffb2095dd7f411cfd20b1ab611238a11',9); +INSERT INTO debits VALUES(310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',24,'dividend','f2f6db13d6bda4def4f1bd759b603c64c962f82017329057a9237ceaf171520a',10); +INSERT INTO debits VALUES(310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',20000,'dividend fee','f2f6db13d6bda4def4f1bd759b603c64c962f82017329057a9237ceaf171520a',10); +INSERT INTO debits VALUES(310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',420800,'dividend','a4353c6bd3159d3288f76c9f40fdbde89d681b09ec64d1f2b422b2e9e30c10d8',11); +INSERT INTO debits VALUES(310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',20000,'dividend fee','a4353c6bd3159d3288f76c9f40fdbde89d681b09ec64d1f2b422b2e9e30c10d8',11); +INSERT INTO debits VALUES(310012,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'bet','ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c',13); +INSERT INTO debits VALUES(310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',25000000,'bet','ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943',14); +INSERT INTO debits VALUES(310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',150000000,'bet','6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d',15); +INSERT INTO debits VALUES(310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',350000000,'bet','10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd',16); +INSERT INTO debits VALUES(310016,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',750000000,'bet','caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc',17); +INSERT INTO debits VALUES(310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',650000000,'bet','67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c',18); +INSERT INTO debits VALUES(310021,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,'open order','4408350196e71533e054ef84d1bdc4ba4b0f693d2d98d240d3c697b553078ab7',22); +INSERT INTO debits VALUES(310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',10000,'send','f4a0c2582fb141e9451a7c00fa61afc147b9959c2dd20a1978950936fdb53831',24); +-- Triggers and indices on debits +CREATE TRIGGER block_update_debits + BEFORE UPDATE ON debits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX debits_address_idx ON debits (address) + ; +CREATE INDEX debits_asset_idx ON debits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table messages +DROP TABLE IF EXISTS messages; +CREATE TABLE messages( + message_index INTEGER PRIMARY KEY, + block_index INTEGER, + command TEXT, + category TEXT, + bindings TEXT, + timestamp INTEGER); +INSERT INTO messages VALUES(0,310000,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(1,310001,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(2,310002,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(3,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(4,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(5,310003,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(6,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(7,310003,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(8,310003,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(9,310004,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(10,310004,'update','order_matches','[''order_match_id'', ''status'']',0); +INSERT INTO messages VALUES(11,310004,'insert','btcpays','[''block_index'', ''btc_amount'', ''destination'', ''order_match_id'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(12,310005,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(13,310006,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(14,310007,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(15,310008,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(16,310009,'insert','dividends','[''asset'', ''block_index'', ''dividend_asset'', ''fee_paid'', ''quantity_per_unit'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(17,310010,'insert','dividends','[''asset'', ''block_index'', ''dividend_asset'', ''fee_paid'', ''quantity_per_unit'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(18,310011,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(19,310012,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(20,310013,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(21,310013,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(22,310013,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +INSERT INTO messages VALUES(23,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(24,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(25,310013,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(26,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(27,310013,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(28,310012,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(29,310014,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(30,310014,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(31,310014,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +INSERT INTO messages VALUES(32,310014,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(33,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(34,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(35,310015,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(36,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(37,310015,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(38,310014,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(39,310016,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(40,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(41,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(42,310017,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(43,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(44,310017,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(45,310016,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(46,310018,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(47,310018,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(48,310018,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(49,310018,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(50,310019,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(51,310019,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(52,310019,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(53,310019,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(54,310020,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(55,310020,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(56,310020,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(57,310020,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(58,310021,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(59,310022,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(60,310023,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(61,310023,'update','bets','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(62,310023,'insert','bet_expirations','[''bet_hash'', ''bet_index'', ''block_index'', ''source'']',0); +INSERT INTO messages VALUES(63,310023,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(64,310032,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(65,310032,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(66,310032,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +-- Triggers and indices on messages +CREATE TRIGGER block_update_messages + BEFORE UPDATE ON messages BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX messages_block_index_idx ON messages (block_index) + ; +CREATE INDEX messages_block_index_message_index_idx ON messages (block_index, message_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_match_expirations +DROP TABLE IF EXISTS order_match_expirations; +CREATE TABLE order_match_expirations( + order_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on order_match_expirations +CREATE TRIGGER block_update_order_match_expirations + BEFORE UPDATE ON order_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_match_expirations_block_index_idx ON order_match_expirations (block_index) + ; +CREATE INDEX order_match_expirations_tx0_address_idx ON order_match_expirations (tx0_address) + ; +CREATE INDEX order_match_expirations_tx1_address_idx ON order_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_matches +DROP TABLE IF EXISTS order_matches; +CREATE TABLE order_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + forward_asset TEXT, + forward_quantity INTEGER, + backward_asset TEXT, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_paid INTEGER, + status TEXT); +INSERT INTO order_matches VALUES('c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375_89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a',3,'c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',4,'89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,'XCP',100000000,310002,310003,310003,10,10,310023,857142,'pending'); +INSERT INTO order_matches VALUES('c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375_89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a',3,'c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',4,'89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,'XCP',100000000,310002,310003,310004,10,10,310023,857142,'completed'); +-- Triggers and indices on order_matches +CREATE TRIGGER block_update_order_matches + BEFORE UPDATE ON order_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_matches_backward_asset_idx ON order_matches (backward_asset) + ; +CREATE INDEX order_matches_block_index_idx ON order_matches (block_index) + ; +CREATE INDEX order_matches_forward_asset_idx ON order_matches (forward_asset) + ; +CREATE INDEX order_matches_id_idx ON order_matches (id) + ; +CREATE INDEX order_matches_match_expire_index_idx ON order_matches (match_expire_index) + ; +CREATE INDEX order_matches_status_idx ON order_matches (status) + ; +CREATE INDEX order_matches_tx0_address_forward_asset_idx ON order_matches (tx0_address, forward_asset) + ; +CREATE INDEX order_matches_tx0_hash_idx ON order_matches (tx0_hash) + ; +CREATE INDEX order_matches_tx1_address_backward_asset_idx ON order_matches (tx1_address, backward_asset) + ; +CREATE INDEX order_matches_tx1_hash_idx ON order_matches (tx1_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_expirations +DROP TABLE IF EXISTS order_expirations; +CREATE TABLE order_expirations( + order_hash TEXT PRIMARY KEY, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO order_expirations VALUES('c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310013); +INSERT INTO order_expirations VALUES('89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310014); +INSERT INTO order_expirations VALUES('4408350196e71533e054ef84d1bdc4ba4b0f693d2d98d240d3c697b553078ab7','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310032); +-- Triggers and indices on order_expirations +CREATE TRIGGER block_update_order_expirations + BEFORE UPDATE ON order_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_expirations_block_index_idx ON order_expirations (block_index) + ; +CREATE INDEX order_expirations_source_idx ON order_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table orders +DROP TABLE IF EXISTS orders; +CREATE TABLE orders( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + give_asset TEXT, + give_quantity INTEGER, + give_remaining INTEGER, + get_asset TEXT, + get_quantity INTEGER, + get_remaining INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_required INTEGER, + fee_required_remaining INTEGER, + fee_provided INTEGER, + fee_provided_remaining INTEGER, + status TEXT); +INSERT INTO orders VALUES(3,'c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375',310002,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,50000000,'XCP',100000000,100000000,10,310012,0,0,1000000,1000000,'open'); +INSERT INTO orders VALUES(4,'89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a',310003,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,105000000,'BTC',50000000,50000000,10,310013,900000,900000,6800,6800,'open'); +INSERT INTO orders VALUES(3,'c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375',310003,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'open'); +INSERT INTO orders VALUES(4,'89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a',310003,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'open'); +INSERT INTO orders VALUES(3,'c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375',310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'expired'); +INSERT INTO orders VALUES(4,'89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a',310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'expired'); +INSERT INTO orders VALUES(22,'4408350196e71533e054ef84d1bdc4ba4b0f693d2d98d240d3c697b553078ab7',310021,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'open'); +INSERT INTO orders VALUES(22,'4408350196e71533e054ef84d1bdc4ba4b0f693d2d98d240d3c697b553078ab7',310032,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'expired'); +-- Triggers and indices on orders +CREATE TRIGGER block_update_orders + BEFORE UPDATE ON orders BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX orders_block_index_idx ON orders (block_index) + ; +CREATE INDEX orders_expire_index_idx ON orders (expire_index) + ; +CREATE INDEX orders_get_asset_give_asset_idx ON orders (get_asset, give_asset) + ; +CREATE INDEX orders_give_asset_idx ON orders (give_asset) + ; +CREATE INDEX orders_source_give_asset_idx ON orders (source, give_asset) + ; +CREATE INDEX orders_status_idx ON orders (status) + ; +CREATE INDEX orders_tx_hash_idx ON orders (tx_hash) + ; +CREATE INDEX orders_tx_index_tx_hash_idx ON orders (tx_index, tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_expirations +DROP TABLE IF EXISTS bet_match_expirations; +CREATE TABLE bet_match_expirations( + bet_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on bet_match_expirations +CREATE INDEX bet_match_expirations_block_index_idx ON bet_match_expirations (block_index) + ; +CREATE INDEX bet_match_expirations_tx0_address_idx ON bet_match_expirations (tx0_address) + ; +CREATE INDEX bet_match_expirations_tx1_address_idx ON bet_match_expirations (tx1_address) + ; +CREATE TRIGGER block_update_bet_match_expirations + BEFORE UPDATE ON bet_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_matches +DROP TABLE IF EXISTS bet_matches; +CREATE TABLE bet_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_bet_type INTEGER, + tx1_bet_type INTEGER, + feed_address TEXT, + initial_value INTEGER, + deadline INTEGER, + target_value REAL, + leverage INTEGER, + forward_quantity INTEGER, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bet_matches VALUES('ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c_ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943',13,'ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',14,'ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310012,10,10,310022,99999999,'pending'); +INSERT INTO bet_matches VALUES('6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d_10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd',15,'6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',16,'10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310014,10,10,310024,99999999,'pending'); +INSERT INTO bet_matches VALUES('caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc_67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c',17,'caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',18,'67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,3,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310016,10,10,310026,99999999,'pending'); +INSERT INTO bet_matches VALUES('ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c_ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943',13,'ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',14,'ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310018,10,10,310022,99999999,'settled: liquidated for bear'); +INSERT INTO bet_matches VALUES('6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d_10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd',15,'6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',16,'10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310019,10,10,310024,99999999,'settled'); +INSERT INTO bet_matches VALUES('caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc_67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c',17,'caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',18,'67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,3,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310020,10,10,310026,99999999,'settled: for notequal'); +-- Triggers and indices on bet_matches +CREATE INDEX bet_matches_block_index_idx ON bet_matches (block_index) + ; +CREATE INDEX bet_matches_deadline_idx ON bet_matches (deadline) + ; +CREATE INDEX bet_matches_id_idx ON bet_matches (id) + ; +CREATE INDEX bet_matches_status_idx ON bet_matches (status) + ; +CREATE INDEX bet_matches_tx0_address_idx ON bet_matches (tx0_address) + ; +CREATE INDEX bet_matches_tx1_address_idx ON bet_matches (tx1_address) + ; +CREATE TRIGGER block_update_bet_matches + BEFORE UPDATE ON bet_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_resolutions +DROP TABLE IF EXISTS bet_match_resolutions; +CREATE TABLE bet_match_resolutions( + bet_match_id TEXT PRIMARY KEY, + bet_match_type_id INTEGER, + block_index INTEGER, + winner TEXT, + settled BOOL, + bull_credit INTEGER, + bear_credit INTEGER, + escrow_less_fee INTEGER, + fee INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_match_resolutions VALUES('ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c_ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943',1,310018,'0',0,59137500,NULL,NULL,3112500); +INSERT INTO bet_match_resolutions VALUES('6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d_10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd',1,310019,'1',159300000,315700000,NULL,NULL,25000000); +INSERT INTO bet_match_resolutions VALUES('caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc_67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c',5,310020,NULL,NULL,NULL,'NotEqual',1330000000,70000000); +-- Triggers and indices on bet_match_resolutions +CREATE TRIGGER block_update_bet_match_resolutions + BEFORE UPDATE ON bet_match_resolutions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_expirations +DROP TABLE IF EXISTS bet_expirations; +CREATE TABLE bet_expirations( + bet_index INTEGER PRIMARY KEY, + bet_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_expirations VALUES(13,'ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310023); +-- Triggers and indices on bet_expirations +CREATE INDEX bet_expirations_block_index_idx ON bet_expirations (block_index) + ; +CREATE INDEX bet_expirations_source_idx ON bet_expirations (source) + ; +CREATE TRIGGER block_update_bet_expirations + BEFORE UPDATE ON bet_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bets +DROP TABLE IF EXISTS bets; +CREATE TABLE bets( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + feed_address TEXT, + bet_type INTEGER, + deadline INTEGER, + wager_quantity INTEGER, + wager_remaining INTEGER, + counterwager_quantity INTEGER, + counterwager_remaining INTEGER, + target_value REAL, + leverage INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bets VALUES(13,'ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c',310012,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,50000000,50000000,25000000,25000000,0.0,15120,10,310022,99999999,'open'); +INSERT INTO bets VALUES(14,'ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943',310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,25000000,25000000,41500000,41500000,0.0,15120,10,310023,99999999,'open'); +INSERT INTO bets VALUES(13,'ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c',310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'open'); +INSERT INTO bets VALUES(14,'ce9d3a5ea18ed454ddee80b75bd12abdd47de8e176d9c9dfc768c1233e729943',310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,25000000,4250000,41500000,0,0.0,15120,10,310023,99999999,'filled'); +INSERT INTO bets VALUES(15,'6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d',310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,150000000,150000000,350000000,350000000,0.0,5040,10,310024,99999999,'open'); +INSERT INTO bets VALUES(16,'10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd',310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,350000000,350000000,150000000,150000000,0.0,5040,10,310025,99999999,'open'); +INSERT INTO bets VALUES(15,'6722884208180367a60c5c96ae86865dad3c63525a9498d716e98b5015ec2e3d',310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,150000000,0,350000000,0,0.0,5040,10,310024,99999999,'filled'); +INSERT INTO bets VALUES(16,'10c669ad89d61e1a983e179f66f355b1dd21e53d520fd4dc3bb5a6f9e5e24fcd',310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,350000000,0,150000000,0,0.0,5040,10,310025,99999999,'filled'); +INSERT INTO bets VALUES(17,'caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc',310016,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,1388000200,750000000,750000000,650000000,650000000,1.0,5040,10,310026,99999999,'open'); +INSERT INTO bets VALUES(18,'67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c',310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',3,1388000200,650000000,650000000,750000000,750000000,1.0,5040,10,310027,99999999,'open'); +INSERT INTO bets VALUES(17,'caaceb9160747bd86fa4b3b4d090c9e1617285fae312eac2152bf3fabedcd2bc',310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,1388000200,750000000,0,650000000,0,1.0,5040,10,310026,99999999,'filled'); +INSERT INTO bets VALUES(18,'67497105b77192af401ec8024ad34de211592877dee8532dbe216d8a8f17dd0c',310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',3,1388000200,650000000,0,750000000,0,1.0,5040,10,310027,99999999,'filled'); +INSERT INTO bets VALUES(13,'ef92dc4986fdfb4ccb6e101ee949d5307c554e8dd1619307548ec032a973f19c',310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'expired'); +-- Triggers and indices on bets +CREATE INDEX bets_block_index_idx ON bets (block_index) + ; +CREATE INDEX bets_expire_index_idx ON bets (expire_index) + ; +CREATE INDEX bets_feed_address_bet_type_idx ON bets (feed_address, bet_type) + ; +CREATE INDEX bets_feed_address_idx ON bets (feed_address) + ; +CREATE INDEX bets_status_idx ON bets (status) + ; +CREATE INDEX bets_tx_hash_idx ON bets (tx_hash) + ; +CREATE INDEX bets_tx_index_tx_hash_idx ON bets (tx_index, tx_hash) + ; +CREATE TRIGGER block_update_bets + BEFORE UPDATE ON bets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table broadcasts +DROP TABLE IF EXISTS broadcasts; +CREATE TABLE broadcasts( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + timestamp INTEGER, + value REAL, + fee_fraction_int INTEGER, + text TEXT, + locked BOOL, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO broadcasts VALUES(12,'9ec74a4822710f9534a3815f0e836a09219f6c766880a57767c7514071d99084',310011,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000000,100.0,99999999,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(19,'e87bf8dfeda7df143873ff042cc7a05dd590a6bef6a55c5832e22db1bd5e3bcd',310018,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000050,99.86166,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(20,'1fcd2de64aabc6c05796e28cbea31df45a25928c2cd8dd30d774c9e70c4e97df',310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000101,100.343,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(21,'dc4b57ad8a0b23dbc7ffc03f51e8076cd2418edf256b2660783bb0d1be0b8b73',310020,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000201,2.0,5000000,'Unit Test',0,'valid'); +-- Triggers and indices on broadcasts +CREATE TRIGGER block_update_broadcasts + BEFORE UPDATE ON broadcasts BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX broadcasts_block_index_idx ON broadcasts (block_index) + ; +CREATE INDEX broadcasts_status_source_idx ON broadcasts (status, source) + ; +CREATE INDEX broadcasts_status_source_tx_index_idx ON broadcasts (status, source, tx_index) + ; +CREATE INDEX broadcasts_timestamp_idx ON broadcasts (timestamp) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table btcpays +DROP TABLE IF EXISTS btcpays; +CREATE TABLE btcpays( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + order_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO btcpays VALUES(5,'f0c58099c1614dcf2b8fd12be01c63427a5877b8c0367ecadea31ae9eb9714e6',310004,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',50000000,'c953eb18873ce8aed42456df0ece8e4678e13282d9917916e7a4aec10e828375_89a44a3314b298a83d5d14c8646900a5122b8a1e8f6e0528e73ea82044d1726a','valid'); +-- Triggers and indices on btcpays +CREATE TRIGGER block_update_btcpays + BEFORE UPDATE ON btcpays BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX btcpays_block_index_idx ON btcpays (block_index) + ; +CREATE INDEX btcpays_destination_idx ON btcpays (destination) + ; +CREATE INDEX btcpays_source_idx ON btcpays (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table burns +DROP TABLE IF EXISTS burns; +CREATE TABLE burns( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + burned INTEGER, + earned INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO burns VALUES(1,'15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399',310000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',62000000,93000000000,'valid'); +INSERT INTO burns VALUES(23,'181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01',310022,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',38000000,56999887262,'valid'); +-- Triggers and indices on burns +CREATE TRIGGER block_update_burns + BEFORE UPDATE ON burns BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX burns_source_idx ON burns (source) + ; +CREATE INDEX burns_status_idx ON burns (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table cancels +DROP TABLE IF EXISTS cancels; +CREATE TABLE cancels( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + offer_hash TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on cancels +CREATE TRIGGER block_update_cancels + BEFORE UPDATE ON cancels BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX cancels_block_index_idx ON cancels (block_index) + ; +CREATE INDEX cancels_source_idx ON cancels (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dividends +DROP TABLE IF EXISTS dividends; +CREATE TABLE dividends( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset TEXT, + dividend_asset TEXT, + quantity_per_unit INTEGER, + fee_paid INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO dividends VALUES(10,'f2f6db13d6bda4def4f1bd759b603c64c962f82017329057a9237ceaf171520a',310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB','XCP',600,20000,'valid'); +INSERT INTO dividends VALUES(11,'a4353c6bd3159d3288f76c9f40fdbde89d681b09ec64d1f2b422b2e9e30c10d8',310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC','XCP',800,20000,'valid'); +-- Triggers and indices on dividends +CREATE TRIGGER block_update_dividends + BEFORE UPDATE ON dividends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dividends_asset_idx ON dividends (asset) + ; +CREATE INDEX dividends_block_index_idx ON dividends (block_index) + ; +CREATE INDEX dividends_source_idx ON dividends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table issuances +DROP TABLE IF EXISTS issuances; +CREATE TABLE "issuances"( + tx_index INTEGER, + tx_hash TEXT, + msg_index INTEGER DEFAULT 0, + block_index INTEGER, + asset TEXT, + quantity INTEGER, + divisible BOOL, + source TEXT, + issuer TEXT, + transfer BOOL, + callable BOOL, + call_date INTEGER, + call_price REAL, + description TEXT, + fee_paid INTEGER, + locked BOOL, + status TEXT, + asset_longname TEXT, + reset BOOL, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index)); +INSERT INTO issuances VALUES(6,'9238105e39efd4b7d428ad14011ad0c0f366bdcd150afa954e1f25c0cf4c2cc9',0,310005,'BBBB',1000000000,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,0,0,0.0,'',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(7,'19d9d6059edf351635fa19ad867ccfa1db3959a5109fc63729430110a661b6e8',0,310006,'BBBC',100000,0,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,0,0,0.0,'foobar',50000000,0,'valid',NULL,0); +-- Triggers and indices on issuances +CREATE TRIGGER block_update_issuances + BEFORE UPDATE ON issuances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX issuances_asset_longname_idx ON issuances (asset_longname) + ; +CREATE INDEX issuances_asset_status_idx ON issuances (asset, status) + ; +CREATE INDEX issuances_block_index_idx ON issuances (block_index) + ; +CREATE INDEX issuances_source_idx ON issuances (source) + ; +CREATE INDEX issuances_status_asset_tx_index_idx ON issuances (status, asset, tx_index DESC) + ; +CREATE INDEX issuances_status_idx ON issuances (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sends +DROP TABLE IF EXISTS sends; +CREATE TABLE "sends"( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + quantity INTEGER, + status TEXT, + msg_index INTEGER DEFAULT 0, memo BLOB, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); +INSERT INTO sends VALUES(2,'121285e4ce5c17fbd6e0b0277702af982cdc14054735154a9043beecb247b84f',310001,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,'valid',0,NULL); +INSERT INTO sends VALUES(8,'b25659252f68f162d96cf2cf3070b30e5913b472cbace76985e314b4634641a0',310007,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,'valid',0,NULL); +INSERT INTO sends VALUES(9,'592e248181970aa6f97f2cfe133323d3ffb2095dd7f411cfd20b1ab611238a11',310008,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,'valid',0,NULL); +INSERT INTO sends VALUES(24,'f4a0c2582fb141e9451a7c00fa61afc147b9959c2dd20a1978950936fdb53831',310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10000,'valid',0,NULL); +-- Triggers and indices on sends +CREATE TRIGGER block_update_sends + BEFORE UPDATE ON sends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sends_asset_idx ON sends (asset) + ; +CREATE INDEX sends_block_index_idx ON sends (block_index) + ; +CREATE INDEX sends_destination_idx ON sends (destination) + ; +CREATE INDEX sends_memo_idx ON sends (memo) + ; +CREATE INDEX sends_source_idx ON sends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_match_expirations +DROP TABLE IF EXISTS rps_match_expirations; +CREATE TABLE rps_match_expirations( + rps_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_match_expirations +CREATE TRIGGER block_update_rps_match_expirations + BEFORE UPDATE ON rps_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_match_expirations_block_index_idx ON rps_match_expirations (block_index) + ; +CREATE INDEX rps_match_expirations_tx0_address_idx ON rps_match_expirations (tx0_address) + ; +CREATE INDEX rps_match_expirations_tx1_address_idx ON rps_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_expirations +DROP TABLE IF EXISTS rps_expirations; +CREATE TABLE rps_expirations( + rps_index INTEGER PRIMARY KEY, + rps_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_expirations +CREATE TRIGGER block_update_rps_expirations + BEFORE UPDATE ON rps_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expirations_block_index_idx ON rps_expirations (block_index) + ; +CREATE INDEX rps_expirations_source_idx ON rps_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rpsresolves +DROP TABLE IF EXISTS rpsresolves; +CREATE TABLE rpsresolves( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + move INTEGER, + random TEXT, + rps_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on rpsresolves +CREATE TRIGGER block_update_rpsresolves + BEFORE UPDATE ON rpsresolves BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rpsresolves_block_index_idx ON rpsresolves (block_index) + ; +CREATE INDEX rpsresolves_rps_match_id_idx ON rpsresolves (rps_match_id) + ; +CREATE INDEX rpsresolves_source_idx ON rpsresolves (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_matches +DROP TABLE IF EXISTS rps_matches; +CREATE TABLE rps_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_move_random_hash TEXT, + tx1_move_random_hash TEXT, + wager INTEGER, + possible_moves INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps_matches +CREATE TRIGGER block_update_rps_matches + BEFORE UPDATE ON rps_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_matches_id_idx ON rps_matches (id) + ; +CREATE INDEX rps_matches_match_expire_index_idx ON rps_matches (match_expire_index) + ; +CREATE INDEX rps_matches_status_idx ON rps_matches (status) + ; +CREATE INDEX rps_matches_tx0_address_idx ON rps_matches (tx0_address) + ; +CREATE INDEX rps_matches_tx1_address_idx ON rps_matches (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps +DROP TABLE IF EXISTS rps; +CREATE TABLE rps( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + possible_moves INTEGER, + wager INTEGER, + move_random_hash TEXT, + expiration INTEGER, + expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps +CREATE TRIGGER block_update_rps + BEFORE UPDATE ON rps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expire_index_idx ON rps (expire_index) + ; +CREATE INDEX rps_source_idx ON rps (source) + ; +CREATE INDEX rps_status_idx ON rps (status) + ; +CREATE INDEX rps_tx_hash_idx ON rps (tx_hash) + ; +CREATE INDEX rps_tx_index_idx ON rps (tx_index) + ; +CREATE INDEX rps_tx_index_tx_hash_idx ON rps (tx_index, tx_hash) + ; +CREATE INDEX rps_wager_possible_moves_idx ON rps (wager, possible_moves) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table destructions +DROP TABLE IF EXISTS destructions; +CREATE TABLE destructions( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset INTEGER, + quantity INTEGER, + tag TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on destructions +CREATE TRIGGER block_update_destructions + BEFORE UPDATE ON destructions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX destructions_source_idx ON destructions (source) + ; +CREATE INDEX destructions_status_idx ON destructions (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table assets +DROP TABLE IF EXISTS assets; +CREATE TABLE assets( + asset_id TEXT UNIQUE, + asset_name TEXT UNIQUE, + block_index INTEGER, + asset_longname TEXT); +INSERT INTO assets VALUES('0','BTC',NULL,NULL); +INSERT INTO assets VALUES('1','XCP',NULL,NULL); +INSERT INTO assets VALUES('18279','BBBB',310005,NULL); +INSERT INTO assets VALUES('18280','BBBC',310006,NULL); +-- Triggers and indices on assets +CREATE INDEX assets_asset_id_idx ON assets (asset_id) + ; +CREATE UNIQUE INDEX assets_asset_longname_idx ON assets (asset_longname) + ; +CREATE INDEX assets_asset_name_idx ON assets (asset_name) + ; +CREATE TRIGGER block_update_assets + BEFORE UPDATE ON assets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table addresses +DROP TABLE IF EXISTS addresses; +CREATE TABLE addresses( + address TEXT UNIQUE, + options INTEGER, + block_index INTEGER); +-- Triggers and indices on addresses +CREATE INDEX addresses_address_idx ON addresses (address) + ; +CREATE TRIGGER block_update_addresses + BEFORE UPDATE ON addresses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sweeps +DROP TABLE IF EXISTS sweeps; +CREATE TABLE sweeps( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + flags INTEGER, + status TEXT, + memo BLOB, + fee_paid INTEGER, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on sweeps +CREATE TRIGGER block_update_sweeps + BEFORE UPDATE ON sweeps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sweeps_block_index_idx ON sweeps (block_index) + ; +CREATE INDEX sweeps_destination_idx ON sweeps (destination) + ; +CREATE INDEX sweeps_memo_idx ON sweeps (memo) + ; +CREATE INDEX sweeps_source_idx ON sweeps (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispensers +DROP TABLE IF EXISTS dispensers; +CREATE TABLE dispensers( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + asset TEXT, + give_quantity INTEGER, + escrow_quantity INTEGER, + satoshirate INTEGER, + status INTEGER, + give_remaining INTEGER, + oracle_address TEXT, + last_status_tx_hash TEXT, + origin TEXT, + dispense_count INTEGER DEFAULT 0); +-- Triggers and indices on dispensers +CREATE TRIGGER block_update_dispensers + BEFORE UPDATE ON dispensers BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispensers_asset_idx ON dispensers (asset) + ; +CREATE INDEX dispensers_block_index_idx ON dispensers (block_index) + ; +CREATE INDEX dispensers_give_remaining_idx ON dispensers (give_remaining) + ; +CREATE INDEX dispensers_last_status_tx_hash_idx ON dispensers (last_status_tx_hash) + ; +CREATE INDEX dispensers_source_asset_origin_idx ON dispensers (source, asset, origin) + ; +CREATE INDEX dispensers_source_idx ON dispensers (source) + ; +CREATE INDEX dispensers_source_origin_idx ON dispensers (source, origin) + ; +CREATE INDEX dispensers_status_block_index_idx ON dispensers (status, block_index) + ; +CREATE INDEX dispensers_status_idx ON dispensers (status) + ; +CREATE INDEX dispensers_tx_hash_idx ON dispensers (tx_hash) + ; +CREATE INDEX dispensers_tx_index_idx ON dispensers (tx_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenses +DROP TABLE IF EXISTS dispenses; +CREATE TABLE dispenses ( + tx_index INTEGER, + dispense_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, dispense_index, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenses +CREATE TRIGGER block_update_dispenses + BEFORE UPDATE ON dispenses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenses_block_index_idx ON dispenses (block_index) + ; +CREATE INDEX dispenses_dispenser_tx_hash_idx ON dispenses (dispenser_tx_hash) + ; +CREATE INDEX dispenses_tx_hash_idx ON dispenses (tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenser_refills +DROP TABLE IF EXISTS dispenser_refills; +CREATE TABLE dispenser_refills( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, tx_hash, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) + REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenser_refills +CREATE TRIGGER block_update_dispenser_refills + BEFORE UPDATE ON dispenser_refills BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenser_refills_block_index_idx ON dispenser_refills (block_index) + ; +CREATE INDEX dispenser_refills_tx_hash_idx ON dispenser_refills (tx_hash) + ; + +COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.json b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.json similarity index 70% rename from counterpartylib/test/fixtures/scenarios/multisig_3_of_3.json rename to counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.json index 59b56e12ac..d74047d3ee 100644 --- a/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.json +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.json @@ -3,72 +3,72 @@ "burn": "010000000140845a94358bed01f4b2c457c47867c4c87e4b9dd85042e3aae3d0e0241e0939000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac87812f0e000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "send": "0100000001f504447652e4c7b341f3b0d1cfb81e8b42916c7ea83cd8d6fa789357e21bffc9010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353ae781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb974529b7c2a7965ff221029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb5262f0e000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "send": "0100000001f504447652e4c7b341f3b0d1cfb81e8b42916c7ea83cd8d6fa789357e21bffc9010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353aee80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb974529b7c2a7965ff221029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed55b2f0e000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "order": "0100000001d37fb954c21ba448804c1cf6634f0a2cc99b423e83e86dc11cf962828a5d2d06020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb974529b7c2a7965f0821029ea8cc75076c9fb9c5417f502a30fc28198b34982dbb629ec04b4f8b05a07177210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefdc51f0e000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "order": "0100000001325a514ab441cfd88021ac1c3e76f385132da8ac67aa59695f1f7bf49f366889020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb974529b7c2a7965f0821029ea8cc75076c9fb9c5417f502a30fc28198b34982dbb629ec04b4f8b05a07177210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aead15200e000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "order": "0100000001710db802551367196d06902c6fc9055b79478898f6bd7f4fcc1a055cedb2eb53010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452d0f1e67965fed21039ea8cc75076d9fb9c541785f3bb0fc28198b34982db6d93ec04b4f8b05a07158210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef58c1f0e000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "order": "01000000019340b88a0a156ca5d701d393e3182f343afe62c0aa9cb89bb3f199a19c518513010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452d0f1e67965fed21039ea8cc75076d9fb9c541785f3bb0fc28198b34982db6d93ec04b4f8b05a07158210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae35f71f0e000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "btcpay": "010000000116cf50c06bbf23ee920815031e28222225b7c8a3dbf9084c3cadad1699f52bcf010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff0480f0fa02000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512102e34ccc12f76f0562d2061e675c3d79df2a467ab93c83942ab3b3c5755ecd5acf210357c7e0e5010086ded614781dc6413309ec12223580872e963990ec43b28553b0210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae781e00000000000069512103c94ccc12f76f0562d2243679547b9aff2939c0c8309c2481452b4d3227965f6b21029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeba39240b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "btcpay": "01000000017e519cc160e1b0b4c5afdbcb92eba1aec6c4999a6f219eb88ce671b88330e9a2010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff0480f0fa02000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512103e34ccc12f76f0562d2061e675c7d173c5bbbe6524357530befeb2fcc1da270952102864b5fa606ba3ad5d04bf01d8ba35ecb29088ce9cb37da00e124d512c166dfa0210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee80300000000000069512102c94ccc12f76f0562d2a7f5f59cb53da873aa9ec33150bae9452b4d3227965f8521029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1ad9240b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "issuance": "010000000117516d76ff8397a8539bb9ebf9066d14197023a7f6ff76456ff37b10a328d6c8030000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512102f94ccc12f76f0562d2061e67436e926dc71a7fe497cceb974510d7f827975ff821029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb200240b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "issuance": "0100000001ac60c7a61572c965435f75f518ca88b8b7d2e3dbb215b301116fc2a4ff8e4406030000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512102f94ccc12f76f0562d2061e67436e926dc71a7fe497cceb974510d7f827975ff821029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea2ba240b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "issuance": "0100000001125e4972f1dbe8f117a21346a4766a886962a4bd9cb656a14a1be5df90da48ff010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103f34ccc12f76f0562d2061e67436e926dc71a7fe498cceb97452b4cb487965fa921039ea8cc75076d9fb9c32715caa9518e22198b34982dbb629ec04b4f8b05a07180210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeaac7230b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "issuance": "0100000001060489390fcdb2f73129b774a9ef47640dd2f6164daeecfeee116158ae4db357010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103f34ccc12f76f0562d2061e67436e926dc71a7fe498cceb97452b4cb487965fa921039ea8cc75076d9fb9c32715caa9518e22198b34982dbb629ec04b4f8b05a07180210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae2a9c240b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "send": "0100000001ada684721ced3daa36515ac673cda07f814e2fe9083c1ac9ba5bc5c524de78ce010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353ae781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe497cceb97452b703b27965f0721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed86c230b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "send": "010000000175a96b4e2f59d298bc811854ee2058c5454b8bd246a1072f3ae482725eab6361010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353aee80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe497cceb97452b703b27965f0721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae7876240b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "send": "0100000001fc0b4233f4414b1c317659bf84d3a300b156dc0b19454cbbfa02152b652787f8020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353ae781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d3029965f8621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0612230b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "send": "01000000018b719fdcee691c41e32bceb59cbf4cade07738ebcd2bdf1d16c4a017a1d47289020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353aee80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d3029965f8621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aec650240b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "dividend": "0100000001950f8757601d62fb9d34ba565ceed97d202484a4a3002abdd13ba7d87240e997020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103fa4ccc12f76f0562d2061e67656e926dc71a7fa1a8cceb97452b4d7540965fde21029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefed8220b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "dividend": "01000000019123998bab2ade3770c6606ebc93e5c41e3f9acab70bd2a4d17c2ab285e6493f020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103fa4ccc12f76f0562d2061e67656e926dc71a7fa1a8cceb97452b4d7540965fde21029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4e32240b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "dividend": "010000000136553f54d102304a6949fd0fe52dbecba637522305599ba3548879ddc94ab0a0010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512102fa4ccc12f76f0562d2061e67656e926dc71a7fa0d0cceb97452b4d754f965fb421029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef69f220b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "dividend": "010000000129acf15fe119479003529d66ef8df7e9a68daa88ed8a7656b002a3e552c5a66a010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512102fa4ccc12f76f0562d2061e67656e926dc71a7fa0d0cceb97452b4d754f965fb421029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed613240b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "broadcast": "0100000001907687a830077c5ce41d9fb10b9bac8499b3a93cd9733617e8ffb598e3a73cb9010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ec75a26a3f0cceb97452eb8d2d89f0a7b2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeee66220b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "broadcast": "01000000013e951ca9325e52685298b179d4340e106f1f1979f29e7e208e43aa3acbcb0686010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ec75a26a3f0cceb97452eb8d2d89f0a7b2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae5ef5230b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "0100000001219f4b26702bf5d106f931c65d8d610fd4cf786777261c638580afe5ac193541010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb95bfdbcd3227965f5421039fd5b435076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a07174210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1c0c220b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "010000000160401c6a4ee68b0359f66b92930e5f69c81d5cbb799270a21cc6473ad65ba247010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb95bfdbcd3227965f5421039fd5b435076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a07174210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeaccf230b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "010000000162e67d0821406e56d35f51d57d3ced20ed0faf09a85783955d988c0bde00c2c2020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb9638530d3227965f7721039cd1f115076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a071ee210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4ab1210b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "010000000116af972446667009783249df012f5a0700bb6406554135f8c09cdf8d6fe0495c020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb9638530d3227965f7721039cd1f115076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a071ee210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefaa9230b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "010000000139a8d077bccfd8daa4c01e6a522ba7faa78fb1dda961cddd9ad0dfe2382d6fb9020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb9fb5facd3227965f6b21028a745ff5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0717a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae7856210b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "0100000001a30133e8140b47a437bdb9c31aa42001837fb7d6ef48a56e9ce3530748453e81020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb9fb5facd3227965f6b21028a745ff5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0717a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4884230b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "0100000001290c10b23fa4c75b53241d50f555fd3ff5516690127eb07c6345a1dbb9271580020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb8399b8cd3227965fdf210396581df5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a07111210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea6fb200b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "0100000001416a82dabeea71bffbb996c083fe167d9cd1f9550f596db5ff998f106bcafd33020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb8399b8cd3227965fdf210396581df5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a07111210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae965e230b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "0100000001c062a0a8536d4b2d0d723d664483b37290c1f0931e63e0d715c13c5701f0f0e6020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512103ec4ccc12f76f0562d2061e677f6e903f7c29b7a3f0ccebbbf13ccd3227965fca2102b816faf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a071fc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed4a0200b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "01000000016fab34c846d274a85d2d355183021be1aba0ffcc4388ca450eb75cad615d3722020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512103ec4ccc12f76f0562d2061e677f6e903f7c29b7a3f0ccebbbf13ccd3227965fca2102b816faf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a071fc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee438230b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "bet": "010000000183bdd2c181bca9374f54dbc2406c7445f82ec14ba6dd25e0fcf456d72dd551c5020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae781e00000000000069512102ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0ccebb1fb1dcd3227965f282102b21cdbf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0712a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0246200b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "bet": "0100000001debe8bc0c0223c4a9ad60bed55e448ec1bfdedb7e44a3adc56e63115d8d80c5e020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee80300000000000069512102ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0ccebb1fb1dcd3227965f282102b21cdbf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0712a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae3213230b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "broadcast": "01000000018506e776ff8af04aa04139d1ef24c9565133f78d9a8ae1d78820275003924041020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ef55a2754d5a317861b2b0179679f0aff2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefa0c200b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "broadcast": "01000000014aabc7d520d7a1cbc8d5b8655582d74979301e0745141b26db5e1b83accbd307020000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ef55a2754d5a317861b2b0179679f0aff2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aebaf4220b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "broadcast": "0100000001c6e0f913085756f4b668fd148dc8446fb49edd5a9c105c7f1e84b06ad742f856010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ea25a26b6037aae368e2b0179679f0adc2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef2d31f0b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "broadcast": "010000000166cd09d9aaab220d94bf117dfaf445cc67163219c96ef5ea5acb5f532772055a010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ea25a26b6037aae368e2b0179679f0adc2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae42d6220b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "broadcast": "0100000001454f53fbc54bda0d591cfafdd1e852b5354147f5a51db1069cf64143eea23554010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295e0e5a7fa3f0cceb97452b0179679f0ac02103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeea9a1f0b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "broadcast": "010000000117eb7c1ad2f3ce454d374c0b3b45c0fa54266870f5c57d59d8d7140b28b7aa0b010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295e0e5a7fa3f0cceb97452b0179679f0ac02103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aecab7220b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "order": "010000000176d55937a9eca6e8d176a83936f3ddd8e53c9a93b383f1af26513102b2e722c5010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fe497cceb974529b7c2a7965f9621029ea8cc75076c9fb9c541785f3bb0fc28198b34982dbb629ec04b4f8b05a07191210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee2611f0b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "order": "01000000010264fbbdd9a69ea491aa5d86523e8bbcc34b1b672c8c7c85b47c411491f9392b010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fe497cceb974529b7c2a7965f9621029ea8cc75076c9fb9c541785f3bb0fc28198b34982dbb629ec04b4f8b05a07191210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae5299220b000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "burn": "01000000014d6da1e013a91279a87da91fe1fec28dd3abf3b08f98e566227349e25180bcad010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff0200e1f505000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ace96a2905000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "burn": "010000000123e32635520b9bc8feb724189056dc9f0f6e867e0769d4f39fe90bbf5cfec619010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff0200e1f505000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac59a22c05000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" }, { - "send": "0100000001229c508ce52a0b7d8698b238d6041314efb125d8feb18c467464c8d40e353937010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03781e0000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353ae781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d1537965fe121029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae17102905000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" + "send": "0100000001229c508ce52a0b7d8698b238d6041314efb125d8feb18c467464c8d40e353937010000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aeffffffff03e8030000000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b21037af2e06061b54cdfe3657bbc8496d69000b822e2db0c86ccbe376346a700b83353aee80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d1537965fe121029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea77c2c05000000006953210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae00000000" } ] \ No newline at end of file diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.log b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.log new file mode 100644 index 0000000000..72a0b596ed --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.log @@ -0,0 +1,231 @@ +Creating connection to `:memory:`. +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 3.00000000; txid: 39091e24e0d0e3aae34250d89d4b7ec8c46778c457c4b2f401ed8b35945a8440; vout: 0; confirmations: 7'] +Fee/KB 0.00025000 +New input: amount: 3.00000000; txid: 39091e24e0d0e3aae34250d89d4b7ec8c46778c457c4b2f401ed8b35945a8440; vout: 0; confirmations: 7 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 2.37994375 BTC +Burn: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 burned BTC for XCP (c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 2.37994375; txid: c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.37994375; txid: c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 2.37984725 BTC +Send: XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (8968369ff47b1f5f6959aa67aca82d1385f3763e1cac2180d8cf41b44a515a32) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 2.37984725; txid: 8968369ff47b1f5f6959aa67aca82d1385f3763e1cac2180d8cf41b44a515a32; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.37984725; txid: 8968369ff47b1f5f6959aa67aca82d1385f3763e1cac2180d8cf41b44a515a32; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 1000000 +Size: 272 Fee: 0.01000000 Change quantity: 2.36983725 BTC +Order: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093) [open] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 2.36983725; txid: 1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.36983725; txid: 1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 2.36975925 BTC +Order: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e) [open] +Considering: 1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093 +Tx0 Price: 2.0; Tx1 Inverse Price: 2.1 +Potential forward quantities: 50000000, 52500000 +Forward Quantity: 50000000 +Backward Quantity: 100000000 +Tx0 fee provided remaining: 0.01; required fee: 0.00857142 +Order: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093) [open] +Order: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e) [open] +Order Match: BTC for XCP (1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093_a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e) [pending] +Order match has only -10 confirmation(s). +data_btc_out=2000 (data_value=1000 len(data_array)=2) +Sorted candidate UTXOs: ['amount: 2.36975925; txid: a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 2.36975925; txid: a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 387 final_fee 9675 +Size: 387 Fee: 0.00009675 Change quantity: 1.86964250 BTC +Order Match: BTC for XCP (1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093_a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e) [completed] +Database: set status of order_match 1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093_a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e to completed. +BTC Payment: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid BTC to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 for order match 1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093_a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e (06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86964250; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 3; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.86964250; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 3; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86956450 BTC +Issuance: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 created 10.0 of divisible asset BBBB (57b34dae586111eefeecae4d16f6d20d6447efa974b72931f7b2cd0f39890406) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86956450; txid: 57b34dae586111eefeecae4d16f6d20d6447efa974b72931f7b2cd0f39890406; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 2'] +Fee/KB 0.00025000 +New input: amount: 1.86956450; txid: 57b34dae586111eefeecae4d16f6d20d6447efa974b72931f7b2cd0f39890406; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86948650 BTC +Issuance: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 created 100000 of indivisible asset BBBC (6163ab5e7282e43a2f07a146d28b4b45c55820ee541881bc98d2592f4e6ba975) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86948650; txid: 6163ab5e7282e43a2f07a146d28b4b45c55820ee541881bc98d2592f4e6ba975; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 3'] +Fee/KB 0.00025000 +New input: amount: 1.86948650; txid: 6163ab5e7282e43a2f07a146d28b4b45c55820ee541881bc98d2592f4e6ba975; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86939000 BTC +Send: BBBB from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (8972d4a117a0c4161ddf2bcdeb3877e0ad4cbf9cb5ce2be3411c69eedc9f718b) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86939000; txid: 8972d4a117a0c4161ddf2bcdeb3877e0ad4cbf9cb5ce2be3411c69eedc9f718b; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 4'] +Fee/KB 0.00025000 +New input: amount: 1.86939000; txid: 8972d4a117a0c4161ddf2bcdeb3877e0ad4cbf9cb5ce2be3411c69eedc9f718b; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86929350 BTC +Send: BBBC from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (3f49e685b22a7cd1a4d20bb7ca9a3f1ec4e593bc6e60c67037de2aab8b992391) [valid] +Total quantity to be distributed in dividends: 0.00000024 XCP +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86929350; txid: 3f49e685b22a7cd1a4d20bb7ca9a3f1ec4e593bc6e60c67037de2aab8b992391; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 5'] +Fee/KB 0.00025000 +New input: amount: 1.86929350; txid: 3f49e685b22a7cd1a4d20bb7ca9a3f1ec4e593bc6e60c67037de2aab8b992391; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86921550 BTC +Dividend: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid XCP per unit of BBBB (6aa6c552e5a302b056768aed88aa8da6e9f78def669d5203904719e15ff1ac29) [valid] +Total quantity to be distributed in dividends: 0.004208 XCP +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86921550; txid: 6aa6c552e5a302b056768aed88aa8da6e9f78def669d5203904719e15ff1ac29; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 6'] +Fee/KB 0.00025000 +New input: amount: 1.86921550; txid: 6aa6c552e5a302b056768aed88aa8da6e9f78def669d5203904719e15ff1ac29; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86913750 BTC +Dividend: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid XCP per unit of BBBC (8606cbcb3aaa438e207e9ef279191f6f100e34d479b1985268525e32a91c953e) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86913750; txid: 8606cbcb3aaa438e207e9ef279191f6f100e34d479b1985268525e32a91c953e; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 7'] +Fee/KB 0.00025000 +New input: amount: 1.86913750; txid: 8606cbcb3aaa438e207e9ef279191f6f100e34d479b1985268525e32a91c953e; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86905950 BTC +Broadcast: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:33:20 with a fee of 99.999999%% (47a25bd63a47c61ca2709279bb5c1dc8695f0e93926bf659038be64e6a1c4060) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86905950; txid: 47a25bd63a47c61ca2709279bb5c1dc8695f0e93926bf659038be64e6a1c4060; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 8'] +Fee/KB 0.00025000 +New input: amount: 1.86905950; txid: 47a25bd63a47c61ca2709279bb5c1dc8695f0e93926bf659038be64e6a1c4060; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86896300 BTC +Bet: XCP against XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86896300; txid: 5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 9'] +Fee/KB 0.00025000 +New input: amount: 1.86896300; txid: 5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86886650 BTC +Order: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093) [expired] +Expired order: 1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093 +Bet: XCP against XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Considering: 5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16 +Tx0 Inverse Odds: 0.5; Tx1 Odds: 0.6024096385542169 +Potential forward quantities: 50000000, 41500000 +Forward Quantity: 41500000 +Backward Quantity: 20750000 +Bet: XCP against XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet: XCP against XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet Match: BullCFD for XCP against BearCFD for XCP on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that value, leveraged 3.0x (5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16_813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86886650; txid: 813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 10'] +Fee/KB 0.00025000 +New input: amount: 1.86886650; txid: 813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86877000 BTC +Order: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e) [expired] +Expired order: a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e +Bet: XCP against XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86877000; txid: 33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 11'] +Fee/KB 0.00025000 +New input: amount: 1.86877000; txid: 33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86867350 BTC +Bet: XCP against XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Considering: 5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16 +Skipping: leverages disagree. +Considering: 33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41 +Tx0 Inverse Odds: 2.3333333333333335; Tx1 Odds: 2.3333333333333335 +Potential forward quantities: 150000000, 150000000 +Forward Quantity: 150000000 +Backward Quantity: 350000000 +Bet: XCP against XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet: XCP against XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet Match: BullCFD for XCP against BearCFD for XCP on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that value, leveraged 1.0x (33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41_22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86867350; txid: 22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 12'] +Fee/KB 0.00025000 +New input: amount: 1.86867350; txid: 22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86857700 BTC +Bet: XCP against XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86857700; txid: 5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 13'] +Fee/KB 0.00025000 +New input: amount: 1.86857700; txid: 5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.86848050 BTC +Bet: XCP against XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Considering: 5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede +Tx0 Inverse Odds: 0.8666666666666667; Tx1 Odds: 0.8666666666666667 +Potential forward quantities: 750000000, 750000000 +Forward Quantity: 750000000 +Backward Quantity: 650000000 +Bet: XCP against XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet: XCP against XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Bet Match: Equal for XCP against NotEqual for XCP on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:40 that value, leveraged 1.0x (5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede_07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86848050; txid: 07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 14'] +Fee/KB 0.00025000 +New input: amount: 1.86848050; txid: 07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86840250 BTC +Broadcast: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:34:10 with a fee of 5.0%% (5a057227535fcb5aeaf56ec919321667cc45f4fa7d11bf940d22abaad909cd66) [valid] +Bet Match Force‐Liquidated: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16_813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3) +Bet Match: BullCFD for XCP against BearCFD for XCP on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that value, leveraged 3.0x (5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16_813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3) [settled: liquidated for bear] +Database: set status of bet_match 5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16_813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3 to settled: liquidated for bear. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86840250; txid: 5a057227535fcb5aeaf56ec919321667cc45f4fa7d11bf940d22abaad909cd66; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 15'] +Fee/KB 0.00025000 +New input: amount: 1.86840250; txid: 5a057227535fcb5aeaf56ec919321667cc45f4fa7d11bf940d22abaad909cd66; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86832450 BTC +Broadcast: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:01 with a fee of 5.0%% (0baab7280b14d7d8597dc5f570682654fac0453b0b4c374d45cef3d21a7ceb17) [valid] +Bet Match Settled: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41_22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f) +Bet Match: BullCFD for XCP against BearCFD for XCP on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that value, leveraged 1.0x (33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41_22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f) [settled] +Database: set status of bet_match 33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41_22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f to settled. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86832450; txid: 0baab7280b14d7d8597dc5f570682654fac0453b0b4c374d45cef3d21a7ceb17; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 16'] +Fee/KB 0.00025000 +New input: amount: 1.86832450; txid: 0baab7280b14d7d8597dc5f570682654fac0453b0b4c374d45cef3d21a7ceb17; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86824650 BTC +Broadcast: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:41 with a fee of 5.0%% (2b39f99114417cb4857c8c2c671b4bc3bc8b3e52865daa91a49ea6d9bdfb6402) [valid] +Bet Match Settled: NotEqual won the pot of XCP; XCP credited to the feed address (5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede_07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a) +Bet Match: Equal for XCP against NotEqual for XCP on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:40 that value, leveraged 1.0x (5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede_07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a) [settled: for notequal] +Database: set status of bet_match 5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede_07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a to settled: for notequal. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.86824650; txid: 2b39f99114417cb4857c8c2c671b4bc3bc8b3e52865daa91a49ea6d9bdfb6402; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 17'] +Fee/KB 0.00025000 +New input: amount: 1.86824650; txid: 2b39f99114417cb4857c8c2c671b4bc3bc8b3e52865daa91a49ea6d9bdfb6402; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.86816850 BTC +Order: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BBBB for XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (19c6fe5cbf0be99ff3d469077e866e0f9fdc56901824b7fec89b0b523526e323) [open] +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.86816850; txid: 19c6fe5cbf0be99ff3d469077e866e0f9fdc56901824b7fec89b0b523526e323; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 18', 'amount: 0.00001000; txid: 5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16; vout: 0; confirmations: 10', 'amount: 0.00001000; txid: 813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3; vout: 0; confirmations: 9', 'amount: 0.00001000; txid: 33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41; vout: 0; confirmations: 8', 'amount: 0.00001000; txid: 22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f; vout: 0; confirmations: 7', 'amount: 0.00001000; txid: 5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede; vout: 0; confirmations: 6', 'amount: 0.00001000; txid: 07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a; vout: 0; confirmations: 5'] +Fee/KB 0.00025000 +New input: amount: 1.86816850; txid: 19c6fe5cbf0be99ff3d469077e866e0f9fdc56901824b7fec89b0b523526e323; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.86811225 BTC +Burn: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 burned BTC for XCP (3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86811225; txid: 3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac; vout: 0; confirmations: 19'] +Fee/KB 0.00025000 +New input: amount: 0.86811225; txid: 3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.86801575 BTC +Bet: XCP against XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 +Expired bet: 5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16 +Send: BBBC from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (72bd448eb70da9b7554d3b58a1e89356171578c847763af014b25c99e70cbb58) [valid] +Order: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered BBBB for XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (19c6fe5cbf0be99ff3d469077e866e0f9fdc56901824b7fec89b0b523526e323) [expired] +Expired order: 19c6fe5cbf0be99ff3d469077e866e0f9fdc56901824b7fec89b0b523526e323 +Checking for conservation of assets. +XCP has been conserved (1498.99847262 XCP both issued and held) +BBBB has been conserved (10.0 BBBB both issued and held) +BBBC has been conserved (100000 BBBC both issued and held) +All assets have been conserved. diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.sql b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.sql new file mode 100644 index 0000000000..76f69088a5 --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.sql @@ -0,0 +1,1593 @@ +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table blocks +DROP TABLE IF EXISTS blocks; +CREATE TABLE blocks( + block_index INTEGER UNIQUE, + block_hash TEXT UNIQUE, + block_time INTEGER, + previous_block_hash TEXT UNIQUE, + difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, + PRIMARY KEY (block_index, block_hash)); +INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); +INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'09fa44ed277cd9e448baf3d4a2accc520d57c77fed0d97379ba9bb804e3dda71','7d9cd23062d78e9eb1a892f69b154410935e9675ede8e05fe9c1269cd3c54b12','03cdbe3e12195a82f4ba8f3bbca0379c52efebb6935904c498fa8c6d2a1b0c42'); +INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'b2237a0b0b29b2198355f47d38cb995e013c0e074c29dcbf1b99ed4c0f459c8d','adddb3e1b9020e7ef190f661823c79abbc5951801b15469ad9f483c512af002a','4ecf378ce8796d852ec9a1d868cdd46e4eb5108af536315468d9ab120a62beac'); +INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'a3c393a285361d2981551f0a903d45847e7a0142779692d384bc77bac420db18','6fddb621bb8a1e2d10cf0ec8f507ada12be28578223ee53997aad614097bb35e','5394e664233621bccc87de78075912af99fbca741e6cceb823c349c2fdd99aa4'); +INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'f96ba90a471ab5524a574cc4ff72a228a8dc7019824482a664569dcb41c126c7','d6756ca2a0f2a403b0a1714964ddb71bc773e0a18c049008f78670efb7137e18','54e43714f22a9eb94aa92cf2535746a8bfe6b102420ca0aa7713a79337eb37d0'); +INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'943a23e317f71981b24d636cae98f495b2bb00c949b1603a778eb7500894c844','be04682401f137d4d02c7539d1c776bbc76263dea1bb88fc95197128ec1a700f','38efbb2f7999954b1b11c27ee0a0a0a2d396cd6ec5676be72b58205c62a047e2'); +INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'0c5f3dd2d439a571eec03583442fb051bedf5bc0b0ede92012922b27847af2a1','03c8d26098b8e49a297c104f22af44a622378afa711195bd8b91d46f01d68d65','3f8fabe37de0c2a94215aef345e57c335ecd0b6bf01eb541e1d8f9275627690d'); +INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'377fe894d79d60b011958ed747908b6009c5e0261fa177caefc664cb8db4c74b','079ec7423e2fe87820626aee8980e236a78e7d51b453a739fb5768d9d520bef6','d161ba77ccb1ad90431d4ef4fd5268f7dc20322f64a8f8c9cb51b7ab0733a162'); +INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'4be55eb54e78e829306dfa31248b3073d311f49da420d9844f9aedabfbd296e3','d57db7ce89eeea61f270e7c676b38d3574c52166322cb0e287f1857a7d085e5a','1f490123d33da55b38c34c08b103b2abe88e5b498060bff62e3035d8934cdc0d'); +INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'1248da848479b90f9dada38eaa02b9fe1226859e6ed1e3c4a121172786178dea','8727f3f9af7958daaecda9f2cef1bad0303d631cf9f8418636cf130581e4bb79','2e4ed2c0afa98d5ffdb3fbafc6bf90a5555ad7c059b471920217676146929424'); +INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'1e1b07f218127eccdfab98a4bc127ce185cda15314e72328dfe10eb8f2f18726','baa3b08e70e0db5ecf913bb99da662ec3dc04a5650f99d2d36408eb8ed6cc4ea','4e8ddbe6ab172560b215045fc0cb2a4ac6e0c2a7267879a8a8debd8dd0e85f4b'); +INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'03be7c3d8dc521277625164e3e828be106672cba205129c014ce7771a3b8730f','5def9d6ed9fcf82c7ec9dbc2247657f349ec4df0b75dac4444f7ff90e24f0955','b4ed18cbeda131925a5984f41529c68713f652c5de2bcbba32939e30102c06a7'); +INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'db6d49ef7cfb461f9431b2e712f694f0747012ae28f3684e0d41476f77fab667','f6d1a346abbb2adae7dd7fe6ddd94061bcdae3ed30bd091958d445c8b5f57f4c','82990d06ce4ffc7fe8708e653261e4d49c8557548e5dfc2764ec38dcf932455a'); +INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'ac399d193def488d3457876edef42dd651b30c976025c3d6f810e4d37c88c822','273ce70d30b249ba5afb8382ddf7ded2d0849044d519fb48224a6ea69b7ba6dc','5dd52a1c12e1251acad22223f31ef3a73b6dd39e12117725af030546fb7afbd3'); +INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'f6fd6f6280b1c580abe8e31de28bfa0f269d453068946733cad69d29f6874936','ce4d93afd619a9f22326d72b5ae6c10b24d3075399374184463f65d489a57c51','60f183f10718427e872e4f48f2cdf1e68e8caab587c22194d8ef2a8a038a5e68'); +INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'0c52d56c6f7c25da7b757aba30e890e9eff402155b5497a5420e13e69b7cb54b','7df6ac77f91e828339a1f92ce8197c74ff120f6c00d180bdb19a91f7da14a83a','8cd96524a5f894912ae23f36b9ef74f4d3698d478abb704b9d460de197c056f3'); +INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'03cd020f708d5f082f5b63e3c1f58e5f25d564a60699ae0f23471115d9e37d5e','45379e27de14058cb9100cc29417da1e5b2534e4434bfcd074c811324e46fd06','654c6143fe6dac43c4bd1ca75da715ae0fe806562688ae3d707271f2c255028b'); +INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'d95cf7b2af3f578fc64450d484323075e81999a868918d3dbf89160269d68980','92ed43fd80e4e254ebff7dc725c32962beb79be51dfe8d62d12bd8e123320532','0ab280054f3d0b7e82d13920c6911e5c04b3b640dae0d0149ee7933298d94a9a'); +INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'725783dab777f54b11be66fdf47280852fd6b4d8a9b9f2fbba9e92056538ce73','f21d857139bdc083724362346aeaa455f82caf0fdf13f2ca880db6dbc6e047b2','867a6831e3671c9f1d17550a2a3d9a7b2bc552a4f24110260079898c458622cc'); +INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'05ad248fa836b50ce72a2f61c7465a455cc48ac92f2c0ff9bb9f94e69081d1e7','3e8a8361086aee82a316c2a041d8f4e1d7b4000c3e18263ca84a3267a811ee7d','44887649819735ba6657159313206a17454862095c35685303507ab301c7aae5'); +INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'0ab8707bce7b77beecc32ad6124482cb561776ed245ce6dce08f5318e2cf396f','d66ff9e099bc707b866c2595b0bb642657601a36ab06cafa070f18e9f3ad30e3','8b95a780e2fbc98019d513bc9dac84b1ad0011b722fd0ce54d04f431202e787e'); +INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'198edc4bf109549538a2f8f96714536a99a1568fe16fe4254881520474adc68d','3bd8ef01a2be7a5d817b535f19e456325bcf2d684ac25f09124d4582040fde54','ab771754bf77e77ff52f8b5dd5f31be9e6bc0ea7ae672f860a8151c9b95fa9c8'); +INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'52482033c5c11ad24257707137b090606305497618e29050b2fdd3e13bc822ce','7d74bbdb4057dc5d0e9b568e983df362b87bdacdddf2724b1ee4c42b6602bd47','605f2e3803482b5fd9fa80792a5d86c40a29e22c4eab175b4acfa0edab8b0ab3'); +INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'85d639cc8147885470da26d3c0470dba0eb8b6870d5941b12bcc4afb8fcd9af1','568bbeb4d12090c110442540d6f12734602dcf84ae5e331f0391a4a47857d059','11939824bd9b710742d12a530b5af52d2e0ccee81b3cdcd1fb180320cb9c9fb4'); +INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'eb62ce47d68491a84b9a29b92db2742021881f0274072f1bc39dfef08cd7a590','877a4d466f5f780e8103a42fb7771935ef57486ed7d74aa77757b9cb434893b3','475dc6977754d3c5acd1082a0a833f5631903b591a998b0aa2ce0071e450afd8'); +INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'45e73afbc34855b5cbd342a6fb77545e01f3ff4601a04c6dd25dff665aeff484','b16082c8d932618c9bd89f7b8d6372190cab18b274ed8dbc1b4f04e5edc2bdbf','970a620a26899c9a2d76ce406d628574f712536bfd7e1c0191d75d10a7ce51b4'); +INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'714702b25559325c7bacffdf28e0af30c47bf48e6b4fda053c21ea31c7604128','391a822509e48a899634f3b8a6b0c99fd298eefd97230b401b40c301dd7e6052','06f0eb9c7d3a9a2f294d43e6d2c8b46ccb349ee0936162dfbd621da91a86fdbe'); +INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'b305741a1e277ba0ce8436b914784ea0156616ac308282a7f29dbca62a54cc82','16c8d91265aaface472342f436e376984d576675529de1f58a188f994375dea0','d6156a54c1c25ec6c41b1053cb815ac7c77b821a15aa7b936d4228c43fb96e11'); +INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'1f833f7396917e02b4b65b0a05d19754b6a53b030b659514d0c21cad062d45f9','d7a61a46b4f6da78607245b9fdd4e0b1d7499b5687805939342a431ef570711d','1f39b63e8616941956c819ad3e2ac9b6ef5aaecb3eda6211bbb3b4ac15f0db8d'); +INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'47b38906beda7ad735a86b9fd63669b0357b7ae0a0c1a54c9827bc8b90185626','a8a0b67ddb47a15f89fd14f227e118bd374dde04f4bce3205d5ee07a8c7509d7','7b3ce688ea0406c507364cc70d818401dc9545a6f4afe10e0f6cdf273eb711ba'); +INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'e69f6c9b649ac04920be70f9b076f7909bcebd8312afa715be3d8922794a72e7','355199be765ee2db25308e58d6cdfd22c6941a296b51800e8f937cea1afedbdf','cace66c0178d0e4d66cef524c58f6699099033b713918a34611f2320f261e8cd'); +INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'c51828b04433b000787c92eaa7e5abd5cc0bc31c619cb8479aff675af6e00c55','b4bb7325ae90ccf0095b0970cb4828c98915a2e6694723ca8af1e9f77523d540','fa7dcc5cf9da7de9a4f94c2f3530855d884832bed83aa36fe71b2795a4085920'); +INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'26d91568af76b5ad4b357693ecb0b9341aabbf5de5d5c83f9998dc2f95d76e5e','b13328f7f6011c05736a1c728af4726f63f557ae1eafab7d70b6b7fd60025616','76bf3ece025ed6551d9c84121da44329688572af986f26d3200d7400e98762f5'); +INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'21f8da71c386ec1e5e31a35c1190b895f2df52529ea028d5fba25e0d57616952','80980b4466ca949fa21a42ffb8c22a2f5853722c4fa02bf0cb962e97365384f1','718d5dc85b9daff2ab34871b4d7f54cd05e2537b01326ad0c0bf5c5d0ec0585b'); +INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'1c844a38fc28e83406c8019615d0c24a1ea84e6ffe4da392d29f353ca676001b','0c2f46b4f4d5f345399be6073d2f72bf689f6a3a20e57c41ccd541cc0bae76d3','d9447f83f522c07978c364dda09e7cebebf4ea260e117540eb86cdc74dfd67cd'); +INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'0533bc0d3bc008b5d65932c569e9f85e3217ea9efbb8937935be93b7a01ec2a8','9f5f89f0c9821b7de30388b2a0891011612096ac158a70838d4479059a4bfc50','70ab0752490361c245c4a530e1ab3ae14823b16a0415973a657c3cfe423ffae6'); +INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'b5f0b7406fe3b6dbcbb5c3b28fb8fb119e237f07532f500b422058ba898e5b22','5847c5ec7d8ad0e27d47b3b6ff7df903c4a67a269aa248e69ee918062e58976c','75e84ae4c9ab6883fec593af266c44f2a10169f6efee63f8e515e30e6cb2762d'); +INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'7519ac8cdf4c13b25929d913e3858855aca68bcf3fe6d3636e7371894af27f04','46fea446096a8d96f1f990374d94405f358ef5a3a8bf09aeba2f76977cf867b0','6d641884c27dee5e741f4ad1d6954c30b79998ff40e3dca4416d280fa0aac205'); +INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'f417da67da0c23d4bc44bbb864de5b94057916e28502641ba70764f44165a1fa','e372a6531d2f206be5cca17be0f42a75e2e6617499a6dec377c274f7738620df','c22a108ae4413ba82f9770367c0240a25e2ccaa8eb3edfa8fbce187f6be10181'); +INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'098eb6f2b0a1c584d969167f50bb55383ab71593ed1f0ca61d83c4513a209107','da7704f6d661aa255af6e2d3ad713fbca0a0e6296b16e3a364989bcb5a4e38ba','7d62251aba76433664c0fbce2b241714a9884656afc2dc272c7ef4844c894ba8'); +INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'a4aa60a1320e47c975628f6650d8fdc44b6a729d26a3178031e32fcb48b59491','02eb5dc168a03d3cd067677480b22185a8ad6731e467c0b3bd5a907834e01013','5bb467096756e279c667553fe2f5a97357e1e1e2d295aa785bbaa8016c76ca3b'); +INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'cc5b2af6948531b635b18a4b6698efa318190762c8e4419aa9ca3634e7ed5d1e','f6ba96a6e3e2e3442722bbc1bd770d3f6f0f4a4ffe57d0858586539f81e868b8','cd4d30b00454bb84436cce7d7f3643aed9b1d6c77fa76522688fab2151bae608'); +INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'7ad02b4853bde78025942e9f58c212a76c1828337610347e516d4a359af804b5','d8089b22bc20979dce133885c84c5babb754ff0522d7f2193e1d3157c5251631','45de3998bcafcf08e63b48b3d0bc66f1ef3b4dfd5530bc3835165f5285102cad'); +INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'64a91735950113c13603e49ca549fae9b30092a9fc02d53a32a20eaef64ab6ce','554d6b2a2182d87b00111b748a5d904aef85a56b92f1d076ad4f866f0d054041','63d4b4faa2442f7eac7795c8659a67d64ad08a0e04fa2606562be4b5d50b52d8'); +INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'68107847c7a9dd19612d8b47c1a39cdc446c752f2c05ea8fcd961a42f835d155','f2b1800a73d98a15428bfb5289f7ccbb9d3c66b98fb0a36f00ffce8a78279801','557ae69fb31a5dbcc7a5e784cd0d80518eecdf33e6dd47e177f1d775fa4d48cd'); +INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'64d4d51adb6994360b3dbf04663c4f067ba223e62912fe1c5a96a190225bb54c','ce4365857faa29eb04e638064e4810620f434fe515efe63eb2ac49c3adce6581','31b63ffd54855905d1f1977ddd34d66d548aa5b441579e12a9d088e0f1659335'); +INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'3ba2d7685f63962f576e9fa94e4d6709ace95249a3064804c3822078c982d11d','94729a0956e8c1b095c9181e01c220b94257ff582e35d87923e3c5ddba3a3566','edc0a46af1e1264eea427ad7927d22dd5cab619e0e81b534982662d1a619a3e2'); +INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'6502f277568bed2705c5f496e278e5d99310ff6705751a3999cb4b2bc7d725bd','0986f1e944c39e36fe955ff092028c51647a9359492f17a76c682b4346be714e','d019ad7d2460a0c477990c2404f0746b2b1dffbbd36794335bb14385631c1e3b'); +INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'5dae29289f36e64b87d56f9870af0bd5ad77ca45f1093c1a41140ea397945130','f14e3c5de5e186beaed6835c7c61fe2274603bb73e62ebea5899ae2a998e26e2','6f4878228aa3d954e8e0c9f7033f93a2890c624749438df0aed145d7c2348bb5'); +INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'d5dee49d7b78e2ce4dd2a648e345a52bbfa7e0e76de9e970b1dc0b6aea66c130','e31cb01f21f653217b3bff72061a63f3778f45a72a8419988a496d8f388cac1f','b2ef5dddd31dca00b25a6fcff3e4c3a70b8054976319a76659d6541ab7294d1d'); +INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'2b4c97a93933b8986ebb061d47f2e8bbb1672206058ae3c3ae388bab36b8cbc8','eb45cf1a49da1dfd4ce7231e8f6da96b7241b0b034884cb2de57dc107723b7a5','a51ae7e2aa44a6cfffd5e3d0b7525fee88747d417a323ccc8cd25f5d18a2f06a'); +INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'115913763ca7ef5691512a5c6d47cbd49203aee8a3242928f62640912c935872','db0d0812374555812015a2058ea7f6bc8aebb8aa7d2824eeeb26b7b42d75f97e','1dcc835fa475194bec9aff5b50bb54b4a7e5cd5359e676cefa0900b5bcd6c909'); +INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'72f24dc53c759a08aeb447d826bf64aad71ca8f4ab9640e30e440e6bc050a0eb','b3834012ddc576765f337d3dd8b3c916f66711481c0bfa2464f6ec2678d1512e','6321f7c61a5d3d28bb2bec2e1eb6b05ea7ac2452a0128979578fee9336a60fd4'); +INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'07846004f2da033bfd113e13040b0d0d605375370b7437e2ca2ea9467fc80c1a','35357fb0ca94373955c3cdf08be75d20e9665a9632be0df0c90b567875594049','032d78fa2a8f15f2d912b5c703bc35e47b7acaae80f2e1fa1e707afa63a11521'); +INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'7bf9a701337c043a7268cecca5ff765c24600a2056137cd03e3ead9d64ef2348','d177ed9e0bb4b3d77bc5b1a044e724cabb92dee3189747bc1c01d1fee7148fa2','cb331c3f641d275b8f1ef4782da1976a9de602d7ed249a7576bbfa063bf7977f'); +INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'d544aec17018203fe2f5c9bda52a5da53d41d3364b8026770d1f620aa53e6c36','8a3b92aa200f79e8aff4a849618914f7d39c34ef2ed636d3b5633a2ad2f647ea','6170829263f846a9828ebfa101ffb120ff5c6b6f362898b5e628fd42bd738389'); +INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'bd3044c66f7e2c24944a9c938b8f162ac8f566a1338444c219396eadf5179d3e','59ce208e69d4e1427791ae237a6db6a05efcd50fa386f4f8f56862c6cc3b12d5','5b7f7925cdadf23eaa5f3193bb23d46d691a880686dc408659dc5271ccd95225'); +INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'b19346f726636aa9da55af6106a471c596a7f7b93289b70d3d33b45334bca9d3','8e9d4b1d3ad7c5e8e479640da0ffd8b7423aee810ff6adc4ae2d37d545169579','4f96552234bb21d728bfadc082e4682bd3376f6555e008f993bddce11cd5f11d'); +INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'35c2ad9ccd3bd68cdb0c4d8fd4e30938521b8559c1cec331a29b1802d649947a','e14484629fa3aa2e8ce54505b3983d0f33e7727d3dacc5de57a574c2e0c69baf','84e3199ba54fbc63ce827c954c5385d5a9de5441f6e01d249f4b286aa606c908'); +INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'e9a705d6661f0345ffe0f45ae26c0d6ba6bd5a125eef2f0e9558d0702ee6d63f','cfbb1995e2c28020dabca30e98f72afee01b64fe276acacee7e104b22772de65','477c6f09936fbf4b03c16f91e9af2544b0a6291f52393953f16a0896a29a3f90'); +INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'61efe4d33a7f70cae34df86753532aee25fb0b153744acb962142691f6979482','401b057e48ae9e423f354f7ddbb11e70c0ec2209ef1a26dc7ffd0bf6003f1335','f7386ee812939feebbe81ec4d273b88f42fe727dca68805400fbef4733f61884'); +INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'59d9785e783c59c12783977087ad439b2dacad9ae1ef2be6384bfc9036da9804','6010ccb1d9476ce07d8b50633bccb97ecff1a229a0ea7701c802aad32f961be9','974c5ac7765d649a59e2787acb8aa3a518b2b41dfa936f4457efda90a32063c1'); +INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'e257d59ab5dfb01b8396bd12d2fd169f9ac7629365b90bf6e593e627738d3754','bda63243caec3f70173e1e93a16867ecbcf45d987b6a5f72d1bea54d361f0ed2','dcc176e3c8337335cc1079d61465b6f2fcb29fc8b4ef116d02b5f9515d2d5b4b'); +INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'0dc0317a88a6fc4ac791cd4d45edcf2a142fb83aa2e8a2f299fcac48a2c2e04d','ea9f3db44eb05a8ba1c860cd0a13ea662f84715b59e78a87f49c78377cb6b2c3','338b524361bc940c291f8343a81a06d467b1d341d3413bf49f93beae0a8ec25d'); +INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'892d6a49aebb262f2a626a35c0806c488c836c04d33122c2d65ecd8904fe3d85','3fc1380f35c9123d16b9ffbeb23c44f24e4d6001406a484ce30ee5758b8ec965','64376125a07a61395d3296fd226d8743992e07933a5a5b465118cdf8ef5fcb03'); +INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'e345abbf8dc42737a9f2dd038534409200d63a9ebf5d1cbf3344ea9413c388c0','be23706267b965eb38fa15ec1ce8c17ed5727bfedba0ca4d4be3db2fd703744f','2a70b59c312042694d44c3c4fd44f7fd78e32bb90e5f59ac5cac2a41d0921161'); +INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'84ec781d054c0602ed97384cd32cd060b938627ea490a7635fa3ac0babba94cc','1f7417cf7a3d9f07e5a8faf658b166c288aff136ee56f244797ef589f9cf98c5','33e6e6d5e305f95a23af23887450e4939b8eb14c35fd8ed1fbdbd5a6186eb88a'); +INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'3478612a8bb95c2966891fb4d1b35493a1342364a6f08404b83ac9fdda763aa2','7b4317e7c2db815ced2d81aaf8efaa6331e475a7a9b3a59041640d43484b1a89','7dabe12fee25f7905d3ad807bf051aeea3daffdc2fe0890b7e89d0694f86a646'); +INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'c532c4c5f5e2ae1026ec2582645d9aef06afee46cb9781427a1f40667378ed67','89699fdf437b96128d7eb89a45d58e45d0b829789c6e0b29e8972b48ce5e62de','19c85cdd94773ffd4d923f9482b6a7de6e70f1704384b259080247c582088a63'); +INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'5508189396fa6dfe63a7d06fe97a3073e986eb305bcb49430157f99e3848cd69','4c49d9334c909f728f3b06a0ef613fb09f6369dd431b7078db5d269cdf9dd4bd','55a6ab9cac2db71356ea23c5441a4b560e09429c617a127f8ce15b94f4fc7ced'); +INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'9b0b5d09dc7aaffaf5a3603fa2b914c54b04755a5ddbf83476320149f802292a','ef4759403c17482a8f8042fb93a5cae1b741085cdbf73e839638fee316044571','a5060dc8d64c350c8e1f440b53156e2e1ce895a17a342aa6a31ca82f1914266f'); +INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'2e40d398c2eb131e195a667f1b2b5e8de29e80423a2d0dd3935fad6dd7cc919c','18e3230ce4fdaca025887c118a2f2fa6bcbe81fba5c968301a90b43e27f2c7aa','f162f8b977143e37ff7a9b8b9af7a9a5c56cb60e1a3825d504ec574fcd698218'); +INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'763d3d949dc16a797f5b8a2f5a27fd34b4636fa3dbf33eabed5db048e1a848b4','7b10cd9561d4a33c7771570925e5a9a879a501ac503004eccc5e60074d2dedab','1ae5358d16fbd36c2824acf8c8568fb7505c3e1a02efa43c87e7f9a0e39ae3e7'); +INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'d9b9d6a52f757604a5652aac64c343a47a928160790963521ce33d125486cb0b','deda10c92f292c186698b9b4d371727688a9c0ea194963464fd1c5b429fbbff1','955950b58ea25a94773940ebd34d584466333cb9b44268f2ce2de2be7cf494ba'); +INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'9c1a650b6029cc982e9e617b619da6d88878453ccea68ff82047581d5cc74e9c','26e4cfa82a9ed189ffafa596c7022cab40002c8099b48814f3e7fbc48b01b0fa','0431d43ec4416a10b66216067daa63546f1dd79ba88d654bf6dca9032ef25b5e'); +INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'32d648a0d0b99f6826376e8badb278c06f95a0ab781cd873e2f7f55219953b01','f10d714905f2e84a57e0c792ebf0dd67158f19f352176a571278dce49aaf778b','f97840119ae9b0ea15693fec0f16bb1a2e16ab6f727cc00b81325756455b77be'); +INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'67cd615e67e397cae8195fc8753403563e9100ecd623b2796a46b137ca553be2','d0c0ffcafa826685b59ef036c4315e79cc688ac1ee43097143debf445f6e638b','13b16beb2f1b984c22f46c43506d8f0f09d01c80fe3df80548a239df6d75d6e8'); +INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'d636f3831cd35437271557e6299024d70c4be6b9a685a4fed61e7d67e61540dd','fb11ef8957cdc599585372679a59440580acb37458ed3da092b22974a4857bb6','62458e8c2e650a7c06e89737b73788205763ec4f080bc450b1022719a61af678'); +INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'abf96247f6b99a24e518d89162c23cffc821d5cae5703f5b7c7c4587e34cdf98','67d8b52c93c5d07ce1a335ea3572f0015a971effdecf921193cca273553466c1','c9549e13f6586ea9a981cf41ce2e9241c2b766cd213df70fcb2897ae50b68d45'); +INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'06aeace2e79321c6776dd1098982e71bfc0baadc55470721022db67a03bd4478','2e148e6946d39fee7c6d1b320122beb1689903e929397821a63e612d5216326d','6755b01edd092989df12d5a56adc03f488f19777e959f30f53fa054633d215db'); +INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'ba2c7078ee940b14e584459985a5a4785156762135541d40a138c31ff9bfe4fb','63832ac6186f8a8e8091579221ada474b43c36f465ae25ddae4ead963207150c','399605f63a83afc4afbf51cfee3fc50ad5b8daa11b13f1c45004acf82502e795'); +INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'af327b161ed9fa8022f3efd81b695d25ad9ae8f250a6d08739a40b0883262045','47bdbc4933d69cd703c277d9a5e156951ef57791f87f92d16b85c15ab3194061','95e2a1d5a361c5fc625b4ae9fa2e3bf0cf4c69daf9f05cce15aec824639ffdce'); +INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'2c4d6568a9c77737c5942fab33613a1ef055ce21b9f0a9b4a42fcdf6e9536a59','7d57db6fdebb83dc0fbd1746eb328a94403f4a66e7e003593fe90c95fdef3e5c','d277449843a5dff9787c10f0e33a262d66422c7d800ee35a26f4d8653d977cd0'); +INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'0b8dcdff637e5e60ae045d4c7646bd47e6047fc992860c99dd422477b9a90d74','61316fca3bd986c2398fa5dd92a8b874f4a64095691626d695e82e3c30849e27','25dc834d82792d751cacd629fad0f8aec469c023a21424f72771f4948236d344'); +INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'eec6578a8bc1f5766427f4753ded18cb97c53e710f5fff8918bbdadb59678f64','bc5cabb9579b79f03b329c0e5e3c8652d8b0eccde9563d838890218bcc8bd932','b9ecbe19bfcd94e4b02072aee950afef0fb34c23be6c40755ee656489393e16c'); +INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'a2b2ed6a61f1c9a3d322a050178c6be119b89d1a0795fa9c9d7484ad8edfcecd','86e50073092182d9a5b37cd2453dd5a7a1af175ad0a1150492d5001510b05e6e','b58b22c8e8f29ca2ae837d09ffb32ac0800c5c767b445f151eaf5861cae38616'); +INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'02828eaf91883ad16beb5563f9c84cb226269c655a886857b31e5e150a1053ec','bf59d4fe42c11ab04792ba5c95cfd811a6ddf18e125daebb93695bdd829736c3','9bb58ab914b28f4dd4e54b5706b41470355b33f81afe772fa91bf78d076ef67f'); +INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'5427b45ed778796c26d0d2ddf73e975856cc9ae081c36762e78d046f6cfc376c','ca0801d366e8dc44c01db11f67594bcb3ea3e81a3031cee93d24683b82185461','82e3ef2aaa79cb15beff21bb3227960bab61c4c25e644c573146fb08e46d0fda'); +INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'34c2664f81b1bbb53c728636097bc4b7cede67bb318ddcc5e5e6b5735bcc55a7','321bd59dc3c2996a1a2a6f74905f89a8db172b3b2b35a2d1cbfc6d06f49d09c9','767c97c72d814b012c73abcc718a4a91c4b1cedf00cbee62cc6dab8757014048'); +INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'14615dfa6194665d43cf2f495b8f65fb9efa04c2e90885172d229ad4a9dd2358','3ef6f8bdf30073f297852db2b7036374e3d2c1e91b0d087cb2c6c88e400de110','3451e09b84225e111db440a9ee6a96e3fcdfe9dc4f7079f54f9cb5eb8db5686d'); +INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'fc0f077548225d481384a1aba2d91ed4ec8b2df0f0a57ab603305c615672b25f','0788356af4b45cc44c143c457d069e64d54aa12703f8c376cf3b98827052c173','07d0077791c61e70d3e256b99d087aa3bf1199978429b5e79e424d9bb0d73338'); +INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'5749263295014a597071acf2293fcd185d02a6a7b3a96df859aae3bf146b276e','02938682157ea8b10c49e9d87ed444c1303a952a00f6acfe33a1661e84868cc8','887129483d165a280bdaf9c4bd8c6e15ab9ccd30c3f66242bc218506e97bee13'); +INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'ae369a1ec3e4f2aea602eab8c7ab1181cacd6b8d01582c96c4771fdd7b3de771','04aaa17c2a3dacf6c38b16ed63d70aea7b9546dc7e733dd51a3c08248ca13eb1','be0da953edbe2aab8d7a0037ed908be8fc46b626bc5784585c72ba26f3c420fc'); +INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'06a2ac591c418d2b01c74edf2524100afd1140c3933f32120c4cc3180c1de3f0','421eb90f1258261c97512745b3543fee15ae8d17769d523646033851abde9c75','0d0497ddd2f4994b65875773924605b2df12c2877484485e89fcca02d214e6e5'); +INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'cdf0ae4d5d06b8735e3e62f5a76a902fee40742fc760578dae98b43635f2e57a','cbe924452487ba251291d1bf1ec518a7233eda0aa956d002bc2e0933d0057c53','981bc2e9afe7f97bb8e0f4fb77ce62d5f19684624185868f47ebfd959ee5bc11'); +INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'77d836433add0cf3f7691884ec1607dde9a3996df00128703644527fb096bab5','2dad9d43a8612157867a046cc0dbc8939f30c41cc8f527a1e184c93004cca63e','64d8b878e34d6a400a03e3102670bb664688945fd7f2fe280864c89dc98e87db'); +INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'770a0187b5c98725dc32e15a414b9323030f407749fcb0652b1e1f2e4e762e7e','251e12514d80ad256c13398d257708ad2dfb3b70db674695a8d72d977337ac90','a4ef1ceedbca8191e20b5b967ba2d5ca065d83b9a60dbcd0ce7a1077a5fd82e9'); +INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'567e91f9456ecd020fbd2fe940d796ac976981485f870db8cb0bc41d77a0fd0f','48924c125c80fbe8887ff318ebbab0edf8629e604eed0561dd48444bc4acdab3','9149e1eb2dc764bc8f4205dbeff0b7b55ff411f060456ff735ed20bfff887cc4'); +INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'447ceafb93aeb346eb98d87db46f07f4d1f51ffde3d44adc6056a624bea3b0c3','213f5672119909ebcda9f987e3bf69dd0404134584b36c56acdd3596a1ea6881','67f52db6916834e7cb002f8172acf06737f9dd0776f17c837f97d2c900775b4c'); +INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'f510ec6201f4eb850d4f62b399d0d360d0d8cca7e3d955f849ad59a22fba1677','e504e97b361e32b0256aeb1640291eeda547dc564043835013086c87f5e637c2','504458e1c08f8db2a857e4285ca216e7e044797177221ef0864ff2f8095ce042'); +INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'1f956e2c07defac832b7c90982c1e7a1192988c4d1e622b54b40b78065deafef','891969418c97f41be742eeb562f39cfe92543c159095f58c5f58c8c2b0274423','3103e466669c64b29b18106d4133c19559e8ffe75a1bac5d456d5e82a6f26555'); +INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'ac4cc3e01feb10ba2211afdff4ec43a4ce13a12e1a90dc6f675c390e6395b1e3','71e61b2d7aca45ccd7cfb6bda957b18fa076cc16bcbbfb63668e4c4f2749b7f3','8f1441674a197f8b0c2f8142be236fa9bcb379e076a0e8a93b7b843ff3331a06'); +INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'0a4bb35bf922a8175ef5559e74084d32caa16f599df84adb5e255de26b92c1c4','e716e04989e254c2ed5b1c4b81026153d5799edb5a676adea5b7efb930940b30','7cbbb910aa5a474ad3915f26ccc7a8b867ba0c20e31a6a08bec87af6d7e5ad37'); +-- Triggers and indices on blocks +CREATE INDEX blocks_block_index_block_hash_idx ON blocks (block_index, block_hash) + ; +CREATE INDEX blocks_block_index_idx ON blocks (block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transactions +DROP TABLE IF EXISTS transactions; +CREATE TABLE transactions( + tx_index INTEGER UNIQUE, + tx_hash TEXT UNIQUE, + block_index INTEGER, + block_hash TEXT, + block_time INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + fee INTEGER, + data BLOB, + supported BOOL DEFAULT 1, + FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), + PRIMARY KEY (tx_index, tx_hash, block_index)); +INSERT INTO transactions VALUES(1,'c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); +INSERT INTO transactions VALUES(2,'8968369ff47b1f5f6959aa67aca82d1385f3763e1cac2180d8cf41b44a515a32',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',1000,7650,X'0000000000000000000000010000000002FAF080',1); +INSERT INTO transactions VALUES(3,'1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,1000000,X'0000000A00000000000000000000000002FAF08000000000000000010000000005F5E100000A0000000000000000',1); +INSERT INTO transactions VALUES(4,'a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000000A00000000000000010000000006422C4000000000000000000000000002FAF080000A00000000000DBBA0',1); +INSERT INTO transactions VALUES(5,'06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',50000000,9675,X'0000000B1385519CA199F1B39BB89CAAC062FE3A342F18E393D301D7A56C150A8AB84093A2E93083B871E68CB89E216F9A99C4C6AEA1EB92CBDBAFC5B4B0E160C19C517E',1); +INSERT INTO transactions VALUES(6,'57b34dae586111eefeecae4d16f6d20d6447efa974b72931f7b2cd0f39890406',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'000000140000000000004767000000003B9ACA000100000000000000000000',1); +INSERT INTO transactions VALUES(7,'6163ab5e7282e43a2f07a146d28b4b45c55820ee541881bc98d2592f4e6ba975',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000014000000000000476800000000000186A00000000000000000000006666F6F626172',1); +INSERT INTO transactions VALUES(8,'8972d4a117a0c4161ddf2bcdeb3877e0ad4cbf9cb5ce2be3411c69eedc9f718b',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',1000,7650,X'00000000000000000000476700000000003D0900',1); +INSERT INTO transactions VALUES(9,'3f49e685b22a7cd1a4d20bb7ca9a3f1ec4e593bc6e60c67037de2aab8b992391',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',1000,7650,X'000000000000000000004768000000000000020E',1); +INSERT INTO transactions VALUES(10,'6aa6c552e5a302b056768aed88aa8da6e9f78def669d5203904719e15ff1ac29',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000032000000000000025800000000000047670000000000000001',1); +INSERT INTO transactions VALUES(11,'8606cbcb3aaa438e207e9ef279191f6f100e34d479b1985268525e32a91c953e',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000032000000000000032000000000000047680000000000000001',1); +INSERT INTO transactions VALUES(12,'47a25bd63a47c61ca2709279bb5c1dc8695f0e93926bf659038be64e6a1c4060',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB3300405900000000000005F5E0FF09556E69742054657374',1); +INSERT INTO transactions VALUES(13,'5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000052BB33640000000002FAF08000000000017D7840000000000000000000003B100000000A',1); +INSERT INTO transactions VALUES(14,'813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000152BB336400000000017D78400000000002793D60000000000000000000003B100000000A',1); +INSERT INTO transactions VALUES(15,'33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000052BB33640000000008F0D1800000000014DC93800000000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(16,'22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000152BB33640000000014DC93800000000008F0D1800000000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(17,'5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000252BB33C8000000002CB417800000000026BE36803FF0000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(18,'07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1000,7650,X'00000028000352BB33C80000000026BE3680000000002CB417803FF0000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(19,'5a057227535fcb5aeaf56ec919321667cc45f4fa7d11bf940d22abaad909cd66',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB33324058F7256FFC115E004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(20,'0baab7280b14d7d8597dc5f570682654fac0453b0b4c374d45cef3d21a7ceb17',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB3365405915F3B645A1CB004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(21,'2b39f99114417cb4857c8c2c671b4bc3bc8b3e52865daa91a49ea6d9bdfb6402',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB33C94000000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(22,'19c6fe5cbf0be99ff3d469077e866e0f9fdc56901824b7fec89b0b523526e323',310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000000A00000000000047670000000002FAF08000000000000000010000000002FAF080000A0000000000000000',1); +INSERT INTO transactions VALUES(23,'3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22',310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','mvCounterpartyXXXXXXXXXXXXXXW24Hef',100000000,5625,X'',1); +INSERT INTO transactions VALUES(24,'72bd448eb70da9b7554d3b58a1e89356171578c847763af014b25c99e70cbb58',310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',1000,7650,X'0000000000000000000047680000000000002710',1); +-- Triggers and indices on transactions +CREATE INDEX transactions_block_index_idx ON transactions (block_index) + ; +CREATE INDEX transactions_block_index_tx_index_idx ON transactions (block_index, tx_index) + ; +CREATE INDEX transactions_tx_hash_idx ON transactions (tx_hash) + ; +CREATE INDEX transactions_tx_index_idx ON transactions (tx_index) + ; +CREATE INDEX transactions_tx_index_tx_hash_block_index_idx ON transactions (tx_index, tx_hash, block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transaction_outputs +DROP TABLE IF EXISTS transaction_outputs; +CREATE TABLE transaction_outputs( + tx_index, + tx_hash TEXT, + block_index INTEGER, + out_index INTEGER, + destination TEXT, + btc_amount INTEGER, + PRIMARY KEY (tx_hash, out_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,310001,2); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92845000000,310003,4); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92945000000,310004,5); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92895000000,310005,6); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',1000000000,310005,6); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92845000000,310006,7); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',100000,310006,7); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000,310007,8); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,310007,8); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',99474,310008,9); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,310008,9); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844999976,310009,10); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844979976,310009,10); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000024,310009,10); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844559176,310010,11); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844539176,310010,11); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50420824,310010,11); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92794539176,310012,13); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92769539176,310013,14); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92773789176,310013,14); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92778789176,310014,0); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92628789176,310014,15); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91528789176,310016,17); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90937926676,310018,19); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90941039176,310018,19); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91100339176,310019,20); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91416039176,310019,20); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91441039176,310019,20); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92771039176,310020,21); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92841039176,310020,21); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',946000000,310021,22); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149840926438,310022,23); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149849426438,310023,0); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',89474,310023,24); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10526,310023,24); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000,310032,0); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,310001,2); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92845000000,310003,4); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92945000000,310004,5); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92895000000,310005,6); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',1000000000,310005,6); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92845000000,310006,7); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',100000,310006,7); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000,310007,8); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,310007,8); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',99474,310008,9); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,310008,9); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844999976,310009,10); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844979976,310009,10); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000024,310009,10); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844559176,310010,11); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92844539176,310010,11); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50420824,310010,11); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92794539176,310012,13); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92769539176,310013,14); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92773789176,310013,14); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92778789176,310014,0); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92628789176,310014,15); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91528789176,310016,17); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90937926676,310018,19); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',90941039176,310018,19); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91100339176,310019,20); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91416039176,310019,20); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',91441039176,310019,20); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92771039176,310020,21); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',92841039176,310020,21); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',946000000,310021,22); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149840926438,310022,23); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149849426438,310023,0); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',89474,310023,24); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10526,310023,24); +INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000,310032,0); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table credits +DROP TABLE IF EXISTS credits; +CREATE TABLE credits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + calling_function TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO credits VALUES(310000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',93000000000,'burn','c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5',1); +INSERT INTO credits VALUES(310001,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,'send','8968369ff47b1f5f6959aa67aca82d1385f3763e1cac2180d8cf41b44a515a32',2); +INSERT INTO credits VALUES(310004,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',100000000,'btcpay','06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac',5); +INSERT INTO credits VALUES(310005,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',1000000000,'issuance','57b34dae586111eefeecae4d16f6d20d6447efa974b72931f7b2cd0f39890406',6); +INSERT INTO credits VALUES(310006,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',100000,'issuance','6163ab5e7282e43a2f07a146d28b4b45c55820ee541881bc98d2592f4e6ba975',7); +INSERT INTO credits VALUES(310007,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,'send','8972d4a117a0c4161ddf2bcdeb3877e0ad4cbf9cb5ce2be3411c69eedc9f718b',8); +INSERT INTO credits VALUES(310008,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,'send','3f49e685b22a7cd1a4d20bb7ca9a3f1ec4e593bc6e60c67037de2aab8b992391',9); +INSERT INTO credits VALUES(310009,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',24,'dividend','6aa6c552e5a302b056768aed88aa8da6e9f78def669d5203904719e15ff1ac29',10); +INSERT INTO credits VALUES(310010,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',420800,'dividend','8606cbcb3aaa438e207e9ef279191f6f100e34d479b1985268525e32a91c953e',11); +INSERT INTO credits VALUES(310013,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',4250000,'filled','813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3',14); +INSERT INTO credits VALUES(310014,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',5000000,'cancel order','a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e',0); +INSERT INTO credits VALUES(310015,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f',16); +INSERT INTO credits VALUES(310015,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f',16); +INSERT INTO credits VALUES(310017,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a',18); +INSERT INTO credits VALUES(310017,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a',18); +INSERT INTO credits VALUES(310018,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',59137500,'bet settled: liquidated for bear','5a057227535fcb5aeaf56ec919321667cc45f4fa7d11bf940d22abaad909cd66',19); +INSERT INTO credits VALUES(310018,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',3112500,'feed fee','5a057227535fcb5aeaf56ec919321667cc45f4fa7d11bf940d22abaad909cd66',19); +INSERT INTO credits VALUES(310019,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',159300000,'bet settled','0baab7280b14d7d8597dc5f570682654fac0453b0b4c374d45cef3d21a7ceb17',20); +INSERT INTO credits VALUES(310019,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',315700000,'bet settled','0baab7280b14d7d8597dc5f570682654fac0453b0b4c374d45cef3d21a7ceb17',20); +INSERT INTO credits VALUES(310019,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',25000000,'feed fee','0baab7280b14d7d8597dc5f570682654fac0453b0b4c374d45cef3d21a7ceb17',20); +INSERT INTO credits VALUES(310020,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',1330000000,'bet settled: for notequal','2b39f99114417cb4857c8c2c671b4bc3bc8b3e52865daa91a49ea6d9bdfb6402',21); +INSERT INTO credits VALUES(310020,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',70000000,'feed fee','2b39f99114417cb4857c8c2c671b4bc3bc8b3e52865daa91a49ea6d9bdfb6402',21); +INSERT INTO credits VALUES(310022,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',56999887262,'burn','3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22',23); +INSERT INTO credits VALUES(310023,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',8500000,'recredit wager remaining','5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16',0); +INSERT INTO credits VALUES(310023,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10000,'send','72bd448eb70da9b7554d3b58a1e89356171578c847763af014b25c99e70cbb58',24); +INSERT INTO credits VALUES(310032,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,'cancel order','19c6fe5cbf0be99ff3d469077e866e0f9fdc56901824b7fec89b0b523526e323',0); +-- Triggers and indices on credits +CREATE TRIGGER block_update_credits + BEFORE UPDATE ON credits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX credits_address_idx ON credits (address) + ; +CREATE INDEX credits_asset_idx ON credits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table debits +DROP TABLE IF EXISTS debits; +CREATE TABLE debits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + action TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO debits VALUES(310001,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'send','8968369ff47b1f5f6959aa67aca82d1385f3763e1cac2180d8cf41b44a515a32',2); +INSERT INTO debits VALUES(310003,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,'open order','a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e',4); +INSERT INTO debits VALUES(310005,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'issuance fee','57b34dae586111eefeecae4d16f6d20d6447efa974b72931f7b2cd0f39890406',6); +INSERT INTO debits VALUES(310006,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'issuance fee','6163ab5e7282e43a2f07a146d28b4b45c55820ee541881bc98d2592f4e6ba975',7); +INSERT INTO debits VALUES(310007,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',4000000,'send','8972d4a117a0c4161ddf2bcdeb3877e0ad4cbf9cb5ce2be3411c69eedc9f718b',8); +INSERT INTO debits VALUES(310008,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',526,'send','3f49e685b22a7cd1a4d20bb7ca9a3f1ec4e593bc6e60c67037de2aab8b992391',9); +INSERT INTO debits VALUES(310009,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',24,'dividend','6aa6c552e5a302b056768aed88aa8da6e9f78def669d5203904719e15ff1ac29',10); +INSERT INTO debits VALUES(310009,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',20000,'dividend fee','6aa6c552e5a302b056768aed88aa8da6e9f78def669d5203904719e15ff1ac29',10); +INSERT INTO debits VALUES(310010,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',420800,'dividend','8606cbcb3aaa438e207e9ef279191f6f100e34d479b1985268525e32a91c953e',11); +INSERT INTO debits VALUES(310010,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',20000,'dividend fee','8606cbcb3aaa438e207e9ef279191f6f100e34d479b1985268525e32a91c953e',11); +INSERT INTO debits VALUES(310012,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'bet','5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16',13); +INSERT INTO debits VALUES(310013,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',25000000,'bet','813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3',14); +INSERT INTO debits VALUES(310014,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',150000000,'bet','33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41',15); +INSERT INTO debits VALUES(310015,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',350000000,'bet','22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f',16); +INSERT INTO debits VALUES(310016,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',750000000,'bet','5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede',17); +INSERT INTO debits VALUES(310017,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',650000000,'bet','07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a',18); +INSERT INTO debits VALUES(310021,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,'open order','19c6fe5cbf0be99ff3d469077e866e0f9fdc56901824b7fec89b0b523526e323',22); +INSERT INTO debits VALUES(310023,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',10000,'send','72bd448eb70da9b7554d3b58a1e89356171578c847763af014b25c99e70cbb58',24); +-- Triggers and indices on debits +CREATE TRIGGER block_update_debits + BEFORE UPDATE ON debits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX debits_address_idx ON debits (address) + ; +CREATE INDEX debits_asset_idx ON debits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table messages +DROP TABLE IF EXISTS messages; +CREATE TABLE messages( + message_index INTEGER PRIMARY KEY, + block_index INTEGER, + command TEXT, + category TEXT, + bindings TEXT, + timestamp INTEGER); +INSERT INTO messages VALUES(0,310000,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(1,310001,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(2,310002,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(3,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(4,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(5,310003,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(6,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(7,310003,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(8,310003,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(9,310004,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(10,310004,'update','order_matches','[''order_match_id'', ''status'']',0); +INSERT INTO messages VALUES(11,310004,'insert','btcpays','[''block_index'', ''btc_amount'', ''destination'', ''order_match_id'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(12,310005,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(13,310006,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(14,310007,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(15,310008,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(16,310009,'insert','dividends','[''asset'', ''block_index'', ''dividend_asset'', ''fee_paid'', ''quantity_per_unit'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(17,310010,'insert','dividends','[''asset'', ''block_index'', ''dividend_asset'', ''fee_paid'', ''quantity_per_unit'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(18,310011,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(19,310012,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(20,310013,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(21,310013,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(22,310013,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +INSERT INTO messages VALUES(23,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(24,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(25,310013,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(26,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(27,310013,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(28,310012,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(29,310014,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(30,310014,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(31,310014,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +INSERT INTO messages VALUES(32,310014,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(33,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(34,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(35,310015,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(36,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(37,310015,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(38,310014,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(39,310016,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(40,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(41,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(42,310017,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(43,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(44,310017,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(45,310016,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(46,310018,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(47,310018,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(48,310018,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(49,310018,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(50,310019,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(51,310019,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(52,310019,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(53,310019,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(54,310020,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(55,310020,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(56,310020,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(57,310020,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(58,310021,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(59,310022,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(60,310023,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(61,310023,'update','bets','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(62,310023,'insert','bet_expirations','[''bet_hash'', ''bet_index'', ''block_index'', ''source'']',0); +INSERT INTO messages VALUES(63,310023,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(64,310032,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(65,310032,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(66,310032,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +-- Triggers and indices on messages +CREATE TRIGGER block_update_messages + BEFORE UPDATE ON messages BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX messages_block_index_idx ON messages (block_index) + ; +CREATE INDEX messages_block_index_message_index_idx ON messages (block_index, message_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_match_expirations +DROP TABLE IF EXISTS order_match_expirations; +CREATE TABLE order_match_expirations( + order_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on order_match_expirations +CREATE TRIGGER block_update_order_match_expirations + BEFORE UPDATE ON order_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_match_expirations_block_index_idx ON order_match_expirations (block_index) + ; +CREATE INDEX order_match_expirations_tx0_address_idx ON order_match_expirations (tx0_address) + ; +CREATE INDEX order_match_expirations_tx1_address_idx ON order_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_matches +DROP TABLE IF EXISTS order_matches; +CREATE TABLE order_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + forward_asset TEXT, + forward_quantity INTEGER, + backward_asset TEXT, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_paid INTEGER, + status TEXT); +INSERT INTO order_matches VALUES('1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093_a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e',3,'1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',4,'a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,'XCP',100000000,310002,310003,310003,10,10,310023,857142,'pending'); +INSERT INTO order_matches VALUES('1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093_a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e',3,'1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',4,'a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,'XCP',100000000,310002,310003,310004,10,10,310023,857142,'completed'); +-- Triggers and indices on order_matches +CREATE TRIGGER block_update_order_matches + BEFORE UPDATE ON order_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_matches_backward_asset_idx ON order_matches (backward_asset) + ; +CREATE INDEX order_matches_block_index_idx ON order_matches (block_index) + ; +CREATE INDEX order_matches_forward_asset_idx ON order_matches (forward_asset) + ; +CREATE INDEX order_matches_id_idx ON order_matches (id) + ; +CREATE INDEX order_matches_match_expire_index_idx ON order_matches (match_expire_index) + ; +CREATE INDEX order_matches_status_idx ON order_matches (status) + ; +CREATE INDEX order_matches_tx0_address_forward_asset_idx ON order_matches (tx0_address, forward_asset) + ; +CREATE INDEX order_matches_tx0_hash_idx ON order_matches (tx0_hash) + ; +CREATE INDEX order_matches_tx1_address_backward_asset_idx ON order_matches (tx1_address, backward_asset) + ; +CREATE INDEX order_matches_tx1_hash_idx ON order_matches (tx1_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_expirations +DROP TABLE IF EXISTS order_expirations; +CREATE TABLE order_expirations( + order_hash TEXT PRIMARY KEY, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO order_expirations VALUES('1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310013); +INSERT INTO order_expirations VALUES('a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310014); +INSERT INTO order_expirations VALUES('19c6fe5cbf0be99ff3d469077e866e0f9fdc56901824b7fec89b0b523526e323','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310032); +-- Triggers and indices on order_expirations +CREATE TRIGGER block_update_order_expirations + BEFORE UPDATE ON order_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_expirations_block_index_idx ON order_expirations (block_index) + ; +CREATE INDEX order_expirations_source_idx ON order_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table orders +DROP TABLE IF EXISTS orders; +CREATE TABLE orders( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + give_asset TEXT, + give_quantity INTEGER, + give_remaining INTEGER, + get_asset TEXT, + get_quantity INTEGER, + get_remaining INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_required INTEGER, + fee_required_remaining INTEGER, + fee_provided INTEGER, + fee_provided_remaining INTEGER, + status TEXT); +INSERT INTO orders VALUES(3,'1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093',310002,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,50000000,'XCP',100000000,100000000,10,310012,0,0,1000000,1000000,'open'); +INSERT INTO orders VALUES(4,'a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e',310003,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,105000000,'BTC',50000000,50000000,10,310013,900000,900000,6800,6800,'open'); +INSERT INTO orders VALUES(3,'1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093',310003,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'open'); +INSERT INTO orders VALUES(4,'a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e',310003,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'open'); +INSERT INTO orders VALUES(3,'1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093',310013,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'expired'); +INSERT INTO orders VALUES(4,'a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e',310014,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'expired'); +INSERT INTO orders VALUES(22,'19c6fe5cbf0be99ff3d469077e866e0f9fdc56901824b7fec89b0b523526e323',310021,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'open'); +INSERT INTO orders VALUES(22,'19c6fe5cbf0be99ff3d469077e866e0f9fdc56901824b7fec89b0b523526e323',310032,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'expired'); +-- Triggers and indices on orders +CREATE TRIGGER block_update_orders + BEFORE UPDATE ON orders BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX orders_block_index_idx ON orders (block_index) + ; +CREATE INDEX orders_expire_index_idx ON orders (expire_index) + ; +CREATE INDEX orders_get_asset_give_asset_idx ON orders (get_asset, give_asset) + ; +CREATE INDEX orders_give_asset_idx ON orders (give_asset) + ; +CREATE INDEX orders_source_give_asset_idx ON orders (source, give_asset) + ; +CREATE INDEX orders_status_idx ON orders (status) + ; +CREATE INDEX orders_tx_hash_idx ON orders (tx_hash) + ; +CREATE INDEX orders_tx_index_tx_hash_idx ON orders (tx_index, tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_expirations +DROP TABLE IF EXISTS bet_match_expirations; +CREATE TABLE bet_match_expirations( + bet_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on bet_match_expirations +CREATE INDEX bet_match_expirations_block_index_idx ON bet_match_expirations (block_index) + ; +CREATE INDEX bet_match_expirations_tx0_address_idx ON bet_match_expirations (tx0_address) + ; +CREATE INDEX bet_match_expirations_tx1_address_idx ON bet_match_expirations (tx1_address) + ; +CREATE TRIGGER block_update_bet_match_expirations + BEFORE UPDATE ON bet_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_matches +DROP TABLE IF EXISTS bet_matches; +CREATE TABLE bet_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_bet_type INTEGER, + tx1_bet_type INTEGER, + feed_address TEXT, + initial_value INTEGER, + deadline INTEGER, + target_value REAL, + leverage INTEGER, + forward_quantity INTEGER, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bet_matches VALUES('5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16_813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3',13,'5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',14,'813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310012,10,10,310022,99999999,'pending'); +INSERT INTO bet_matches VALUES('33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41_22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f',15,'33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',16,'22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310014,10,10,310024,99999999,'pending'); +INSERT INTO bet_matches VALUES('5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede_07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a',17,'5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',18,'07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,3,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310016,10,10,310026,99999999,'pending'); +INSERT INTO bet_matches VALUES('5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16_813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3',13,'5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',14,'813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310018,10,10,310022,99999999,'settled: liquidated for bear'); +INSERT INTO bet_matches VALUES('33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41_22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f',15,'33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',16,'22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310019,10,10,310024,99999999,'settled'); +INSERT INTO bet_matches VALUES('5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede_07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a',17,'5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',18,'07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,3,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310020,10,10,310026,99999999,'settled: for notequal'); +-- Triggers and indices on bet_matches +CREATE INDEX bet_matches_block_index_idx ON bet_matches (block_index) + ; +CREATE INDEX bet_matches_deadline_idx ON bet_matches (deadline) + ; +CREATE INDEX bet_matches_id_idx ON bet_matches (id) + ; +CREATE INDEX bet_matches_status_idx ON bet_matches (status) + ; +CREATE INDEX bet_matches_tx0_address_idx ON bet_matches (tx0_address) + ; +CREATE INDEX bet_matches_tx1_address_idx ON bet_matches (tx1_address) + ; +CREATE TRIGGER block_update_bet_matches + BEFORE UPDATE ON bet_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_resolutions +DROP TABLE IF EXISTS bet_match_resolutions; +CREATE TABLE bet_match_resolutions( + bet_match_id TEXT PRIMARY KEY, + bet_match_type_id INTEGER, + block_index INTEGER, + winner TEXT, + settled BOOL, + bull_credit INTEGER, + bear_credit INTEGER, + escrow_less_fee INTEGER, + fee INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_match_resolutions VALUES('5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16_813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3',1,310018,'0',0,59137500,NULL,NULL,3112500); +INSERT INTO bet_match_resolutions VALUES('33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41_22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f',1,310019,'1',159300000,315700000,NULL,NULL,25000000); +INSERT INTO bet_match_resolutions VALUES('5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede_07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a',5,310020,NULL,NULL,NULL,'NotEqual',1330000000,70000000); +-- Triggers and indices on bet_match_resolutions +CREATE TRIGGER block_update_bet_match_resolutions + BEFORE UPDATE ON bet_match_resolutions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_expirations +DROP TABLE IF EXISTS bet_expirations; +CREATE TABLE bet_expirations( + bet_index INTEGER PRIMARY KEY, + bet_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_expirations VALUES(13,'5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310023); +-- Triggers and indices on bet_expirations +CREATE INDEX bet_expirations_block_index_idx ON bet_expirations (block_index) + ; +CREATE INDEX bet_expirations_source_idx ON bet_expirations (source) + ; +CREATE TRIGGER block_update_bet_expirations + BEFORE UPDATE ON bet_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bets +DROP TABLE IF EXISTS bets; +CREATE TABLE bets( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + feed_address TEXT, + bet_type INTEGER, + deadline INTEGER, + wager_quantity INTEGER, + wager_remaining INTEGER, + counterwager_quantity INTEGER, + counterwager_remaining INTEGER, + target_value REAL, + leverage INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bets VALUES(13,'5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16',310012,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,50000000,50000000,25000000,25000000,0.0,15120,10,310022,99999999,'open'); +INSERT INTO bets VALUES(14,'813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3',310013,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,25000000,25000000,41500000,41500000,0.0,15120,10,310023,99999999,'open'); +INSERT INTO bets VALUES(13,'5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16',310013,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'open'); +INSERT INTO bets VALUES(14,'813e45480753e39c6ea548efd6b77f830120a41ac3b9bd37a4470b14e83301a3',310013,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,25000000,4250000,41500000,0,0.0,15120,10,310023,99999999,'filled'); +INSERT INTO bets VALUES(15,'33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41',310014,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,150000000,150000000,350000000,350000000,0.0,5040,10,310024,99999999,'open'); +INSERT INTO bets VALUES(16,'22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f',310015,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,350000000,350000000,150000000,150000000,0.0,5040,10,310025,99999999,'open'); +INSERT INTO bets VALUES(15,'33fdca6b108f99ffb56d590f55f9d19c7d16fe83c096b9fbbf71eabeda826a41',310015,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,150000000,0,350000000,0,0.0,5040,10,310024,99999999,'filled'); +INSERT INTO bets VALUES(16,'22375d61ad5cb70e45ca8843ccffa0abe11b028351352d5da874d246c834ab6f',310015,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,350000000,0,150000000,0,0.0,5040,10,310025,99999999,'filled'); +INSERT INTO bets VALUES(17,'5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede',310016,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,1388000200,750000000,750000000,650000000,650000000,1.0,5040,10,310026,99999999,'open'); +INSERT INTO bets VALUES(18,'07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a',310017,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',3,1388000200,650000000,650000000,750000000,750000000,1.0,5040,10,310027,99999999,'open'); +INSERT INTO bets VALUES(17,'5e0cd8d81531e656dc3a4ae4b7edfd1bec48e455ed0bd69a4a3c22c0c08bbede',310017,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,1388000200,750000000,0,650000000,0,1.0,5040,10,310026,99999999,'filled'); +INSERT INTO bets VALUES(18,'07d3cbac831b5edb261b1445071e307949d7825565b8d5c8cba1d720d5c7ab4a',310017,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',3,1388000200,650000000,0,750000000,0,1.0,5040,10,310027,99999999,'filled'); +INSERT INTO bets VALUES(13,'5c49e06f8ddf9cc0f83541550664bb00075a2f01df493278097066462497af16',310023,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'expired'); +-- Triggers and indices on bets +CREATE INDEX bets_block_index_idx ON bets (block_index) + ; +CREATE INDEX bets_expire_index_idx ON bets (expire_index) + ; +CREATE INDEX bets_feed_address_bet_type_idx ON bets (feed_address, bet_type) + ; +CREATE INDEX bets_feed_address_idx ON bets (feed_address) + ; +CREATE INDEX bets_status_idx ON bets (status) + ; +CREATE INDEX bets_tx_hash_idx ON bets (tx_hash) + ; +CREATE INDEX bets_tx_index_tx_hash_idx ON bets (tx_index, tx_hash) + ; +CREATE TRIGGER block_update_bets + BEFORE UPDATE ON bets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table broadcasts +DROP TABLE IF EXISTS broadcasts; +CREATE TABLE broadcasts( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + timestamp INTEGER, + value REAL, + fee_fraction_int INTEGER, + text TEXT, + locked BOOL, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO broadcasts VALUES(12,'47a25bd63a47c61ca2709279bb5c1dc8695f0e93926bf659038be64e6a1c4060',310011,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000000,100.0,99999999,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(19,'5a057227535fcb5aeaf56ec919321667cc45f4fa7d11bf940d22abaad909cd66',310018,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000050,99.86166,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(20,'0baab7280b14d7d8597dc5f570682654fac0453b0b4c374d45cef3d21a7ceb17',310019,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000101,100.343,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(21,'2b39f99114417cb4857c8c2c671b4bc3bc8b3e52865daa91a49ea6d9bdfb6402',310020,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000201,2.0,5000000,'Unit Test',0,'valid'); +-- Triggers and indices on broadcasts +CREATE TRIGGER block_update_broadcasts + BEFORE UPDATE ON broadcasts BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX broadcasts_block_index_idx ON broadcasts (block_index) + ; +CREATE INDEX broadcasts_status_source_idx ON broadcasts (status, source) + ; +CREATE INDEX broadcasts_status_source_tx_index_idx ON broadcasts (status, source, tx_index) + ; +CREATE INDEX broadcasts_timestamp_idx ON broadcasts (timestamp) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table btcpays +DROP TABLE IF EXISTS btcpays; +CREATE TABLE btcpays( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + order_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO btcpays VALUES(5,'06448effa4c26f1101b315b2dbe3d2b7b888ca18f5755f4365c97215a6c760ac',310004,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',50000000,'1385519ca199f1b39bb89caac062fe3a342f18e393d301d7a56c150a8ab84093_a2e93083b871e68cb89e216f9a99c4c6aea1eb92cbdbafc5b4b0e160c19c517e','valid'); +-- Triggers and indices on btcpays +CREATE TRIGGER block_update_btcpays + BEFORE UPDATE ON btcpays BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX btcpays_block_index_idx ON btcpays (block_index) + ; +CREATE INDEX btcpays_destination_idx ON btcpays (destination) + ; +CREATE INDEX btcpays_source_idx ON btcpays (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table burns +DROP TABLE IF EXISTS burns; +CREATE TABLE burns( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + burned INTEGER, + earned INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO burns VALUES(1,'c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5',310000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',62000000,93000000000,'valid'); +INSERT INTO burns VALUES(23,'3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22',310022,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',38000000,56999887262,'valid'); +-- Triggers and indices on burns +CREATE TRIGGER block_update_burns + BEFORE UPDATE ON burns BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX burns_source_idx ON burns (source) + ; +CREATE INDEX burns_status_idx ON burns (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table cancels +DROP TABLE IF EXISTS cancels; +CREATE TABLE cancels( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + offer_hash TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on cancels +CREATE TRIGGER block_update_cancels + BEFORE UPDATE ON cancels BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX cancels_block_index_idx ON cancels (block_index) + ; +CREATE INDEX cancels_source_idx ON cancels (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dividends +DROP TABLE IF EXISTS dividends; +CREATE TABLE dividends( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset TEXT, + dividend_asset TEXT, + quantity_per_unit INTEGER, + fee_paid INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO dividends VALUES(10,'6aa6c552e5a302b056768aed88aa8da6e9f78def669d5203904719e15ff1ac29',310009,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB','XCP',600,20000,'valid'); +INSERT INTO dividends VALUES(11,'8606cbcb3aaa438e207e9ef279191f6f100e34d479b1985268525e32a91c953e',310010,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC','XCP',800,20000,'valid'); +-- Triggers and indices on dividends +CREATE TRIGGER block_update_dividends + BEFORE UPDATE ON dividends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dividends_asset_idx ON dividends (asset) + ; +CREATE INDEX dividends_block_index_idx ON dividends (block_index) + ; +CREATE INDEX dividends_source_idx ON dividends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table issuances +DROP TABLE IF EXISTS issuances; +CREATE TABLE "issuances"( + tx_index INTEGER, + tx_hash TEXT, + msg_index INTEGER DEFAULT 0, + block_index INTEGER, + asset TEXT, + quantity INTEGER, + divisible BOOL, + source TEXT, + issuer TEXT, + transfer BOOL, + callable BOOL, + call_date INTEGER, + call_price REAL, + description TEXT, + fee_paid INTEGER, + locked BOOL, + status TEXT, + asset_longname TEXT, + reset BOOL, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index)); +INSERT INTO issuances VALUES(6,'57b34dae586111eefeecae4d16f6d20d6447efa974b72931f7b2cd0f39890406',0,310005,'BBBB',1000000000,1,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,0,0,0.0,'',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(7,'6163ab5e7282e43a2f07a146d28b4b45c55820ee541881bc98d2592f4e6ba975',0,310006,'BBBC',100000,0,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,0,0,0.0,'foobar',50000000,0,'valid',NULL,0); +-- Triggers and indices on issuances +CREATE TRIGGER block_update_issuances + BEFORE UPDATE ON issuances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX issuances_asset_longname_idx ON issuances (asset_longname) + ; +CREATE INDEX issuances_asset_status_idx ON issuances (asset, status) + ; +CREATE INDEX issuances_block_index_idx ON issuances (block_index) + ; +CREATE INDEX issuances_source_idx ON issuances (source) + ; +CREATE INDEX issuances_status_asset_tx_index_idx ON issuances (status, asset, tx_index DESC) + ; +CREATE INDEX issuances_status_idx ON issuances (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sends +DROP TABLE IF EXISTS sends; +CREATE TABLE "sends"( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + quantity INTEGER, + status TEXT, + msg_index INTEGER DEFAULT 0, memo BLOB, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); +INSERT INTO sends VALUES(2,'8968369ff47b1f5f6959aa67aca82d1385f3763e1cac2180d8cf41b44a515a32',310001,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,'valid',0,NULL); +INSERT INTO sends VALUES(8,'8972d4a117a0c4161ddf2bcdeb3877e0ad4cbf9cb5ce2be3411c69eedc9f718b',310007,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,'valid',0,NULL); +INSERT INTO sends VALUES(9,'3f49e685b22a7cd1a4d20bb7ca9a3f1ec4e593bc6e60c67037de2aab8b992391',310008,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,'valid',0,NULL); +INSERT INTO sends VALUES(24,'72bd448eb70da9b7554d3b58a1e89356171578c847763af014b25c99e70cbb58',310023,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10000,'valid',0,NULL); +-- Triggers and indices on sends +CREATE TRIGGER block_update_sends + BEFORE UPDATE ON sends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sends_asset_idx ON sends (asset) + ; +CREATE INDEX sends_block_index_idx ON sends (block_index) + ; +CREATE INDEX sends_destination_idx ON sends (destination) + ; +CREATE INDEX sends_memo_idx ON sends (memo) + ; +CREATE INDEX sends_source_idx ON sends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_match_expirations +DROP TABLE IF EXISTS rps_match_expirations; +CREATE TABLE rps_match_expirations( + rps_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_match_expirations +CREATE TRIGGER block_update_rps_match_expirations + BEFORE UPDATE ON rps_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_match_expirations_block_index_idx ON rps_match_expirations (block_index) + ; +CREATE INDEX rps_match_expirations_tx0_address_idx ON rps_match_expirations (tx0_address) + ; +CREATE INDEX rps_match_expirations_tx1_address_idx ON rps_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_expirations +DROP TABLE IF EXISTS rps_expirations; +CREATE TABLE rps_expirations( + rps_index INTEGER PRIMARY KEY, + rps_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_expirations +CREATE TRIGGER block_update_rps_expirations + BEFORE UPDATE ON rps_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expirations_block_index_idx ON rps_expirations (block_index) + ; +CREATE INDEX rps_expirations_source_idx ON rps_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rpsresolves +DROP TABLE IF EXISTS rpsresolves; +CREATE TABLE rpsresolves( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + move INTEGER, + random TEXT, + rps_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on rpsresolves +CREATE TRIGGER block_update_rpsresolves + BEFORE UPDATE ON rpsresolves BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rpsresolves_block_index_idx ON rpsresolves (block_index) + ; +CREATE INDEX rpsresolves_rps_match_id_idx ON rpsresolves (rps_match_id) + ; +CREATE INDEX rpsresolves_source_idx ON rpsresolves (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_matches +DROP TABLE IF EXISTS rps_matches; +CREATE TABLE rps_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_move_random_hash TEXT, + tx1_move_random_hash TEXT, + wager INTEGER, + possible_moves INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps_matches +CREATE TRIGGER block_update_rps_matches + BEFORE UPDATE ON rps_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_matches_id_idx ON rps_matches (id) + ; +CREATE INDEX rps_matches_match_expire_index_idx ON rps_matches (match_expire_index) + ; +CREATE INDEX rps_matches_status_idx ON rps_matches (status) + ; +CREATE INDEX rps_matches_tx0_address_idx ON rps_matches (tx0_address) + ; +CREATE INDEX rps_matches_tx1_address_idx ON rps_matches (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps +DROP TABLE IF EXISTS rps; +CREATE TABLE rps( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + possible_moves INTEGER, + wager INTEGER, + move_random_hash TEXT, + expiration INTEGER, + expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps +CREATE TRIGGER block_update_rps + BEFORE UPDATE ON rps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expire_index_idx ON rps (expire_index) + ; +CREATE INDEX rps_source_idx ON rps (source) + ; +CREATE INDEX rps_status_idx ON rps (status) + ; +CREATE INDEX rps_tx_hash_idx ON rps (tx_hash) + ; +CREATE INDEX rps_tx_index_idx ON rps (tx_index) + ; +CREATE INDEX rps_tx_index_tx_hash_idx ON rps (tx_index, tx_hash) + ; +CREATE INDEX rps_wager_possible_moves_idx ON rps (wager, possible_moves) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table destructions +DROP TABLE IF EXISTS destructions; +CREATE TABLE destructions( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset INTEGER, + quantity INTEGER, + tag TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on destructions +CREATE TRIGGER block_update_destructions + BEFORE UPDATE ON destructions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX destructions_source_idx ON destructions (source) + ; +CREATE INDEX destructions_status_idx ON destructions (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table assets +DROP TABLE IF EXISTS assets; +CREATE TABLE assets( + asset_id TEXT UNIQUE, + asset_name TEXT UNIQUE, + block_index INTEGER, + asset_longname TEXT); +INSERT INTO assets VALUES('0','BTC',NULL,NULL); +INSERT INTO assets VALUES('1','XCP',NULL,NULL); +INSERT INTO assets VALUES('18279','BBBB',310005,NULL); +INSERT INTO assets VALUES('18280','BBBC',310006,NULL); +-- Triggers and indices on assets +CREATE INDEX assets_asset_id_idx ON assets (asset_id) + ; +CREATE UNIQUE INDEX assets_asset_longname_idx ON assets (asset_longname) + ; +CREATE INDEX assets_asset_name_idx ON assets (asset_name) + ; +CREATE TRIGGER block_update_assets + BEFORE UPDATE ON assets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table addresses +DROP TABLE IF EXISTS addresses; +CREATE TABLE addresses( + address TEXT UNIQUE, + options INTEGER, + block_index INTEGER); +-- Triggers and indices on addresses +CREATE INDEX addresses_address_idx ON addresses (address) + ; +CREATE TRIGGER block_update_addresses + BEFORE UPDATE ON addresses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sweeps +DROP TABLE IF EXISTS sweeps; +CREATE TABLE sweeps( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + flags INTEGER, + status TEXT, + memo BLOB, + fee_paid INTEGER, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on sweeps +CREATE TRIGGER block_update_sweeps + BEFORE UPDATE ON sweeps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sweeps_block_index_idx ON sweeps (block_index) + ; +CREATE INDEX sweeps_destination_idx ON sweeps (destination) + ; +CREATE INDEX sweeps_memo_idx ON sweeps (memo) + ; +CREATE INDEX sweeps_source_idx ON sweeps (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispensers +DROP TABLE IF EXISTS dispensers; +CREATE TABLE dispensers( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + asset TEXT, + give_quantity INTEGER, + escrow_quantity INTEGER, + satoshirate INTEGER, + status INTEGER, + give_remaining INTEGER, + oracle_address TEXT, + last_status_tx_hash TEXT, + origin TEXT, + dispense_count INTEGER DEFAULT 0); +-- Triggers and indices on dispensers +CREATE TRIGGER block_update_dispensers + BEFORE UPDATE ON dispensers BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispensers_asset_idx ON dispensers (asset) + ; +CREATE INDEX dispensers_block_index_idx ON dispensers (block_index) + ; +CREATE INDEX dispensers_give_remaining_idx ON dispensers (give_remaining) + ; +CREATE INDEX dispensers_last_status_tx_hash_idx ON dispensers (last_status_tx_hash) + ; +CREATE INDEX dispensers_source_asset_origin_idx ON dispensers (source, asset, origin) + ; +CREATE INDEX dispensers_source_idx ON dispensers (source) + ; +CREATE INDEX dispensers_source_origin_idx ON dispensers (source, origin) + ; +CREATE INDEX dispensers_status_block_index_idx ON dispensers (status, block_index) + ; +CREATE INDEX dispensers_status_idx ON dispensers (status) + ; +CREATE INDEX dispensers_tx_hash_idx ON dispensers (tx_hash) + ; +CREATE INDEX dispensers_tx_index_idx ON dispensers (tx_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenses +DROP TABLE IF EXISTS dispenses; +CREATE TABLE dispenses ( + tx_index INTEGER, + dispense_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, dispense_index, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenses +CREATE TRIGGER block_update_dispenses + BEFORE UPDATE ON dispenses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenses_block_index_idx ON dispenses (block_index) + ; +CREATE INDEX dispenses_dispenser_tx_hash_idx ON dispenses (dispenser_tx_hash) + ; +CREATE INDEX dispenses_tx_hash_idx ON dispenses (tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenser_refills +DROP TABLE IF EXISTS dispenser_refills; +CREATE TABLE dispenser_refills( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, tx_hash, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) + REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenser_refills +CREATE TRIGGER block_update_dispenser_refills + BEFORE UPDATE ON dispenser_refills BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenser_refills_block_index_idx ON dispenser_refills (block_index) + ; +CREATE INDEX dispenser_refills_tx_hash_idx ON dispenser_refills (tx_hash) + ; + +COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.json b/counterparty-lib/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.json similarity index 59% rename from counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.json rename to counterparty-lib/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.json index ee5a3ceb5c..91ec87c3d0 100644 --- a/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.json +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.json @@ -3,70 +3,70 @@ "burn": "0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac9b3d3808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "010000000197a5f31952387b14fab7862dab2ad3517930ae232dccf5e097424d3da3b0c56d010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512103e84ccc12f76f0562d2061e67436e926d65419ce896cceb9752633bda27975f8221039ea8cc75076d9fb9ca0513d3a243954075ee14f95ec807eac04b4f8b05a07149210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae93043808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "010000000197a5f31952387b14fab7862dab2ad3517930ae232dccf5e097424d3da3b0c56d010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512103e84ccc12f76f0562d2061e67436e926d65419ce896cceb9752633bda27975f8221039ea8cc75076d9fb9ca0513d3a243954075ee14f95ec807eac04b4f8b05a07149210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae231f3808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "01000000017ed525d789bc65273c459220d16fa649a113e5c257fcc6fb6d9260b3bc2fd19c010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e74ccc12f76f0562d2061e67436e94a71fc600a896cceb97452b4d31cf965f3621039ea8cc75076d9fb9d70f1585af598a4b6ae256f4489b03edb32e3b8b05a07110210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae8bcb3708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "0100000001b19dece37434a30e55c08c09d3d1ee033dc3756e6705dd2e2f4b587fa5e5c21f010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e74ccc12f76f0562d2061e67436e94a71fc600a896cceb97452b4d31cf965f3621039ea8cc75076d9fb9d70f1585af598a4b6ae256f4489b03edb32e3b8b05a07110210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeab003808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "0100000001736b98c3ccd315a6601d53b02e99908a74a1e653724571e263596d4bf798fe2e010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512103eb4ccc12f76f0562d2061e67436e926dc4dff1ffa6cceb97452b4d31cf975f9721029ea8cc75076d9fb9cb021bc9a7519e4e7cab55eb5ede169ec04b4f8b05a071cc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae83923708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "01000000018445c5c6f9459351c1d67986fd27fe2482114f6678ffb1719227464314f51b7b010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512103eb4ccc12f76f0562d2061e67436e926dc4dff1ffa6cceb97452b4d31cf975f9721029ea8cc75076d9fb9cb021bc9a7519e4e7cab55eb5ede169ec04b4f8b05a071cc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae33e23708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "0100000001ebce53cdbe64e1867ccfcdabe8e52091ef13255e3d05c53c5f243c17efd06143010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512103ed4ccc12f76f0562d2061e67436e926dc712532113cceb97452b4d31cf975f1c21029ea8cc75076d9fb9c90d15c6a055980278f847fd59bb629ec04b4f8b05a07128210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae7b593708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "01000000014071408d7ca1843889f1a66d4cd3654d9d9a5ae9aa27ff1919e4574e0c3a6fc2010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512103ed4ccc12f76f0562d2061e67436e926dc712532113cceb97452b4d31cf975f1c21029ea8cc75076d9fb9c90d15c6a055980278f847fd59bb629ec04b4f8b05a07128210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aebbc33708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "0100000001e11fb44873b49ee785c29e0de9bc75893a6ea62d7f2dfe64229fdf73986a3de7010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102f54ccc12f76f0562d2061e67436e926dc712532113cceb97452b4d3227975fb221029ea8cc75076d9fb9c10d35e68030fc22198b34982dbb629ec04b4f8b05a071d7210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae73203708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "0100000001dab42354d0519923de0a89bb87e3e26833dbc869a2b6d40b2a0f8be94b73b590010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102f54ccc12f76f0562d2061e67436e926dc712532113cceb97452b4d3227975fb221029ea8cc75076d9fb9c10d35e68030fc22198b34982dbb629ec04b4f8b05a071d7210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae43a53708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "order": "01000000017915f02e6dbd5d1d2f4d39064481959e7a2694b7cc6006d0fbbae3f6fa6fa81a010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821029e0a97964c0b9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a07161210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae6be73608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "order": "0100000001bc905c8367833a7d0c15ac5b857c4fdfd2df71006d723076133aca0989cc4d34010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821029e0a97964c0b9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a07161210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aecb863708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "0100000001f366653f7ae066c884df5956d54b42f852819deae6d37baefc4de4e3840224b0010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e00000000000069512102c24ccc12f76f0562d2061e67576e926d65419ce896cceb97452eb8d327965fa421029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aedb953608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "0100000001b86813634cf9c85144dab0149b3035ca7bdd3059442863e1e2381084ba33044f010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace80300000000000069512102c24ccc12f76f0562d2061e67576e926d65419ce896cceb97452eb8d327965fa421029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aecb4f3708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "0100000001ef9511f3992f60702f011fb70bc1a93f81915852e484c4b714284d0344a5f195020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb97452eb8d327965f4621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4b443608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "01000000015327ead545ec1ad99dffbc66f6a192353312227122338ce2e33520de23ae916e020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb97452eb8d327965f4621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aecb183708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "order": "0100000001bc4dbd0d4439f6516bf5b7447ef49288c5e1cd1df8115b6122752d2fb10f1e8d020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821029e0a97964c0b9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a07161210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae430b3608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "order": "0100000001432ad68bf2571b2ca62096174a99294a93ca9c743124da3b7ce7dbdfba5ad54f020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821029e0a97964c0b9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a07161210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae53fa3608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "order": "010000000191130542afe0eb64ea4e533e43196f690431339e1f7af9cf23c8c78a291931d8010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821039ea8cc75076d9fb9c5417aaa8970fbf2198b34982db6d93ec04b4f8b05a071bf210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae3bd23508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "order": "01000000019b3472b6071684052316f397e290b74e4e0d7d9224f8bae99b4f28075c0d4621010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821039ea8cc75076d9fb9c5417aaa8970fbf2198b34982db6d93ec04b4f8b05a071bf210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aedbdb3608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "order": "010000000145513657776ca65b5ac00f94a848b19c4d6b8dde6f1caa5ffd6a10ca2b5373c0010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb97452b471e0c965f0121029ea8cc75076c9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a071b7210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae83712608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "order": "01000000013a1b08d99e7da78391c8777c143a8cb0620a0b64e635d0c94bba36ece6b29918010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb97452b471e0c965f0121029ea8cc75076c9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a071b7210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb3952708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "01000000013e4f64cae534191014950d570671bd75cad856112ad2cc21496db4771ff81c60010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb97453aac9127965fc021029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb1162608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "0100000001b694f3067c1ee880a684f65c1e5a53a8b9b44dc0f86db232973bdbb27d8d76a1010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb97453aac9127965fc021029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae01702708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "01000000016855fa33d3c3efd0c4e29710539c976072bd94cff335138b559662fa9e92cf1a020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512103c24ccc12f76f0562d2061e67576e926d65419ce896cceb974510d7f827965fb721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aedfbb2508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "0100000001d6e90e80f942bbaa74463bd9e07f8f3c4453187042ab38cf2386da07e5978e69020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512103c24ccc12f76f0562d2061e67576e926d65419ce896cceb974510d7f827965fb721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4f4a2708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "0100000001dd152f0d7c20c5d85c5d8e9e1e2807b816d749cc98ec9a7b763d98eed0aedf62020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e00000000000069512103c24ccc12f76f0562d2061e67576e94a71fc600a896cceb97452b4d3222965f0921029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4f6a2508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "010000000132e138f55c366d3c2cdb0cb874b1483b216c6a37f07d5567d094d79e55ebfe0c020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace80300000000000069512103c24ccc12f76f0562d2061e67576e94a71fc600a896cceb97452b4d3222965f0921029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4f132708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "0100000001ba75f8be59f50408661f07c98d9edcd9ae1cfb6403f5e8b701b64a2f2de4b29b020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512103c24ccc12f76f0562d2061e67576e94a71fc600a896cceb97452b4d322d965fb921029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae7d0f2508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "01000000015a5127472a777916900d41ffc70e8ff550b8829c85ea64cabdf6162f07b0ac1f020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512103c24ccc12f76f0562d2061e67576e94a71fc600a896cceb97452b4d322d965fb921029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9ded2608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "0100000001a4ccad1fc6d93e532da470bae7b41ca093e5025163b42591239f31ab89291762020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e94ccc12f76f0562d2061e67436e926dc71a7c99ceb31468bad4b2cdd8975f8121029ea8cc75076d9fb9d50c1bdda25d894f39fa41f943cf0beab94b4f8b05a07152210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae75d62408000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "01000000018c81e7d7e2084b9be1786b23712362e7e31878bef2fca7485051aa7b7b66b6e3020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e94ccc12f76f0562d2061e67436e926dc71a7c99ceb31468bad4b2cdd8975f8121029ea8cc75076d9fb9d50c1bdda25d894f39fa41f943cf0beab94b4f8b05a07152210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae25cf2608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "broadcast": "0100000001935fd86ac1916b6ea43f77d1475049d7cf55bacb399c5866c7c1d72fd79fcf19010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295ec7258fa3f0cceb97452b0179679f0af22103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae6d9d2408000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "broadcast": "010000000139ea1c842de41f5d77a51ae3a45bc4895c312d2a1832cd93b82d9ce6bb9c4ebd010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295ec7258fa3f0cceb97452b0179679f0af22103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeadb02608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "broadcast": "01000000015ef833190e74ad47d8ae693f841a8b1b500ded7e23ee66b29898b72ec4914fdc010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff02781e00000000000069512102ff4ccc12f76f0562d2061e674922573fc7258fa3f0cceb97452b4d322792336b2103f1cba775076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07104210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae883f870b000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" + "broadcast": "01000000015ef833190e74ad47d8ae693f841a8b1b500ded7e23ee66b29898b72ec4914fdc010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff02e80300000000000069512102ff4ccc12f76f0562d2061e674922573fc7258fa3f0cceb97452b4d322792336b2103f1cba775076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07104210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae185a870b000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" }, { - "bet": "01000000017a3c651338194169382321a4c8886f8fee1f82c8cc084d9e6bcb75fd02c33033010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c297ea3f0cceb97452b443227965f4521039ea8cc7c076d9fb9c5417aa5cb30ef92198b34fc2dbb629ec04b4f8b05a071af210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aedd4b2408000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "bet": "0100000001afb8e02f3cb2ee8dcee303676520abb88b022684feb177443ed9634bb78843d1010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c297ea3f0cceb97452b443227965f4521039ea8cc7c076d9fb9c5417aa5cb30ef92198b34fc2dbb629ec04b4f8b05a071af210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aead792608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "bet": "0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c297ea3f0cceb97452b443227965ff321039ea8cc7c076d9fb9c5417aa5cb30ef92198b34fc2dbb629ec04b4f8b05a071af210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae708ff505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" + "bet": "0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c297ea3f0cceb97452b443227965ff321039ea8cc7c076d9fb9c5417aa5cb30ef92198b34fc2dbb629ec04b4f8b05a071af210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae00aaf505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" }, { - "bet": "0100000001e06e35244bb04c063cd3a730d1b6c804a746401f3e4bd38e04556ed2350eb2ac020000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e00000000000069512103ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0cceb97452b473227965f3721029ea8cc7f076d9fb9c5417aa5cb30ef92198b37702dbb629ec04b4f8b05a07168210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753aee03df505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" + "bet": "010000000193fcee171827d3f90c19cd9a7073d22c52653a8118edadfaa1c80baddd62655c020000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace80300000000000069512103ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0cceb97452b473227965f3721029ea8cc7f076d9fb9c5417aa5cb30ef92198b37702dbb629ec04b4f8b05a07168210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae0073f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" }, { - "broadcast": "01000000010d0e431950c8621a8a694c83dd97af3095bfeaefb21ff798d877a26d8a1498c6020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295ec5258fa3f0cceb97452b0179679f0a152103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed5122408000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "broadcast": "0100000001b10931cb11a8bb5cc3406f4604a26554d5fffea17e68ad6d6b0397159969212a020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295ec5258fa3f0cceb97452b0179679f0a152103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae355b2608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { "burn": "0100000001e80b32fd1670a1dc1c04ea50d944448fdd0f88b1bb1c127ee538d3b740d918c0000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac4124bb02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" @@ -87,72 +87,72 @@ "burn": "01000000015001af2c4c3bc2c43b6233261394910d10fb157a082d9b3038c65f2d01e4ff200000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff02c005d901000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac47c51c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" }, { - "issuance": "0100000001737a7238f916af16f7b8456c72d0fb5684fcc93fdba3771cc336059a49d2c6930100000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff02781e00000000000069512102e94ccc12f76f0562d2061e67436e95e748f89a47b1cceb97452b4d31cf965f8221029ea8cc75076d9fb9d51129edeb598f516cee50b84cc811fbb44b4f8b05a071bf2111111111111111111111111111111111111111111111111111111111111111111153ae3f8c1c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" + "issuance": "0100000001737a7238f916af16f7b8456c72d0fb5684fcc93fdba3771cc336059a49d2c6930100000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff02e80300000000000069512102e94ccc12f76f0562d2061e67436e95e748f89a47b1cceb97452b4d31cf965f8221029ea8cc75076d9fb9d51129edeb598f516cee50b84cc811fbb44b4f8b05a071bf2111111111111111111111111111111111111111111111111111111111111111111153aecfa61c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" }, { - "send": "0100000001d81a37c4e80f687a2f14ebe1d07881831df4a3e906f4326f608b855783a8a98d010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87781e00000000000069512102c24ccc12f76f0562d2061e67576e926d65419ce896cceb97452eb8d327965fa421029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae45c12308000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "0100000001ae5bd21881d286810402df7343e21ac6d8673806ee85596eea5c796cac2e4616010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87e80300000000000069512102c24ccc12f76f0562d2061e67576e926d65419ce896cceb97452eb8d327965fa421029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae35242608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "broadcast": "01000000017ed2539e3ec9b9c104fd80db1694de6a4ecd48011f854084578af6dca7d674ac0100000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff020000000000000000286a268a5dda15fb6f05628a061e7905d5a16ff8ea7fa3f0cceb97456706722ec331f7dcec21621eebe8741c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" + "broadcast": "01000000017ede78c16d566f54f06a50c60d16bb7aad9229b6fe0fad3c6a63e4b987f7bae80100000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff020000000000000000286a268a5dda15fb6f05628a061e7905d5a16ff8ea7fa3f0cceb97456706722ec331f7dcec21621eeb788f1c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" }, { - "bet": "010000000186015eaa13c30458af0ca269989888ec4f0a59ae4ef6832d62592190eb6f0f510100000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e870000000000000000346a328a5dda15fb6f05628a061e4f576dc0d6f4d27fa3f0cceb9745214d3227965f9ea8c675076d9fb9c5417aa5cb234c221988dcde431c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" + "bet": "010000000186015eaa13c30458af0ca269989888ec4f0a59ae4ef6832d62592190eb6f0f510100000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e870000000000000000346a328a5dda15fb6f05628a061e4f576dc0d6f4d27fa3f0cceb9745214d3227965f9ea8c675076d9fb9c5417aa5cb234c221988dc6e5e1c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" }, { - "issuance": "0100000001facabf3a2b5b9487cf7c60a738080886526f959b940cd822bd71cbf4ebd162e0010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02781e00000000000069512103ed4ccc12f76f0562d2061e67436e925539c5128f99cceb97452b4d31cf975f1a21029ea8cc75076d9fb9c90d15c6a055980278f847fd59bb629ec04b4f8b05a071282103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553ae39ebba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" + "issuance": "0100000001facabf3a2b5b9487cf7c60a738080886526f959b940cd822bd71cbf4ebd162e0010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02e80300000000000069512103ed4ccc12f76f0562d2061e67436e925539c5128f99cceb97452b4d31cf975f1a21029ea8cc75076d9fb9c90d15c6a055980278f847fd59bb629ec04b4f8b05a071282103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553aec905bb02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" }, { - "issuance": "0100000001c90b6bd2f3f9f8bce51052dc3fdf0ff11aa6f0da214a27cf05460a8f2acb665f010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02781e00000000000069512102f54ccc12f76f0562d2061e67436e925539c5128f99cceb97452b4d3227975fe721029ea8cc75076d9fb9c10d35e68030fc22198b34982dbb629ec04b4f8b05a071d72103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553ae31b2ba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" + "issuance": "010000000163bc9d24c0ca751090d225104af4fdf17e279ba98232d16f3d8b7509f4e6bc34010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02e80300000000000069512102f54ccc12f76f0562d2061e67436e925539c5128f99cceb97452b4d3227975fe721029ea8cc75076d9fb9c10d35e68030fc22198b34982dbb629ec04b4f8b05a071d72103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553ae51e7ba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" }, { - "issuance": "0100000001fe66e627e5638d5b0ceef0dedadbcb2240cccbd06d11e06231b1b1cd7174aa74010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02781e00000000000069512103f04ccc12f76f0562d2061e67436e925539c5128f99cceb97452b4d3227975fe921029ea8cc75076d9fb9c22212c4a5579946198b34982dbb629ec04b4f8b05a071422103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553ae2979ba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" + "issuance": "0100000001c24bd4c3be7f1c5f69c1a4ed1b0cf604f6e5076084909b86c53577ce0f815b02010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02e80300000000000069512103f04ccc12f76f0562d2061e67436e925539c5128f99cceb97452b4d3227975fe921029ea8cc75076d9fb9c22212c4a5579946198b34982dbb629ec04b4f8b05a071422103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553aed9c8ba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" }, { "burn": "01000000015001af2c4c3bc2c43b6233261394910d10fb157a082d9b3038c65f2d01e4ef200000000000ffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac87bf430200000000160014751e76e8199196d454941c45d1b3a323f1433bd600000000" }, { - "send": "010000000181646c6e4632e890caa5f696d4e9509a134338c326f1900d3ba1d8a7f8e5d9f0020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff020000000000000000386a368a5dda15fb6f05628a061e65576e926dc71a7fa2f0cceb9740deac32481b35760b7ff4615c870d24ae8e6a0ce0696fcf675cfd41d70d5ea82308000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "0100000001e7768e395b1df3d547aafbab9938af0289d5f3efb407facb07b499e819f8a0f6020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff020000000000000000386a368a5dda15fb6f05628a061e65576e926dc71a7fa2f0cceb9740deac32481b35760b7ff4615c870d24ae8e6a0ce0696fcf675cfd41d70d4e0b2608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "010000000105a37095f7d4ce96bca38d413dc32d137b5f758605d718e42b23b44eaa45c8aa020000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff020000000000000000376a358a5dda15fb6f05628a061e65576e926dc71a7fa2f0cceb9740deac3248de67461b94f94b163878152efccb5007c5e429bcce462dba1225f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" + "send": "01000000011ec533f4235316a6fad9d6f4b45202909bdb63c86e5f1e3d6e03a6be92a04edb020000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff020000000000000000376a358a5dda15fb6f05628a061e65576e926dc71a7fa2f0cceb9740deac3248de67461b94f94b163878152efccb5007c5e429bcce462dba325af505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" }, { - "broadcast": "01000000015bc35833f494d9960f92431f6a507f49b869663ce91b323fe08afb008704d465010000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295ec7258fa3f0cceb97452b0179679f0af22103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b82102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453ae39ebba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" + "broadcast": "01000000015bc35833f494d9960f92431f6a507f49b869663ce91b323fe08afb008704d465010000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295ec7258fa3f0cceb97452b0179679f0af22103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b82102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453aec905bb02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" }, { - "bet": "0100000001627041e1660f69b1ce7a66231e4f82256e5502473f10a4d37773a842e1836809010000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff0336150000000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c297ea3f0cceb97452b443227965f4521039ea8cc7c076d9fb9c5417aa5cb30ef92198b34fc2dbb629ec04b4f8b05a071af2102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453aea999ba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" + "bet": "010000000114cf57564928ba16f58d110f12fcd524eeb6b2e827de20c04a1794217ae0953b010000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff0336150000000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ace80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c297ea3f0cceb97452b443227965f4521039ea8cc7c076d9fb9c5417aa5cb30ef92198b34fc2dbb629ec04b4f8b05a071af2102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453aec9ceba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" }, { - "broadcast": "010000000175328042783f7b26e21dd0b95bd89f47c73fb7df98450bc441ac334097f64724020000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295ec5258fa3f0cceb97452b4d32279f30392102eedca51a691ebf89c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071c72102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453aea160ba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" + "broadcast": "0100000001ef9ceda3656e9ca5d2d90627d6c5aeffe9e7b207a8d5a50f3d556b1cae21e841020000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295ec5258fa3f0cceb97452b4d32279f30392102eedca51a691ebf89c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071c72102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453ae51b0ba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" }, { - "broadcast": "010000000106e9939169b83d4de00ea185ef1080433c6950d5c99cb3c263c4977c82ad1c9b010000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02781e00000000000069512103ff4ccc12f76f0562d2061e67493c295ec4258fa3f0cceb97452b4d322792331a2103f1cba775076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071042102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453ae9927ba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" + "broadcast": "010000000138669a2fe1a2df59a909e7742dd95a13becadb1fd9cc313f420537378bb00f87010000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02e80300000000000069512103ff4ccc12f76f0562d2061e67493c295ec4258fa3f0cceb97452b4d322792331a2103f1cba775076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071042102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453aed991ba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" }, { - "broadcast": "01000000010d99d25da8b6113897c044c0484f065ffed3239f313c1e260e085a4539dd4e21010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295ec3258fa3f0cceb97452b4d32279f303a2102eedca51a691ebf88c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071f82103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553ae2140ba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" + "broadcast": "0100000001eb0bb57357c24900219e01af97ee10458a4ed615b2e70b71fcdbc18342a2b14a010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295ec3258fa3f0cceb97452b4d32279f303a2102eedca51a691ebf88c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071f82103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553ae61aaba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" }, { - "order": "0100000001a522842be49fd48333658f68f96babf5cf90dfb0c4eadbcba2812d4003df0bb0010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821029ea8cc75076d9fb9c5417aa9fe30fbf2198b34982db6d93ec04b4f8b05a07128210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae566f2308000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "order": "0100000001a522842be49fd48333658f68f96babf5cf90dfb0c4eadbcba2812d4003df0bb0010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821029ea8cc75076d9fb9c5417aa9fe30fbf2198b34982db6d93ec04b4f8b05a07128210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed6ec2508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "order": "010000000134bc794f0e92abb21d4b09976446343bff9424e5f5d694afb94636f3246571c8010000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb97452b410727965f4e21029ea8cc75076c9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a071b7210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae5ac4e505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" + "order": "010000000134bc794f0e92abb21d4b09976446343bff9424e5f5d694afb94636f3246571c8010000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb97452b410727965f4e21029ea8cc75076c9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a071b7210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae0a14e605000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" }, { - "burn": "0100000001eee7900553561ac7571eb800ca562d69fe880fe9f707f11b079b66f1c099d5a9010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac0f1ed507000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" + "burn": "010000000160a6466184dfcccca831a0fe9e020d379399a430fc91da7e4d08a9857c52e0f9010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac9f38d507000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" }, { - "issuance": "01000000011a1b0b1d2e668e031c8d3a2f36144fa84ec7b71dcdda2f3dbbb1af87123e73c0010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff02781e00000000000069512103ea4ccc12f76f0562d2061e67436e926dc124e7fc0dcceb97452b4d3243975fea21029ea8cc75076d9fb9c8151fd6bf10984b6fe250fd43df629ec04b4f8b05a07185210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae07e5d407000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" + "issuance": "01000000011a1b0b1d2e668e031c8d3a2f36144fa84ec7b71dcdda2f3dbbb1af87123e73c0010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff02e80300000000000069512102f94ccc12f76f0562d2061e67436e926dc124e7fc0dcceb97452b4d3243975fc521029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae271ad507000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" }, { - "send": "0100000001b5245186bfd16de872efd124edb7577c092f4c9dcd6d925f22faa0f32cddbd4b010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff0336150000000000001976a9146c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a15288ac781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc124e7fc0dcceb97452b4d322d965ffc21029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae7793d407000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" + "send": "010000000103452028095b9cae91ea268e652a5900f8d128bf4d0acef234e0825439ed1b32010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff0336150000000000001976a9146c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a15288ace80300000000000069512102c24ccc12f76f0562d2061e67576e926dc124e7fc0dcceb97452b4d322d965ffc21029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae27e3d407000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" }, { - "send": "0100000001bc209ea1682754f942f50c5f2b67993eb9a214a0a27e55055fb774d3d3059c12020000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff0336150000000000001976a9146c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a15288ac781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb97508f4cbe39965fa521029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee741d407000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" + "send": "01000000012e2e5d5f13ddda538b2fdbede5bbabc82076a37462393083b43f641f9a6b1502020000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff0336150000000000001976a9146c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a15288ace80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb97508f4cbe39965fa521029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae27acd407000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" }, { - "issuance": "0100000001096b0690a465a4cf1b972619286a10792ffbf19871324fabc1dace258eae2498010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff020000000000000000356a338a5dda15fb6f05628a061e73576e926dcdbe76def0cceb9740deac3226965f9ea8cc75076d9fb5952008c0a544dc436af851ecba562308000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "0100000001989473a1201b5a8431ef585bc3127dcd7fe9e9dccd3f9ea5d3a369465c17db74010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff020000000000000000356a338a5dda15fb6f05628a061e73576e926dcdbe76def0cceb9740deac3226965f9ea8cc75076d9fb5952008c0a544dc436af851ec3ad42508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "01000000018fc76d52b1adc5dab066678032986d747c1540236927aed240fbb7eed8e36a07010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0200000000000000003f6a3d8a5dda15fb6f05628a061e72563d9a4ca0016fc6f0cceb9740deac322686d10e0db1cf9e0a5b9b2d71fa57e43c946171e258fc0dd404beb02a3dee6bd4243d2308000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "01000000018fc76d52b1adc5dab066678032986d747c1540236927aed240fbb7eed8e36a07010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0200000000000000003f6a3d8a5dda15fb6f05628a061e72563d9a4ca0016fc6f0cceb9740deac322686d10e0db1cf9e0a5b9b2d71fa57e43c946171e258fc0dd404beb02a3dee6bd4a4ba2508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" } ] \ No newline at end of file diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.log b/counterparty-lib/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.log new file mode 100644 index 0000000000..4a1cd9953b --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.log @@ -0,0 +1,406 @@ +Creating connection to `:memory:`. +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.99909140; txid: ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1; vout: 0; confirmations: 75'] +Fee/KB 0.00025000 +New input: amount: 1.99909140; txid: ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1; vout: 0; confirmations: 75 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 1.37903515 BTC +Burn: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc burned BTC for XCP (6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37903515; txid: 6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37903515; txid: 6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37895715 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1000.0 of divisible asset DIVISIBLE (1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37895715; txid: 1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37895715; txid: 1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37887915 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1000 of indivisible asset NODIVISIBLE (7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37887915; txid: 7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37887915; txid: 7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37880115 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 0.00001 of divisible asset CALLABLE (c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37880115; txid: c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37880115; txid: c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37872315 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 0.00001 of divisible asset LOCKED (90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37872315; txid: 90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37872315; txid: 90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37864515 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc locked asset LOCKED (344dcc8909ca3a137630726d0071dfd2df4f7c855bac150c7d3a8367835c90bc) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37864515; txid: 344dcc8909ca3a137630726d0071dfd2df4f7c855bac150c7d3a8367835c90bc; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37864515; txid: 344dcc8909ca3a137630726d0071dfd2df4f7c855bac150c7d3a8367835c90bc; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37856715 BTC +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered XCP for DIVISIBLE in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8) [open] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37856715; txid: 4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37856715; txid: 4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.37842635 BTC +Send: DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37842635; txid: 6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37842635; txid: 6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.37828555 BTC +Send: XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37828555; txid: 4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37828555; txid: 4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37820755 BTC +BUMP TXID 4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8 +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered XCP for DIVISIBLE in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (21460d5c07284f9be9baf824927d0d4e4eb790e297f3162305841607b672349b) [open] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37820755; txid: 21460d5c07284f9be9baf824927d0d4e4eb790e297f3162305841607b672349b; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37820755; txid: 21460d5c07284f9be9baf824927d0d4e4eb790e297f3162305841607b672349b; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37812955 BTC +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered XCP for BTC in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a) [open] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37812955; txid: 1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37812955; txid: 1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 1000000 +Size: 272 Fee: 0.01000000 Change quantity: 1.36811955 BTC +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered BTC for XCP in 2000 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6) [open] +Considering: 1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a +Tx0 Price: 0.01; Tx1 Inverse Price: 0.00666667 +Skipping: price mismatch. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36811955; txid: a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36811955; txid: a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.36802305 BTC +Send: XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36802305; txid: 698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36802305; txid: 698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.36792655 BTC +Send: DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36792655; txid: 0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36792655; txid: 0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.36778575 BTC +Send: NODIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36778575; txid: 1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36778575; txid: 1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.36768925 BTC +Send: NODIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36768925; txid: e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36768925; txid: e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.36761125 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 92233720368.54775807 of divisible asset MAXI (bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36761125; txid: bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36761125; txid: bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.36753325 BTC +Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:20 with a fee of 5.0%% (d14388b74b63d93e4477b1fe8426028bb8ab20656703e3ce8deeb23c2fe0b8af) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.93427600; txid: dc4f91c42eb79898b266ee237eed0d501b8b1a843f69aed847ad740e1933f85e; vout: 1; confirmations: 25'] +Fee/KB 0.00025000 +New input: amount: 1.93427600; txid: dc4f91c42eb79898b266ee237eed0d501b8b1a843f69aed847ad740e1933f85e; vout: 1; confirmations: 25 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.93419800 BTC +Broadcast: mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH locked his feed (f9e0527c85a9084d7eda91fc30a49993370d029efea031a8ccccdf846146a660) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36753325; txid: d14388b74b63d93e4477b1fe8426028bb8ab20656703e3ce8deeb23c2fe0b8af; vout: 1; confirmations: 2'] +Fee/KB 0.00025000 +New input: amount: 1.36753325; txid: d14388b74b63d93e4477b1fe8426028bb8ab20656703e3ce8deeb23c2fe0b8af; vout: 1; confirmations: 2 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.36739245 BTC +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.00000000; txid: e43c357b78baf473fd21cbc1481ac450746b60cf1d2702ce3a73a8811811e3eb; vout: 0; confirmations: 23', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 95', 'amount: 0.00005430; txid: 6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753; vout: 0; confirmations: 13', 'amount: 0.00005430; txid: 4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43; vout: 0; confirmations: 12', 'amount: 0.00005430; txid: 1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a; vout: 0; confirmations: 6'] +Fee/KB 0.00025000 +New input: amount: 1.00000000; txid: e43c357b78baf473fd21cbc1481ac450746b60cf1d2702ce3a73a8811811e3eb; vout: 0; confirmations: 23 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.99985920 BTC +Bet: XCP against XCP, by mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Considering: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1 +Tx0 Inverse Odds: 1.0; Tx1 Odds: 1.0 +Potential forward quantities: 9, 9 +Forward Quantity: 9 +Backward Quantity: 9 +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Bet: XCP against XCP, by mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Bet Match: BearCFD for XCP against BullCFD for XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:21 that value, leveraged 1.0x (2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.99985920; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 2; confirmations: 81', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 176', 'amount: 0.00005430; txid: 6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753; vout: 0; confirmations: 94', 'amount: 0.00005430; txid: 4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43; vout: 0; confirmations: 93', 'amount: 0.00005430; txid: 1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a; vout: 0; confirmations: 87'] +Fee/KB 0.00025000 +New input: amount: 0.99985920; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 2; confirmations: 81 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.99971840 BTC +Bet: XCP against XCP, by mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36739245; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 2; confirmations: 83', 'amount: 0.00005430; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 0; confirmations: 83', 'amount: 0.00005430; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 0; confirmations: 82', 'amount: 0.00005430; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36739245; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 2; confirmations: 83 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.36731445 BTC +Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:22 with a fee of 5.0%% (16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae) [valid] +Bet Match Settled: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93) +Bet Match: BearCFD for XCP against BullCFD for XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:21 that value, leveraged 1.0x (2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93) [settled] +Database: set status of bet_match 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93 to settled. +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.07824570; txid: c018d940b7d338e57e121cbbb1880fdd8f4444d950ea041cdca17016fd320be8; vout: 0; confirmations: 247'] +Fee/KB 0.00025000 +New input: amount: 1.07824570; txid: c018d940b7d338e57e121cbbb1880fdd8f4444d950ea041cdca17016fd320be8; vout: 0; confirmations: 247 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.45818945 BTC +Burn: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM burned BTC for XCP (65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b) [valid] +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.07824570; txid: 1befa135e687812ab8a60678ac17f982daf008cd7094dc95fc65a0b8e4bd955e; vout: 0; confirmations: 248'] +Fee/KB 0.00025000 +New input: amount: 1.07824570; txid: 1befa135e687812ab8a60678ac17f982daf008cd7094dc95fc65a0b8e4bd955e; vout: 0; confirmations: 248 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.45818945 BTC +Burn: munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b burned BTC for XCP (95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff) [valid] +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.07824570; txid: fea12706ef63c7ce57df3e1197b8b33e6a93ef2df07964ff654c14f1b900e17f; vout: 0; confirmations: 249'] +Fee/KB 0.00025000 +New input: amount: 1.07824570; txid: fea12706ef63c7ce57df3e1197b8b33e6a93ef2df07964ff654c14f1b900e17f; vout: 0; confirmations: 249 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.45818945 BTC +Burn: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 burned BTC for XCP (e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa) [valid] +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 0.05608646; txid: eac206b369d8130892c8be2d52f7bd9e3e0324870262daf3a19264246068ed2b; vout: 0; confirmations: 113'] +Fee/KB 0.00025000 +New input: amount: 0.05608646; txid: eac206b369d8130892c8be2d52f7bd9e3e0324870262daf3a19264246068ed2b; vout: 0; confirmations: 113 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.05593021 BTC +Burn: mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK burned BTC for XCP (bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45818945; txid: 95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff; vout: 1; confirmations: 3'] +Fee/KB 0.00025000 +New input: amount: 0.45818945; txid: 95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff; vout: 1; confirmations: 3 +final_fee inputs: 1 size: 246 final_fee 6150 +Size: 246 Fee: 0.00006150 Change quantity: 0.45812795 BTC +Dispenser: munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b opened a dispenser for asset XCP with 0.00000100 balance, giving 0.00000100 XCP for each 0.00000100 BTC +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.00000000; txid: 20ffe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 115'] +Fee/KB 0.00025000 +New input: amount: 1.00000000; txid: 20ffe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 115 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.68994375 BTC +Burn: 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy burned BTC for XCP (93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.68994375; txid: 93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.68994375; txid: 93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.68986575 BTC +Issuance: 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy created 1000 of indivisible asset PAYTOSCRIPT (e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36731445; txid: 16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae; vout: 1; confirmations: 8', 'amount: 0.00005430; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 0; confirmations: 91', 'amount: 0.00005430; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 0; confirmations: 90', 'amount: 0.00005430; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 0; confirmations: 9'] +Fee/KB 0.00025000 +New input: amount: 1.36731445; txid: 16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae; vout: 1; confirmations: 8 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.36717365 BTC +Send: DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy (f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.68986575; txid: e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e; vout: 1; confirmations: 2', 'amount: 0.00005430; txid: f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.68986575; txid: e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e; vout: 1; confirmations: 2 +final_fee inputs: 1 size: 239 final_fee 5975 +Size: 239 Fee: 0.00005975 Change quantity: 0.68980600 BTC +Broadcast: 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy at 2013-12-25T19:33:22 with a fee of 5.0%% (510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.68980600; txid: 510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186; vout: 1; confirmations: 1', 'amount: 0.00005430; txid: f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7; vout: 0; confirmations: 2'] +Fee/KB 0.00025000 +New input: amount: 0.68980600; txid: 510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 285 final_fee 7124 +Size: 285 Fee: 0.00007124 Change quantity: 0.68968046 BTC +Bet: XCP against XCP, by 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy, on 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45818945; txid: e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa; vout: 1; confirmations: 8'] +Fee/KB 0.00025000 +New input: amount: 0.45818945; txid: e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa; vout: 1; confirmations: 8 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45811145 BTC +Issuance: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 created 0.00001 of divisible asset LOCKEDPREV (34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45811145; txid: 34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.45811145; txid: 34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45803345 BTC +Issuance: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 locked asset LOCKEDPREV (025b810fce7735c5869b90846007e5f604f60c1beda4c1695f1c7fbec3d44bc2) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45803345; txid: 025b810fce7735c5869b90846007e5f604f60c1beda4c1695f1c7fbec3d44bc2; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.45803345; txid: 025b810fce7735c5869b90846007e5f604f60c1beda4c1695f1c7fbec3d44bc2; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45795545 BTC +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.00000000; txid: 20efe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 123'] +Fee/KB 0.00025000 +New input: amount: 1.00000000; txid: 20efe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 123 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.37994375 BTC +Burn: tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx burned BTC for XCP (27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36717365; txid: f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7; vout: 2; confirmations: 371', 'amount: 0.00005430; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 0; confirmations: 462', 'amount: 0.00005430; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 0; confirmations: 461', 'amount: 0.00005430; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 0; confirmations: 380'] +Fee/KB 0.00025000 +New input: amount: 1.36717365; txid: f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7; vout: 2; confirmations: 371 +final_fee inputs: 1 size: 255 final_fee 6375 +Size: 255 Fee: 0.00006375 Change quantity: 1.36710990 BTC +Send: XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.99971840; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 2; confirmations: 381', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 557', 'amount: 0.00005430; txid: 6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753; vout: 0; confirmations: 475', 'amount: 0.00005430; txid: 4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43; vout: 0; confirmations: 474', 'amount: 0.00005430; txid: 1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a; vout: 0; confirmations: 468'] +Fee/KB 0.00025000 +New input: amount: 0.99971840; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 2; confirmations: 381 +final_fee inputs: 1 size: 254 final_fee 6350 +Size: 254 Fee: 0.00006350 Change quantity: 0.99965490 BTC +Send: XCP from mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc (c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45818945; txid: 65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b; vout: 1; confirmations: 383'] +Fee/KB 0.00025000 +New input: amount: 0.45818945; txid: 65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b; vout: 1; confirmations: 383 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45811145 BTC +Broadcast: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM at 2013-12-25T19:33:20 with a fee of 5.0%% (3b95e07a2194174ac020de27e8b2b6ee24d5fc120f118df516ba28495657cf14) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45811145; txid: 3b95e07a2194174ac020de27e8b2b6ee24d5fc120f118df516ba28495657cf14; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.45811145; txid: 3b95e07a2194174ac020de27e8b2b6ee24d5fc120f118df516ba28495657cf14; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.45797065 BTC +Bet: XCP against XCP, by myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM, on myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45797065; txid: 41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef; vout: 2; confirmations: 1', 'amount: 0.00005430; txid: 41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.45797065; txid: 41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45789265 BTC +Broadcast: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM at 2013-12-25T19:33:22 with a fee of 0.0%% (870fb08b373705423f31ccd91fdbcabe135ad92d74e709a959dfa2e12f9a6638) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45789265; txid: 870fb08b373705423f31ccd91fdbcabe135ad92d74e709a959dfa2e12f9a6638; vout: 1; confirmations: 1', 'amount: 0.00005430; txid: 41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef; vout: 0; confirmations: 2'] +Fee/KB 0.00025000 +New input: amount: 0.45789265; txid: 870fb08b373705423f31ccd91fdbcabe135ad92d74e709a959dfa2e12f9a6638; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45781465 BTC +Broadcast: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM locked his feed (685d7f99fa76a05201c3239a4e0d9060ea53307b171f6ad7d482a26c73e9c0d1) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45795545; txid: 4ab1a24283c1dbfc710be7b215d64e8a4510ee97af019e210049c25773b50beb; vout: 1; confirmations: 375'] +Fee/KB 0.00025000 +New input: amount: 0.45795545; txid: 4ab1a24283c1dbfc710be7b215d64e8a4510ee97af019e210049c25773b50beb; vout: 1; confirmations: 375 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45787745 BTC +Broadcast: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 at 2013-12-25T19:33:24 with a fee of 0.0%% (7c437705c315212315c85c0b8ba09d358679c91be20b54f30929c5a6052426af) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36710990; txid: b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5; vout: 1; confirmations: 10', 'amount: 0.00005430; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 0; confirmations: 472', 'amount: 0.00005430; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 0; confirmations: 471', 'amount: 0.00005430; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 0; confirmations: 390'] +Fee/KB 0.00025000 +New input: amount: 1.36710990; txid: b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5; vout: 1; confirmations: 10 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.36703190 BTC +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered XCP for BTC in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498) [open] +Considering: a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6 +Tx0 Price: 149.9999250000375; Tx1 Inverse Price: 125.0 +Skipping: price mismatch. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.99965490; txid: c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34; vout: 1; confirmations: 10', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 567', 'amount: 0.00005430; txid: 6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753; vout: 0; confirmations: 485', 'amount: 0.00005430; txid: 4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43; vout: 0; confirmations: 484', 'amount: 0.00005430; txid: 1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a; vout: 0; confirmations: 478'] +Fee/KB 0.00025000 +New input: amount: 0.99965490; txid: c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34; vout: 1; confirmations: 10 +final_fee inputs: 1 size: 272 final_fee 1000000 +Size: 272 Fee: 0.01000000 Change quantity: 0.98964490 BTC +Order: mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns ordered BTC for XCP in 2000 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81) [open] +Considering: 74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498 +Tx0 Price: 0.008; Tx1 Inverse Price: 0.008 +Potential forward quantities: 100000000, 100000000 +Forward Quantity: 100000000 +Backward Quantity: 800000 +Tx1 fee provided remaining: 0.01; required fee: 7.2e-05 +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered XCP for BTC in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498) [open] +Order: mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns ordered BTC for XCP in 2000 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81) [open] +Order Match: XCP for BTC (74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498_1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81) [pending] +Considering: 1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a +Skipping: negative give quantity remaining +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.93419800; txid: f9e0527c85a9084d7eda91fc30a49993370d029efea031a8ccccdf846146a660; vout: 1; confirmations: 475'] +Fee/KB 0.00025000 +New input: amount: 1.93419800; txid: f9e0527c85a9084d7eda91fc30a49993370d029efea031a8ccccdf846146a660; vout: 1; confirmations: 475 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 1.31414175 BTC +Burn: mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH burned BTC for XCP (c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.31414175; txid: c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.31414175; txid: c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.31406375 BTC +Issuance: mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH created 0.000001 of divisible asset DIVIDEND (321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.31406375; txid: 321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.31406375; txid: 321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.31392295 BTC +Send: DIVIDEND from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH to mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj (02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.31392295; txid: 02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.31392295; txid: 02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.31378215 BTC +Send: XCP from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH to mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj (a35ab1736565aceddbd1d71f92fc7f39d1361006aa9099f731e54e762964d5ba) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36703190; txid: 74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498; vout: 1; confirmations: 6', 'amount: 0.00005430; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 0; confirmations: 478', 'amount: 0.00005430; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 0; confirmations: 477', 'amount: 0.00005430; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 0; confirmations: 396'] +Fee/KB 0.00025000 +New input: amount: 1.36703190; txid: 74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498; vout: 1; confirmations: 6 +final_fee inputs: 1 size: 252 final_fee 6300 +Size: 252 Fee: 0.00006300 Change quantity: 1.36696890 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1.0 of divisible asset PARENT (076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36696890; txid: 076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f; vout: 1; confirmations: 1', 'amount: 0.00005430; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 0; confirmations: 479', 'amount: 0.00005430; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 0; confirmations: 478', 'amount: 0.00005430; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 0; confirmations: 397'] +Fee/KB 0.00025000 +New input: amount: 1.36696890; txid: 076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 262 final_fee 6550 +Size: 262 Fee: 0.00006550 Change quantity: 1.36690340 BTC +Subasset Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1.0 of divisible subasset PARENT.already.issued as numeric asset A95428956661682277 (0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf) [valid] +Checking for conservation of assets. +XCP has been conserved (6040.3184792 XCP both issued and held) +A95428956661682277 has been conserved (1.0 A95428956661682277 both issued and held) +CALLABLE has been conserved (0.00001 CALLABLE both issued and held) +DIVIDEND has been conserved (0.000001 DIVIDEND both issued and held) +DIVISIBLE has been conserved (1000.0 DIVISIBLE both issued and held) +LOCKED has been conserved (0.00001 LOCKED both issued and held) +LOCKEDPREV has been conserved (0.00001 LOCKEDPREV both issued and held) +MAXI has been conserved (92233720368.54775807 MAXI both issued and held) +NODIVISIBLE has been conserved (1000 NODIVISIBLE both issued and held) +PARENT has been conserved (1.0 PARENT both issued and held) +PAYTOSCRIPT has been conserved (1000 PAYTOSCRIPT both issued and held) +All assets have been conserved. diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.sql b/counterparty-lib/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.sql new file mode 100644 index 0000000000..8a10140c64 --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.sql @@ -0,0 +1,2112 @@ +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table blocks +DROP TABLE IF EXISTS blocks; +CREATE TABLE blocks( + block_index INTEGER UNIQUE, + block_hash TEXT UNIQUE, + block_time INTEGER, + previous_block_hash TEXT UNIQUE, + difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, + PRIMARY KEY (block_index, block_hash)); +INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); +INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'cf0ea1d313e22ba5f413075b88e07dffc5c00e59f95eeb6d6dec935bd77f5ae4','f06c23e6040a063ed59693baa0d63492dce64e1debc7455b22f5535c9dfbdc67','e4eed12f6f05a0317da3041d28e5171bfb56b1cbeca7c3bc0e8b74d26123bfa4'); +INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'11461f972c4cd85c87b5abfedb3cee589d09e945570d34564dcde6f4df9d2b57','ff8358e8c8b2cb9a1765deadb77bdfc6eae05a844831a0a8c8820d416d54446e','d7cb5efb1a17015371cfc33e3d9a8d524d5beb9255a72448effe7449eb780245'); +INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'355d92f841de89a1d97c3b2ea7623959ea4494bb62ea7e67ad359beb68caca8c','b17176b511fdea4cd899cfaf83f2e12193a4c92d1b199f18f590eb4fed90fa25','84125356eb3838bdfe64794363b71f399dc558944d70248455718d689f34966e'); +INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'edcd7e344fb5cca16999f025594890b8b54543555e61eb3807406bb4204677f2','b6dffe5b8c1f483c3c20832d23dddd7b530afe7ac1f3f57f433da59d83b48f06','3f0cb6e99c419913baab1e6920f53810e2bbb96beb46c013bca56529009771fc'); +INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'abd71a31bc1f8a072761b23a5bc2976731ebdf305d1d7d33922e93573f308129','3da72b0c813432f47a3a70887dfd29350d270e9ebaca9875ed6304c91888e387','bba0ba16f1f9fd9f153521a09d671d657abb8166171f1fecca727fa4b01adcaa'); +INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'0c3914f9676e506a96e6db793f15200ef33087cd47de4d27628849013a391daa','2d59f139907859f9108360f7fa4695101a6b5ef0b7dd0e56c2dd41641e58e9af','40b66251dc24ec9e3b6464f34ab9f1718d973f29a25a41be430e73b1cd4fcca4'); +INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'57ff5f34a9e418b179db9003414c5f3bdfa7feeb538f24071b23d024a3d05df0','a4a6fb433e6c49968fded16954502c472b0d21b74c6cce8d08c8c53c00f2781e','417a8cf3fc57209a14df0f48a0f84bb7c9aebaee206b8eb737e6b06e656a4327'); +INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'bfed530458339aab02ff75ad76738569dc6997c7a35d4452351678b04e022f68','ce20264c332892b0a5e0c3e2d4b63d02c901fa2c3f8c5171b2896b50c82ea0af','fda7e3c7a85544c0e02a60378afa21b59640fbb66398aed43d3c15f3723a8b9f'); +INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'d4feec997754d11a1502e5351ed62fcfbfcafb770e19a37da41d1d88b7b45ed4','d25c9f48fbbe2010a62cad729d45b658a2caf9a7c9abc65a30e2a7fc47bc83e5','c15b96e41b3a7b9b985da4252d54d0d9565d7797177d23c0db6336fedefdfc59'); +INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'4ab5ff9e71bbc83956557fb5abec98372fa38e5580838fb258b2d831bfc4d9ea','173e769e0b4fa951ef0267c7e218f3a473d9a5857b0880d654a2181f244c92e2','333d21a105b87b76bc929755d1c107cae8c0aba9d3ca2f77533358b3d3c51956'); +INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'1909ef40a24263776cb9e0d52a690048b50728855a0fe4b0e1ba3834a9e401c1','7d1ef03dad99c4bdf7a8e5af7209a136c8ac392922dd3afdbcc0446ea1f5f604','f0cb3da0289f41d7243661d2a593e3fc01232f530f91f5dbe8c6b89a06173bde'); +INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'c3d51a5f2df90c089844ba4de7d5541f6051490aa1389e5945a7bb91d49e3589','86ebe5be8b9443f411adcd49e7443a34941979c0c6bf40136a3b44193024abfc','4694107a10071532237d3862f12222e3b8f45af285ef4fd4020cf0b7d0118581'); +INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'a9dc31556d38b118eeb0bcbb3a374a0ed79adec4eb23e00c80c0599ba97c9a7a','5a729b250068fe7b175a540b66a30326344514e357023184540ef97bae5e16e7','85a9c4efedbc31faaf7fd528916b88b11595f638e74450ce072acdb3f167a7a2'); +INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'e72be5070d0a5853631d902d334e8b88eddf6e79616373311babc4a0a27dd3d8','1294e3d0871b0c2297d9980ed46bfa3563b33b202b426949dadeeba7075b4bc7','734ec9e1d765c8fbd6915f0fd8d5f5253b5b9c476e913d9c5e8c082ee5774209'); +INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'cb0962222af917dbac2a11465c22cd80770c0b3cdb8bdc0870c99a8116745c9e','d5431af170b331497d8967969820632880473d06dae0d06fa7ffc93a0cb90180','707c0ec4925bcd8fafe8f0a9cc46ec710a5b18265867b187104d025a6e3cc23c'); +INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'6ff899433f22546c41a15f20b4c66913c747931500fee10d58c4a17b9e2f0c88','b77c1d69b3ac7348e336cce9948f982efafa1cb56cbdde85fe9f49a73871ba3b','05fb427e00f3ddcc477e52b46e4fb6cc76152d71a1b72b2dda0a6ec8f2ffc470'); +INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'ec66a06cde401b66917c6d1d4e1ee8893405cfbf0474560d9997d6960c8af710','6d3d469ad1b72a67ee50d8a7c6c57069da3a0e2e9d12a23a30bbf4f2ccc64cb6','be36b72dce28a1122458562f2a20c3246d3edc9537b2bbc070cbecfe54ab35ad'); +INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'b2053109bff06dae1705fc32ab0712f38bf9d206fa3517fbf0a938d1b5f33bad','223e10a8e23e4435e635f1dda533a0662dff9f0e3fb86b72a22b2c191f731a80','9ac6e597f77bd5baa711b78fe55b7a8ed4611729ca80eac2b5fe4408a40c778c'); +INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'d7051de4d03fb31bfedf215b407b1edc12789c1f2748abb5a72257ad8f5113ce','9eb6f4683bebb675467829573cd2f7e3ab613d21398c5aef31ed389a40f3c48d','545902129a269d91b188e44f5974e464f6d0489d3265076816642c73e8eeedc7'); +INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'35c95a70193ded2f9ee18254a91ce5d4834bb162fc3cca85dd432339257539b8','88220e5f48660f8b9e339c3afb65ffbad83d632164f1df8e22af2ee6fc18826e','3d64f433de4e97ef1dbe2c2694133ac4b689ac091b72476208cf6f57e703be94'); +INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'8315de64ee1051c333687ba9fae6244287b85bcc1e3a4b67f3fe7d51b931378b','087de9b1715dfdac7372489fc615b597c9575c9520eb1ad5f7435a2641388621','f0b466e1c330040e27c10423de8a65078d9dad4fde81cd71c92cab1389a47be6'); +INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'c2d646bd3f54eec73cd9da6f5da4bc159d0c64e8fb9ad4095dfa58850e65c7b1','e5f36761a4755ebc133389b9bc01a085c585a24fa346c784123f3dd5a125ad27','59dce3750dba22c0aa61f03c678d6d79b7bf078065c69db866e28abdf60d2e3a'); +INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'619367fb7657e0fb4800acd385eb5593d085ce5cbfbfb098dafa98612d9fd445','e62992a5e4f80347f92c512e1bd47df4c2f4e9fa0c38b7ca73befd39fd181d54','32ee62c66f946494e40aaf1085080f5b5f5c8cfe3e2b282acd17c8b60e22c38d'); +INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'ba865dbc8263aaf153d7264dfc6a580bebe9391ca0551f15a1c822c6cbe2b8de','e62acd9368da6141ddf435bd919fe0e124bd77646207d69a2544790107ab88a5','7bb6d3f6ad6c7c94dd9e7c814465f5f4764e3e065196d3d8bc9b4ba64caa995f'); +INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'368e948cbf42de80aca51abe75d09ec78196924453719182ccc86419df5da2db','2c65dfdc0d371025c6d497e087b8548633238d6049242fa411383fcce72b096e','def0be1250feab13baf191358e2ea8bf810b51d0e5796a6472bca66e62ca4b8f'); +INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'9f7132c808936f580d4fb1dc5791541a5a3d23532d1093c20d434007f8dde54c','ca60850f73099aabc38d1521a94d611cc02f4539620a17488d1e9a445087104f','847c092da5c21e47884e3f06ee51ba4da7b5c8c1820b6c0c70d7eb194c3e6468'); +INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'074ea6f10a5290cff31f7b21483f7b2248723c8d1b5bc060c31219f66f37def7','21db77ad7cd241752184fa9fd61ab9cf670cd40105d7d9b887d8df62f25e5cfc','a5a29a6c76b763c34fc0f20dda31e3edc87d91984eddc329195e53dd72d0c43d'); +INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'a3ade2b2e5bc701996f511f3e85d596b60f882a3254fd975769c0f38b3b14cb3','9469f4c4b4f208f2a46569234006846d18ae108ca6a98600ab70bac1ef1ad633','1d56192ecc561b1903c4a4c8f0a0da31b1436efee943519bdf11a16d77b538e7'); +INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'3bf124a34825b5c487c94dd79b1ea4f25e657294966879f1c10b56b37a3d29b5','55de4927d0ba81d336f143b08224af9fe9a862bf0ed4d39fbe242e9c5946bcf4','a2c046f9d9cf573f99385ff8278c2f799e648710c312944dec6949b904e5ce2f'); +INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'e502eb7b282e0bd4940d8f75ef51d677a641f3d55304adcb015bc249c97892bf','3d879f96d783e70a75f71c2b44ae4c5601bc8f1192b828f1b35400b8c99aa0f2','ab87e5e611da59390427ad44b7307ee9105f58e4ef31600ea390a58cec857988'); +INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'d64b5eb04ddfb5600be40142b1fd27c308387a35942a6e8a6916407bbc1313b1','c859356c985f3c051d5b01424759e66e9ec7c2eac055eb9fc2b0ad7323253a6a','35e5466561f79acabc2fef6b228477aedd8aed6ae237b2866aee0eb5bfc09640'); +INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'e9c97dd7adb1b22d4ed0238607faeb2d14c090fbd7d685275ee802ab23b4b740','4cdafec839c7abdda11f10437d890c952b3416929ff6e715f44e8c57412437af','80cf4e1169db811f88eaeee4f99af2f2e02065fe57e5ef96cf955476bacd17f8'); +INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'2544ffced9af1aabd84ab51fb78c56c9beac03dcb286aebd4202938dfa0754ea','2fc6c250a775ac70976d371540df4a7af608ca1b106b7efb7bc5a820ff505bdb','fdd202abc8cebd4292441f89b8e992987c916a6f937a7f4ea5e34182007c1268'); +INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'4355d3ebb95187fec36b1847a4c3777d8e1d5541bd1d9ff8461b8ac5b9881261','d99b155e06fb50de6e7e6b646c641e3862d3d6df0ab9aec3e360fba0fcb54776','b5d9cd4731ba4aff56249320d3685cea9fd7bea36bb421343ca686f7d31774b8'); +INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'c7fcb5134bd8131c035d65b5eeef8a3cd214348822563232a992f3f703c6b0b9','826d7b750bb4ad8fabd67c825c81f840b7a7a264489a9263410a5cb204d3309f','92716bf6f743daa5e47b38db41e9ae3da709ed2ba6647ee11e8f9fae5638c483'); +INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'c41c280498ce05d6073fc6e89be2684dc68c345c1c43c00b9a3f9041954fce26','f96598e2169d42d81b91ba03e7403dbd25a61399290f358022a998e4375fe2b9','b68bc42d50db6a5449786fbbe8b35734fa6a68cea89ba894b824593f612bec58'); +INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'86c67fd234ca9d2406080018b2677386990fac477db8008c0092d40a398203ed','ae7fdf3e9388811e96d470070db9ac45b5b19754bb4ad424aade40fede3c9cf9','6d21bf4139cdbf7d3f04b4898894e236ae9f1874f78d1b92045ee9f84814c472'); +INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'3ae6272437eb0758a779d68785c41e119d1204dd5421c78e03b9d12eba64804b','aa9600ce32fd7c1d6e963a51648eaae043685d3369413785517172d1f94d551b','88e5b2e565df540585a8929e21b9e71808cde3efade9d6707830f2d0eadc7d70'); +INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'18f7552567b898f6c2cfe8c829903912445de5dbf05b56a13bf9b402a24fdc11','46ce886f050bf7a80355da9cb15b35f5d38809ef2ec1a25250f057b63f51cdfc','341eb2e142d949b00579bafe39d645329e6f5cedbc74a84cd4abf9a3ce437c3d'); +INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'85f2255f9256a5faf59ddec1c58b1d3bc12c91bc2c62ead61b48e1f94ea2888d','23a26edddf0c8662b055ed992c75c706221b59ce9a7aa45b757a3d5158772e8c','4d9632bd085c41718a78245225d04205be746c66755b69479827714b1e1a4000'); +INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'b799477db184351df5503f8d15d5461a0483ea35142c003b7e640429663ad943','163682e05a9a10f3e3240420c932a7f3f2172484de30dbcac0319ac23a4726f1','82ab554ab8d75ff186345df91323cde4aad2084813e5f68b74debb2b5cf6032b'); +INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'efa9cd46741b59e74263d6d348584f1a61e8ba32163c09fc3ff2e41a5431a483','a159868ce28207aa243e7ecc50f188e8e34e5ddb5d801b645b1c16a596e060ed','4a5456602368a44ca717ddcd25c2b54c733b101687bc15a0e7b7fa0b3b1f00e2'); +INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'f3159919f381d46a3e1341703e55192a02a36519e71fc2675285a3a14c4ee04d','52bca7ccb83bfe83d8693ebc4c5b1ce518b2ae472dfc81f2c2940dc2460eeeab','a794308d5c8f8a8cfd9b682b98a662fd5b485cb925705da14b3a8e9904547568'); +INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'961c79ea2b7dcc2d7489c423b568fb978631e71732d6b998bcc0657aa4d19194','1fa2eb6aa4c8b5efd093c6e484dddb85eabfa0de55edc929e04487ce65e73608','61b47ae0ab62a67ad9f2c962d4cbe70f97ebcff820a54f72a6001946af192870'); +INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'d674c39010fd4554efa487d97a3d9cae278ed9b4aff0ce57db33bd881beeb3e3','ddc2517e1efddbe56185e00d77333ef9f2f2ad6c59e042d65a8f4d8c2b323e5e','6d75b813b80b4fe4d04163f5f3946a05a0c6598656c99b8b1401ed0da3549103'); +INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'9ba70a032ae92672174421689c0845784f0cef7374e88b2f5258260191864bf1','3b1d5cd9cb8e7b753233ac0dac5e697226ae372bff3813852434d96996e78fac','3c490aa08c26230b5d1e9365322ae801b88faeae420abc396e44a56ce9428f94'); +INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'114a6ab930fbdf8531431620ed219db3756a634c5b99af6ce1ee66d527d277ff','becb4b0241accefb95aee137e58d406e15e87c28ed3f051938b4fc02e249b21c','2fdbdbe333c238fe3c0287cd2b7338c7a353090cd77200b9ea1f5e86649eefe0'); +INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'5356512c94ea2c77623d874a927aae8c3dce287a34dfd27a617abfa57142c7f3','6e06ce8a113de9e8b1a88516a512671aa2cdef60168a40d91742caa281417634','01f8971bed2a8db8fbe78987e58328e6974ea53627fa6cb09623df231faf0923'); +INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'0902ca0868560d05049c983bca3ab91cdd5eafc46ab0a948d702abcbc4010582','67a2fb81ebb42dc6781746a403d81b4e7603f82f02724074541d42380d7269fe','ef5c78abfa37020e7390cf5131462075fcc96644db1966e6c087d378422037b4'); +INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'978794628fc95756032cb7fb4e9d5ed286373d84fafbcfceec9af71d18c4c0be','ac68aa21454eb2a2ca973b5451523fc6d2a4df6906b9472891cf8e06087e130c','e646d0ec19247c22cecdd61acee916348c0e4f9b4acab5af3ec6b2a6167fd9bc'); +INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'ff16abeb1d35e0e422f165e206b0d69e0b9ff48b68fc6656c1af74801908b92d','720d553ed03860df12ab60af34cfec86b9d7ec80275f6d8815e3f61166e3af88','8d8d6f966b82b49ea8679f202bcf9393883e6ee3dbb1c350a907362e2b962366'); +INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'556ff900993e70cabefd05ddd5dbe3e8e10bb5c9ada7913b75d84af067004ed5','656a21084dc8f46455fd2a42ebbdb0efd5c879ccb16e9b1532a6ab5323debdb4','2024d238612af8400018c2b2428af5b8d83ae20f624c688bd984134e8be8a3ff'); +INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'15af3a616a2974aa70b7b58f88132051f335af299473db925b619fda8be1afc7','3f90b36b7ebc9a2daea1e498bb44100f12f35c9df04260448bd38b23375b16be','64a04fee17d4ee2710085ee8ee30305b902401973b7488929350a9774237bba9'); +INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'ed0ed3b480b38929a425c2b61c86582495764624e020cb86b3a95fc7d59c692c','67427731be09b73755cd460d142686c903b819b7b8af48297d460ab91fde3609','fd48b30995d370d5a3982b61f99b47a7187e01a1708f425aa9af803224a5cd98'); +INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'f012825d2d549910910ad6b7e4ac2373d095b53869f0793709684f0ff05bb108','c5e4ba3e2011e7fbf238285525a544de3cc0fe9360a3451392a4c03acd508690','01e6270dc66a290a1203a131b9e80d1c627bce38a8c0ef9f0d207615e64615cf'); +INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'90c08144277fe622573282349edaf9e59289b716b5b4e368d88ac25e67e788d1','5e4a8aee5f04d75d9ffcc85e8344c445b5facfc838f39a77b6b0d5acf6cd8213','af584636a3f7b5e8cb3ef1e2d7b45600f7072a44b271d1c6ca515923cf72264f'); +INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'c888ae590b64fa4514ed7f94ba785b12e881052185cc4702b598cf6e48cbb3ba','1cb780a12bb6040055fa694822a4f39c340a18a858f0b65a8b227a6fd6fb4f31','a8f95f56d115a514cec9802014c464f8d246749bde98f94d2fd975810c04ad05'); +INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'e68c9a569fda6f1e1e59502953c9735857a0ee158a76397722436466df24708e','2e175f240928edbbd5a5c6c5f3fbacd9516a36c7e99501703e9d1b19999b2029','6587206bd0ac6fe92be0d74033ca5a56d4a693ca2abff713295095bfc7c9c1f9'); +INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'9f6607682f4a6274c2a45895f849816aec83ff0820709ba781634b84518eb05d','cca92bb672e368c0c1e5b4674a48e150a870f56a67339cbd74926d541ae2a4e4','45b1b3a81da660335f976ee080e0bc2802eb5a97b03066f71348c5f4be02b58b'); +INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'49b10a5c390f603e7be0d405bf1fcae95fd15682ef2e41a3b2fcf713d271e541','12b8b50b634cb6843258f1c130df1cae60898c902d3e66ad00e1303fde4d8724','1cfb39ac881e61a2175f3ef8b9a7f9e564d70648d42b6d0a6d61d98fe5ba5b6c'); +INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'1d6cea34d6f7042ced3a5211da80de88fa77c900af5526f3033b715e4f68df17','40fa40a1a2c02ca514f309fe27268e9e493374bf3edfca8de66e3d46efa32ba6','9cee10070e1978f1a9cc3063926a261009e5b3969fe22beb9d2af8ff51588678'); +INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'0c43668fdc3d6cc6ec84fee99c68f0eff21650a618db35bc20e428550eae9b0c','4aa0becfc939793d7dccbb0b19881889a20c801e6c627be8ab8a2ffbd8cee8de','8846bb15a1479153d50d9339dfa66169148c0b6777298c8f5643ac884b0474d2'); +INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'cf03a34b29d3a8f8ea5fadb017426f2843c6ab2e785032b6dec70d7aba7bce4a','3317013c1e6464e0296f5aa7f50208ede42ff9051e4e3ce2da92584cb80a3079','be670dc8e9adf0a35c74d507336cae0f11d2eebd672463545b81b7014bffef9c'); +INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'e145dfc2c7f053a1ba4c8a41d042b40c0748eefcf9e56c5e906ad4b12f3653eb','b58f95d06b31f7bb5c6f6bd5c5c4460ef4e4ce0e1d154b8557a18cb73f36d432','d2a396fb7ce405fefcfa5e0939943204e244cd1187dc03fc0d9e313207f13079'); +INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'ebc34184623da16251782c82098c7fcfda42f95b155eadfacab2a53e3b34333e','e33ac70126559506de70ca420f152dcb639fd0e841d0d7259c0136d518fd4f39','30c64970998a9c2e489c24760a373cde7b211c27235398f5235e0f922d406acd'); +INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'db746a9e0ad8f37c14ef14180dd1bc562ae757a6d4d042a517bb8953f34c6958','9d52ca0b8859777bcbe84606017ec53961075699eff51b34b80e5a6ed33b137f','45ba8e59c78bcfaea921dccda7b1ac9586b88d13de51555929184ca64f6041e4'); +INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'cc71a63314b770e4e010bc7c66d8ab808451b6401e6df8558455a2bfc9bb4882','5122312265a8305639f6490bc51fb025626dbcd38c5735ce85cd652348f2e86e','836a4e9fef98470e7f52039eea794239995ea0966270883cd9d216e898afb1ce'); +INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'a5812c0f3a37b04d5105bca6b0c4819a41beeedf5b0f314f476ab55d6c31235d','764477c3a233cd407804695f42948d3017951e90b7474cfcc24ef81ee49fdad9','a49c602f4a65c38963a986c2336e4d87bd37729c5a32c76913135615859a1398'); +INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'14f065751896a2724251b6ca6d0297b344986980075fb72ad058ad0b5bedcd3c','866fceb74e8e97d663493f3546519b01f51e1a3cb25bde4b0f3c2e960d2eda85','0b243f24a6e72efa2f56b9b06229530ccbc9191507a4fdae7e26fb2bab736009'); +INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'a7dd17b4760fb65ac58be1b1653f7cb0e90574c47f70c61ff9f940ad15ad3658','9e0565827fcf295ae2149bfcf5e0db29237f447760832083baf94de145bdb531','47e578945a0b07b0a4f592efd5e9208d9f7d75e422687374fbe8ae9a63a108a7'); +INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'8068a6bcc5d1fc1a78562f0f3165423b45b4674e55f21c4c09948fb65ee632c0','03f84e0f0838204a53ce54e3cfecde00b2e5741ed08aab0c0d9ed99513ab4655','15a5a15921e6a2fe3d7e71512b6131a4e32f3b0b4bde50751eba622620797668'); +INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'af86ffad4b8dd68a0f18142935bbb18623cc5ce2e9e0c02f04c0e7a5dd974e17','9b3e1c7af0bb119e69813161c19aeac4dd5a594ece5f67f21ffb55b8edaa111f','bdee89131378f096c83c0337eebb637449ee74024ae297b6d1dacda21d3685d9'); +INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'36de48518d1446b33f2230c5eee7d18e040db543fe03dca001174f8382c209ee','33fccfbad1dd91d9102b82f11b7c97883bc5d5fdfd44584cca6c40fbd04ce2d8','df905b7f9e9a33f4b92882d02a4c8115be4fde0ba1f7d36ea62ccf1b1fa99922'); +INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'4374f567cbc460b73e74d6190db353c3ee86b92c3f99e392beae3caeb264eb5f','7544980dbaa8029ae36d883e3079bcc82f2d140072d4dd65cb3384510692ff45','2ad4acd384bb11d1801e36dfa460161393ce77702ca71f1f3711aecff118104c'); +INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'54fd95cdf7f9374d1687590f2860276afe67a265ddd9216e5b63fb06c5bd569e','1efba9ea6a8d2e7ee6ee2070b84b497feb66e3387e05c1e4f4989f086e5e02a2','d7b2d4e58c48a63910462ee86fa6eb6a969214815f29e2397122704d251cd1ac'); +INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'2b42e23b43d30f91fe7705a01f0c8ec86d6230815b587704bcc70b91b5ae87b8','a370830ef1758c18c88e6d9fcc5803fc15f1dbdad0f2d6a0773f902d86ad7c97','692fb6c34741aa77e0f05ad45e5ac1bf8783a2be82dbe5a287d7cfe837dee019'); +INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'577092728a4dc81cd9a06fcf6d2b058f0e4ce8bcb395819a704d6b4144f041dc','05ce95f07d03f4417a2fd15224418c8ba4ae196e9ec6f3192f5324c028363641','e8f07a9bddab6bffecb8d062e59ca165684743472de9f06cf66831e468364bcf'); +INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'d1ba60181f3061673c64ecd0b92abbc19b1a6e69a927dfefdfd8b8c74171ecd2','6c9e35feb56fb01c37fce04a1e6dc5f7747a6d26ee2f39ac584f11e8359dce71','6ecb25879d9fba5a35f604945134a2945e552ca1312a6f20d51b1a02dc36a382'); +INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'c0a9270d15793e68cfd1cf445315d737bed7052914da6def4f014c21f0c9e0c5','d59b48425061f0965947dd025cfa0fba8855e997f376572c585db72203b9a80a','f09d5ea78556e78757fd1e03c64f7f0169594a28e6f9fd3e2c880536ca2726fe'); +INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'74eaddecbf5ab6608c1e95c1c313c13f2af2b649512cc8c7016717d21e93f815','d3f32df02f0e7cd7c2163b47b3ff73d175046599ed626ab343647e1a04525e3c','201206a20dc036ebc764b7e784a7904997d7500f024b4778c80d3f717b55f6f0'); +INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'a759e3aac1b015e28b8b524106a74b943b215faac8d5079384ec7351b2239bde','f588a6cf255e710d9ee481d53f8bc0fc0e1567d58ee701f1b77f0848db881f5f','cca56381392f9013284527f3b0a34aba431b1bf898dfe7d79931a99588e7cc88'); +INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'71622e25e8497db6fa222e33c60ea582698e72ca5789a52c9252bf51191cadaa','9a2e169d5fa3721f9bb8852c93ca8ed5dfbcccef05cba99ed3f1c61c937f4366','0d2c37a240d837dddfdd8a1c061bdb40ed1afa91f805824d8c3e2da46c208816'); +INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'47e9d8fbcbafcee2b4c145ce651333ce49812533d13f7f9a0e9a448f51cfbacd','c2cd395566e0a7b16c76cc0ead2c2cc87a684d5a499c76b2370afffe4b408ad1','f31fa4e71235b71b5b06b9965cf80f9211ea86e7ff87bc6d592b9afee958d924'); +INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'e61148e7a8125f7225a6b6e1d77786f8b28b0b8a74e60fef3f75fa4de8f7d882','21fb4596655071cca486c2e6988ec980799a9827e2e5f169033a45d21b3c7a75','09e1c4fd20c95c7c016ee43176faebecad77bcc744ac0ab5f1b61bba6033f521'); +INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'20fb450589ddc6c904fbb61cca8588e85e865635c12402ce7ae72995ab884c14','feb3992f370b8465a732bc4d90691b99db691f44e1697ad2775a6df216d93b13','754c9a8353fa802d6d57d261bd944556923bdbe1311f4f234c909080261445c8'); +INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'9cea37d548308505f80dc438d5183bac6c6ca424ea4dd9c85d883b05d67cdc92','277205c28e54078d55ce1641fed64ff4b409b686fbe4aa3a018cead2f969c501','ed5ade79c1d0432a4c1b1818abe9ce7743dd91500bc8a9b858a969c692cbceeb'); +INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'e11bab5fba2d038086c65030b90ce1cbc988314d0c9846aa7ddac4fd357bd01a','ef3ac1de31e29795732b362218bd244945bea4183273512ff6974ecd0c0a7aef','607603c0a6e36e43c8ca2a868d35881286680febfab483648550b9ed08e5a2fb'); +INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'777873e7ebd0ec3052be65197ec0db8bd72e46d2053badb0f37be1f6e84ae0b3','3bec931f7207a5b03e5a7d390787cd737e598d04025a1514c7654ef34fd1aedc','1452e9b10898a67a99cb47a0f073c92533e8b489d0c4acca9b198c07ca95afe0'); +INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'85a5ea57af33dfddddbcbe1a1c87994efe5a21a645713aa164f19e19bfb23c64','4030ee911aec8ebfbbeecede9cfb977088fb591b20cf52d5340e5aa13e41c7f7','ecad22605d02b159734c305f3fbf4fed75a7291fc8594e77b3cf05e77b29cb52'); +INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'bdf3b6e7a14a3aa22d42a7d69f2f96b0993f1eef2952a7d74313c37e1b407523','255675a022762a349d44af6315173e05c685f351f2b3b770e0ec80e128969a4b','ba910a7a4f1e74e5bbcc0b67af454594a3c69a046554b6fd667d174a83cbfd24'); +INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'9b3ee688c5786ecc438ec9c843ba5f898fe1ab1a8bc3903ad7789aaf6b0c0bf0','7d658801ab6fbe73231469da5204c5e1c73d290b83449187ec5eec71b846616d','e4e6bcf7df1e2955185d1f4d45f45d485fd4b238f24d95ad55f29ec8f5654202'); +INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'25578ac389a77dbf9589b23c5470f3199016ac66a415540ae03efac29dfe7adc','1cb14bc9f998c85e670e2e291cde3a2debe9b4013840c0c060417f509c7210ea','5c9e958f008af59a21f1f1624232b0173e70eb6166441d973f184daba877571d'); +INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'bb9109ba299c99cb104ebf2ef6e75141c50264d701d27119525ab5d0a54c1a40','889afcda8b6e0848c7d43014beb0e181c78fa69d3aedec508f4bc0eb8a416029','0eb8de6947e367a174add5de220407847ea8359a9144865b1f72289292895da0'); +INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'cdb21362b3eb4fc10ba3c6bf3aba41bfc5bd0bf2475f742c1069cb4383be7b95','dec762d55ba88cb2c043f627b2a8b26c920cce9d4dc2746065c0bcf2795c2d99','9d122fd6faa6108bb6f5e4e7659c60b356205aa07e41863d56a1be3e21acb958'); +INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'b82568de09fe4ea06f3dca053dbcbcc61dbe5e44dd300a4301c995ba180f894d','625beebc3c34fa3276e022a37c79137c8f09af21454e8171cce7ab7a04453047','3d4c64f5c4f53b8f17dff43f65bfc548a3378abf7dadecc60586fbd6557aa39c'); +INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'513c4a041ee80ba72d1d8428605c682e3485fa45341460bc33fae6540dffb571','b7794e7c8dfe3947ab8d256b94af8bc43acb9ca11f696a81cf9ad98062372959','e2033ddaafcfaf6a8aeb2a21b589659fdae972db2f515e38a494ede938468963'); +INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'3e8ff43c8d671159355b2d40a995fb8f6d84f6216fa8326fa80ae39aa9d15d03','8117c5400c1cfdb97456cf3b79e8572aecf23c29d1c336d5543979d0e81cc158','a28a691bffba9521ae9111d315bf9dd5ce6d2c87366de86c5d70d975814a2613'); +INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'19d91de7be12136737d3f8990e7a4a793912c952e71e017d723d750118e849c6','1e2f99bf2c03b8c915bd23c94431002d3801a13caf40d9b42f22001c2faf305a','fef8f4c421942085c9f14edd5b81e47c78041878f152601035436600070c28e2'); +INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'be75df2e5aff3faaebfc0ce4ab5134790fa728f84500e6989739dddc058738de','7f692426eab57621527d12cc4a49aa85841de9856cd46ad6992a658ed5c15fb1','b80dca39adc801099e9785ae729f87b5b17df7750cf151ebf4385af3828ea31a'); +INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'9090b8a4a26ea7dff75658317ce2c6ab828b3b42684922e44debfd1bf8330b8d','c3b0869da7bd7abbda54895e6de81cffd2febe007e1f7085da8cc657512278e6','bd6c22a9ca884a5c38c62aa53d3ba45269cdad02263140fdb77ee53f11a2066e'); +INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'d48d30db433bcee44d87153fb3db17d37fbe3534f23eb16ac853b3420d86d80e','793627f8b7de24827faca4a19ce374f39c90b74e278b83a599cb637877bd6388','7de841b5d02aaeb78904070b77b1733a108b37eda3c756f5d529effafd81176a'); +INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'53c6f9247cd255c86a69c05c4463ab94f9a3277496c155398c38dc6f7121fe9b','7388dcdfb1f5a54a0d4a4d3e50d486b24a662cef04f054a582e2d5b0bcf3ca28','f30ed88d2d3951418caa10a7e93cb742b1d9a056509b95fe21d691a1e9c2f6ac'); +INSERT INTO blocks VALUES(310102,'11e25883fd0479b78ddb1953ef67e3c3d1ffc82bd1f9e918a75c2194f7137f99',310102000,NULL,NULL,'b225c48fb4c40b2e0695991251f6d69217df6e00c01613e0a20f6a3e34f50d5b','7d553f87ef9f2beea74631e2e6ec107522b9f4756f041e2ee40fa3946909b3dd','2d2074603e659fd4128988875320605001c19b0c8466a1f1ec237516471d9be6'); +INSERT INTO blocks VALUES(310103,'559a208afea6dd27b8bfeb031f1bd8f57182dcab6cf55c4089a6c49fb4744f17',310103000,NULL,NULL,'fc2a8ce8efc122e5cbd631998e611dc8707cfe0b8d3f6a531fe5bcc21c17feae','ece7991721b8e94950e2a9f41b9285b34be716340a7621b1c1528f8065e9ac28','5b65e62fb0e170f3b15fe829a336632b5d867bcc8795d38c2c982173dee79693'); +INSERT INTO blocks VALUES(310104,'55b82e631b61d22a8524981ff3b5e3ab4ad7b732b7d1a06191064334b8f2dfd2',310104000,NULL,NULL,'b1a7115902d371d13889008320e52473cd5b34591bd657e372c0048df020012e','66dacde33bddb633552c94d9107669297fe26ccdcf482f9098f1e6c05f3d01e6','d4daacd068f455ac76d9243468bbeb20881da53e521805bb9e9b274902bc965e'); +INSERT INTO blocks VALUES(310105,'1d72cdf6c4a02a5f973e6eaa53c28e9e13014b4f5bb13f91621a911b27fe936a',310105000,NULL,NULL,'b5fcda12415e713fc81278b95515fe86ecc6beb5810e4f80eb9645f09870dab0','656d27bdbf841c33dd3c11253159dc5d8a6d7885db3174f4f9c6a8382d6a7209','bd2d32c920db3767e9ea479f8d14c054d5769968dc8c95da8ddc9824cdab2c1f'); +INSERT INTO blocks VALUES(310106,'9d39cbe8c8a5357fc56e5c2f95bf132382ddad14cbc8abd54e549d58248140ff',310106000,NULL,NULL,'f3c98c954cf939951d8b24a257bc6b1bc152a6a0bcf6b580ac281c26bbf16499','6138a4e92289d72dab6e43906e545dcc3d1475102b7f33195118de74a53fe576','59e2874dcd056cda93c85f5d2d00bf53657296d1ddbef2d7e0e7f16295f46833'); +INSERT INTO blocks VALUES(310107,'51cc04005e49fa49e661946a0e147240b0e5aac174252c96481ab7ddd5487435',310107000,NULL,NULL,'a550df26b8dee075bee82fc59c44ce5cbf65fe9df10c60f3f3009faa2791c783','b30d22c6d7e8bf574e3b3e11d08bcb73c5853ba348e8688a25670a861d3f4e3a','26149306734670b4fcfc729642ebcb1e8db6aaaac9cab1b28ba0d002ab31116f'); +INSERT INTO blocks VALUES(310108,'8f2d3861aa42f8e75dc14a23d6046bd89feef0d81996b6e1adc2a2828fbc8b34',310108000,NULL,NULL,'e1d8c345c74760010223a823895471d3ad6a2db5c6a70b13850d5cd977414518','d03bdcdbb4980ea415ab73c8e91a7fca7099c8c176d6bb4c2fdf72b6873175ae','ac57a5041fe09eb41939c43a8a3b1e944e756218df4cf6f611f5bb7267e725ab'); +INSERT INTO blocks VALUES(310109,'d23aaaae55e6a912eaaa8d20fe2a9ad4819fe9dc1ed58977265af58fad89d8f9',310109000,NULL,NULL,'8fb63d8460a222163d15eab76a61e383ffa251a175c16f209648d6782c304059','cff81539539169771000a550581dbdf4d4d1fdabecfb9032342269ff5f100b61','86071db771e95b616bd09e2c9b5a5a3251e75161a8d10efadd117a1aaa64ec1d'); +INSERT INTO blocks VALUES(310110,'cecc8e4791bd3081995bd9fd67acb6b97415facfd2b68f926a70b22d9a258382',310110000,NULL,NULL,'250f7b5c6f00bf06c9cd4de8dea0b8166e2decf093910ea32eabd615b910e7e6','d6853c803a38efdd5190401e94244333cb4f46752a2868d4a03e6d7d6c8c2bad','2c217041187757fc22b512e616c6714edcdb8c6256bb9cd0c373e918aaebe948'); +INSERT INTO blocks VALUES(310111,'fde71b9756d5ba0b6d8b230ee885af01f9c4461a55dbde8678279166a21b20ae',310111000,NULL,NULL,'0c3c3d099bf08803f67c2a77d0d67779674d1063cc72d8794b8fe62a55049d75','9cab90baa72446a36a7c176e82eed32ce968f96b0f29067b240a10a71ed95808','c46a0de238e2b0daed74ac105f2f793f999dbca99fbb7aa8a94f0e85feb6e1c1'); +INSERT INTO blocks VALUES(310112,'5b06f69bfdde1083785cf68ebc2211b464839033c30a099d3227b490bf3ab251',310112000,NULL,NULL,'557fdd1240793f8607a2b4c638ce800d5260c2adb294aac95d6c5eab7e98c3a9','4fc0df4832258d430e645f1950407e19e72ea27d28b8ae1851333e8e8718086b','96770a57c6034478695d990aff7a6caaeeebd3a32c0430f3a00c6b710fc448ed'); +INSERT INTO blocks VALUES(310113,'63914cf376d3076b697b9234810dfc084ed5a885d5cd188dd5462560da25d5e7',310113000,NULL,NULL,'4ecad4a5c8e9b54101c4a037d6c86a7eb36d3cf0503e60a1bf13c5a4196c5989','baf1f86b3145fd8dc33aa2fcb2e882cf69ffadee81e8412ed2092c634934709c','7f77a07e55717af872f061f883b593aa96b031f014bfc58f2a4736d5161d9b00'); +INSERT INTO blocks VALUES(310114,'24fc2dded4f811eff58b32cda85d90fb5773e81b9267e9a03c359bc730d82283',310114000,NULL,NULL,'00380ec3118a5e8f9cab403d10870dd5bc339421297fcb6196a3112d70541ecd','22e3851c91f780c0152549b24228d0dab3542c2632b633995c0d8dcfd8e26601','53092a88f07953b0ac5132ff984e0bbb873cee4214db75d511c804b1e9c62f12'); +INSERT INTO blocks VALUES(310115,'a632d67ff5f832fe9c3c675f855f08a4969c6d78c0211e71b2a24fe04be5656a',310115000,NULL,NULL,'0acd3a07c5df54e883ff9871852c961b00771d3f4afccb3b1941d0b1c7b300cc','cf921f50b98df4ec37f2a9803315a798198507adcbfd8fd54e6a9bc539cc8f41','6c46d55d7b0e144200bbbdae7c274cbf3386673e453ccf56ede5a4bfbb34845a'); +INSERT INTO blocks VALUES(310116,'8495ba36b331473c4f3529681a118a4cc4fa4d51cd9b8dccb1f13e5ef841dd84',310116000,NULL,NULL,'6c6845d3be70cbe9a71c33227983f695c96877aac6d3a8d6a6839760b4691d25','a7e01a910cc919588be3b0c19c4bb7c36499b0a9b0347834d40fbb54fdf05fb6','89f29fa58084eadd6ac82a2fd471096989453db292e27dbb4feae4ca1032fba2'); +INSERT INTO blocks VALUES(310117,'978a3eac44917b82d009332797e2b6fe64c7ce313c0f15bfd9b7bb68e4f35a71',310117000,NULL,NULL,'0465a90ff545d58e69c07c204160360bcc6fba5cc60fb81d7e6e389d9ff8133e','1100b7084683079d36f9ec6e4cb1ec457ae4c45941cdbaa0f4d53bc458e2fa9f','17ed9214bf69b1b32638dfb9111b6fb7f9bec55ad6476055c46b263fd675cdc6'); +INSERT INTO blocks VALUES(310118,'02487d8bd4dadabd06a44fdeb67616e6830c3556ec10faad40a42416039f4723',310118000,NULL,NULL,'011ed3df8ae72a02b686e98aa8db07c973e1e12c2ac09891ba90d783ae63161f','7ed056a59c2b15a2d082f75c8728ee1e7f9b0eea6cb56b37f41319b115e39771','b9c554c3ae28aa5a5d8742671e9353e4947a308913f4aa8e3c99c8456cc92ac0'); +INSERT INTO blocks VALUES(310119,'6d6be3478c874c27f5d354c9375884089511b1aaaa3cc3421759d8e3aaeb5481',310119000,NULL,NULL,'a6620b1b6a5b1f54fe6a8076fc35f0f3ce15315e9f549f5ff3fa0f5b6094919f','1312871691c685ced39676d4d4bd8825d2109587d1ec36f2dadc50f68b4d9cca','8ec04f30058ec1dc0eb31d80693c2b7cae7d7638fa42079d2e3a0503db000465'); +INSERT INTO blocks VALUES(310120,'2bba7fd459ea76fe54d6d7faf437c31af8253438d5685e803c71484c53887deb',310120000,NULL,NULL,'e38e2aa0bf8831b90e69b40c78d4b7d41bc564527451b5f9b332bb0beb54c923','1901f4d80a526969a544b68b1a695f07aa078ad719b8803c0b7543fcb4a974d6','ab9787690f2c965a79e81f9814c770ff65a960a824cce8baf4325889d11527f5'); +INSERT INTO blocks VALUES(310121,'9b3ea991d6c2fe58906bdc75ba6a2095dcb7f00cfdd6108ac75c938f93c94ee7',310121000,NULL,NULL,'5b988c8ad133bb5ff5ac1ee4ad0a6a4fd431247db373e43c9be2a020520f438b','9921b651b8ca004602b16f95d76b2ea76f03456d9a978abb02bb340f360df7a7','7e95086dddf64fb5d60506e0fd39bc5e4d88548c87304299c9266f98fdda04fc'); +INSERT INTO blocks VALUES(310122,'d31b927c46e8f9ba2ccfb02f11a72179e08474bdd1b60dd3dcfd2e91a9ea2932',310122000,NULL,NULL,'70ddab8f1d6283ce5a054650dbcd02d7ad4ca9c35de7bed920c2f266bc092070','a45cd1eea6626efa3af3dcd3c89782c50cc3b683c1b22249dc67d288e56aeb17','e11eceaf1ff12dfb0ddc3d74e451302b38d1a7d49612ca73442ccf0f4f43a4a3'); +INSERT INTO blocks VALUES(310123,'be6d35019a923fcef1125a27387d27237755c136f4926c5eddbf150402ea2bbd',310123000,NULL,NULL,'3670feebcf979edce175ad5b296a4c88fd7fc6bdc251dda84d487b1b092e41dd','78c648296fcc7856757b990a92cf9512c61d180b08d451b63ed4e796d051d338','9f4ecff92dd613415377b0850becd1235c5a3607ad4c7ec2e8655524fcff3520'); +INSERT INTO blocks VALUES(310124,'0984b4a908f1a7dac9dcd94da1ee451e367cc6f3216ee8cdee15eae5d0700810',310124000,NULL,NULL,'9883fff318e7cf9021fb4cc39261840f682e8adabb934549dbae2a10d2a71de3','c58aaf910fe01fd9ba6a892ea421c0933f4cebec80c6d2d556accc81102428d3','216d0c14bcd2d2f145791d25642d4446377dd74f78247394886eb1ab8c8a768b'); +INSERT INTO blocks VALUES(310125,'cc28d39365904b2f91276d09fae040adb1bbbfd4d37d8c329fced276dc52c6a6',310125000,NULL,NULL,'1840685242f9090297d4b432e305e4a093f90faa0b673953b648fbed948f31b6','3d1e4c3a02456d7f79402a89f6a39dcb235fde15b275a762197b70e643d29e25','1cedea4c8e36bbcf03e7aa084e83b99204be9d8c36d0078d6345123017edd2d6'); +INSERT INTO blocks VALUES(310126,'c9d6c2bd3eeb87f3f1033a13de8255a56445341c920a6a0ee2fb030877106797',310126000,NULL,NULL,'1a83f417c18439cd3c6269626c44b480317290f0c27a9b9f883a01653de69272','7cde633cf5f7bc1176a3faa6ad03a449d3fb0d21dcce5885d2a37b81448a2ca5','60c4f193ede19724d3120788707a2c191a7c3dc86e4c0d1e5c002a4d458682ef'); +INSERT INTO blocks VALUES(310127,'c952f369e2b3317725b4b73ba1922b84af881bd59054be94406a5d9bbb106904',310127000,NULL,NULL,'094c53dfd00b5004d074987dba90a6c9c47841d01041d0aeb61923c48315d1bb','0ac0ddcc5c45d4d709d9070814832bfa2339eaf5edbed98232cda4b1731e5478','1881f5884b5c6408e3b5307544488cd8ce73e8c3d75e1586cfd0db6b914e06ae'); +INSERT INTO blocks VALUES(310128,'990b0d3575caf5909286b9701ece586338067fbd35357fec7d6a54c6a6120079',310128000,NULL,NULL,'28ad1365daaadc866e79b6b1a555fa31bd804a85827d958cebb9d29511f78e19','aa9a25819899fc8948c4906673cfc8128c0a98417db8fe659098d28ca12e3786','953272a929f5b359c3c93ee1efa123e6a9c8b8729c86b9a3a43caf053195c4ba'); +INSERT INTO blocks VALUES(310129,'fa8a7d674a9a3e4b40053cf3b819385a71831eec2f119a0f0640c6870ca1dddc',310129000,NULL,NULL,'61587f9b5d05f8f553f0a4f580f38a140edcf7d9facb13c542865f5ec586a32c','ca3752868d963f0c165166928139cb078aefd0ebcbd9ab8f182c631ff941a56b','faa2dfb989b405d295e3fccf27ff77a4220afa3781fd2c23896ed7c4b3357a8f'); +INSERT INTO blocks VALUES(310130,'d3046e8e8ab77a67bf0629a3bab0bea4975631d52099d2ddc9c9fa0860522721',310130000,NULL,NULL,'1ee8c39657890ac946e2aac5409147cdbf1b0004db1f00d997cf45452596f781','bb38c9be1ef6ce22f1f14319cb3e1385d70fc63f7d0b2d80789c9af018baaa71','deb9b49fe7438af13edbe97444ef4b4768b4c6f5e0b97cc43debabcd52625e0b'); +INSERT INTO blocks VALUES(310131,'d6b4357496bc2c42b58a7d1260a3615bfdb86e2ce68cd20914ef3dd3c0cdd34d',310131000,NULL,NULL,'aee45272e68725a2746582f1847582eb9808289d3deca144f8c6cb43bc4f42e6','69fba2b86abed1e740d45d33ec1bed7d2bf7de0f3bd9633959bfe77a21dd7aeb','76600100810eed8a047c7a2e97576817c8dc4f821949191c26ce8b7c0f481beb'); +INSERT INTO blocks VALUES(310132,'1b95a691bf4abf92f0dde901e1152cc5bd87a792d4b42613655e4046a57ab818',310132000,NULL,NULL,'a3fe51c1d168ed726a78b72db61175f2abb07ea6c614b2886f3054cdd1a858fe','352b00e4db389d411377c2302ecf272f97268e953c30d0976a5d12bffc5a17f7','4c27d80858729a24a9e21da3378e8fcc88ac8c4ddae8bab7d2e7301232371f73'); +INSERT INTO blocks VALUES(310133,'1029c14051faabf90641371a82f9e2352eaa3d6b1da66737fcf447568ca4ec51',310133000,NULL,NULL,'626743e51b462163f23f22079d672379def21382fd88f9155ddd453ca3d633ef','1a7a1af397c6619b629eba7fdef0f0ea2d737e673d182fe985421dee61d0c63a','9f3675cedad7bb474d33f82146a590244c1149f66fe5200a0532deba0fe72026'); +INSERT INTO blocks VALUES(310134,'1748478069b32162affa59105257d81ef9d78aee27c626e7b24d11beb2831398',310134000,NULL,NULL,'4b6e3202cae46fa80222e3ddec001213062ab76b8848eaaf4ab73f44bd84ac55','855a47de54b979a3d958a921c2679825084193b9f1eb0fa56393e0186fb1b440','8305a8e9b796848312cd5cf5739859d7bda6599f13b5471c265bcf8610537fa2'); +INSERT INTO blocks VALUES(310135,'d128d3469b1a5f8fb43e64b40f8a394945d1eb2f19ccbac2603f7044a4097e4f',310135000,NULL,NULL,'e32784cedeadac39bb292da2c5eaffc983f416e0bf387978691e4c0fa5b1715a','80e68a8a303975543781e760be8d8b151206fb0335d3e0f5c2821d3e482b0ef0','0568e947fe1d692676b4a9ebab7ff41c76903d83a10591d09e1c29ea559c80cd'); +INSERT INTO blocks VALUES(310136,'6ec490aaffe2c222a9d6876a18d1c3d385c742ff4c12d1334613a54042a543a5',310136000,NULL,NULL,'93c67fdabd991708d1e35dabbdf7acb4e928763eeb817b32a79cd0bdb414fd2a','5fd1f9311646bed047ec4ac1d5aa5c74d68d26ddf6bdec14f2f53f4cb9c1f6b1','3110f6f1c903a625ab6383bef2ef535c109d86d9ca9eda4a80785f2435d05a13'); +INSERT INTO blocks VALUES(310137,'7b44f07e233498303a57e5350f366b767809f1a3426d57b1b754dc16aba76900',310137000,NULL,NULL,'8a43d01155ba47b8b1311c41d5a57112198857701c2970d0fd373da04ef4e585','d1f1a4a5fb78621aa1be58d32795feef8ac82572c34a694bf6b0b8c3c73ba7d6','32828e7e0363c88c6abe3bd3b82a951dca97a8dd2bc6165a718ef87af66da19e'); +INSERT INTO blocks VALUES(310138,'d2d658ccbf9baa89c32659e8b6c25b640af4b9b2f28f9d40baae840206402ab5',310138000,NULL,NULL,'4acf0244f3188f60152acc8ca30dcaeadf12e6669b15377c81b7e6dc3c8892b6','645be1bed53d63c268cd21d99a914aa4268b5a357dafa57f706075a66e42f948','0188f9ba3bc6d558aa86c48cc8127a84c52b0c7ab306603d4fa3a990ada3a38d'); +INSERT INTO blocks VALUES(310139,'b2c6fb61f2ae0b9d75d18fce4c52a53b1d24772b1ad66c51ca51090210527d46',310139000,NULL,NULL,'2d77bdd47ed1b3be1c2edf41473bd5eb707d06dab33717b01c4a227f9855d73d','c1e0ab9fe21f807be3431a5d28c048b7f5c49ee5cfba7b9a0a837d1fa5c90f4c','f918311e1d9787451e129eb3d542d035333d7723c27b2a8cc5b47eaeae40895e'); +INSERT INTO blocks VALUES(310140,'edddddea90e07a466298219fd7f5a88975f1213289f7c434ed47152af6b68ebb',310140000,NULL,NULL,'277c0c6dd1c505dc6f9a222c737296396569d8e007c4b9a42582f108e90fa624','ab9a8224e0e3f8f728b56fd3ff40d960d9d336b2743932053b2419423223f2ac','b4679f5296eac6aa74e9dd021819eb35884e47dfe5a888232c4a3a77fcca852c'); +INSERT INTO blocks VALUES(310141,'b5b71d2a271bd638561c56f4ffbe94d6086debaaa86bfeb02ef0d71339310709',310141000,NULL,NULL,'f5d0edff3f22b2e025c884b7c738abe641bca9110a6b9a7b90de179fd6e5d2dc','d272db9ecd97edb037736fe46ab9585397f38a6d1c1d9455e64b8439811ebe4f','bd8f586ea70895e30e5f4f12b4ec271bf7848abd8fc18b6ec9060b059cfd07c6'); +INSERT INTO blocks VALUES(310142,'a98ae174c41ab8fc575d9c8d53d8e02d8e446b8c6c0d98a20ff234eba082b143',310142000,NULL,NULL,'a9f00ec826a30e66820ab2920cf9573244a24dacd63d48c080b9e80b1c5e05b7','0c2ddacd61856ee0743eca9125326981ab9f5711982f53874a0f8153089a8d97','07978ef8ccd9174d13a5d651ddbb1b6f7ffade20255c401413b0343c9bcda811'); +INSERT INTO blocks VALUES(310143,'8ba2f7feb302a5f9ec3e8c7fc718b02379df4698f6387d00858005b8f01e062f',310143000,NULL,NULL,'b5765899f770fdb6cf1120535d85826c6b0ae44b16b8d5a619c5cd12c98783ea','39ef998b6c6130f79df8dcb5abff84c18a485915f1088b36a10de30da8c6f9c6','d7df67852428167831b94bc4e109f5cbe4e272569eddff0c565769f6082289f8'); +INSERT INTO blocks VALUES(310144,'879ffa05ae6b24b236591c1f1537909179ed1245a27c5fdadd2218ab2193cdb9',310144000,NULL,NULL,'1a80f48136e5938b33f817a7cc1cb60aaf6d628b7811abd43e38cc807a18072a','0b547c8db7446cd3f26dd0d8b88d533c1361fa5dfae6127b85e87095b42ab66b','69539f93daf6c77ef317753c0804a8042300865732bdcafd4818a19e1786bfa9'); +INSERT INTO blocks VALUES(310145,'175449ef0aa4580593ad4a7d0c5a9b117e1549ea772af00caa4ccdc9b1bf7a6e',310145000,NULL,NULL,'fce2f084c1776fcb36b3ae3e0c952893934e24672ffa0d3dac72bb1278af8264','bcef3d9f5eb82fb2198d268e442edfca029d5aa3ccff5e5306f0a1a8cf43b30c','652acebede859ca14429728f00dd92c0546716549286ff925c82c8d742edfcd3'); +INSERT INTO blocks VALUES(310146,'e954ab6a110455d745503f7cc8df9d92c1a800fafdd151e7b1912830a9cb7184',310146000,NULL,NULL,'9a98eb971580a0a69fceafc5fd41f398f1908b626c47df57965d1863e9a24b84','036b1784841e65e5905b012f2b74c70e1d9c33b769603c01387d13e693343411','32cc09afe9d3e4db38ae621e707e30a3d7b18c5579fdacb8ea5e3196ba9c239c'); +INSERT INTO blocks VALUES(310147,'7650c95eba7bf1cad81575ed12f32a8cc36281a6f41bef13afe1dfc1b03a7e83',310147000,NULL,NULL,'336a89d3d137810d3220d2de432f72e3b3ccd2ada2b746da3859c77dbb89d6a3','184e1861a82afa97634e0ad72cff532220a37d75f8eb5e1265039188124f6ad6','e5f5286854e07b7550097f67bb12af63ec6ead6e09d228186e8b042f709fce96'); +INSERT INTO blocks VALUES(310148,'77c29785877724be924f965215eb50ffe916e3b6b3a2beaea3e3ae4796545a7e',310148000,NULL,NULL,'f904794337dd67d356981d2623b8c3d1d78ba584cd98a8c1db939951d3102612','c75b4218153bfdf3baf44f22f99523f7c54d957994ee838c05c08dd52d98c06f','c96a7268499a4bc9f3f3aa3d0c59eb03d838b56801dd3b1df97e1027e200f097'); +INSERT INTO blocks VALUES(310149,'526b3c4a74c2663fc04ed5234c86974bffddb7235c8736d76860778c30207b3c',310149000,NULL,NULL,'c2972fbd048790f54d9ecef4e18aedec8ae7aa28227d1d43bd19cd71b4feff85','8dac7e6494cc67fc5c186e74b08d9fc8bc92cf71af9b0e1d919c48e9fecf7660','2d8d271c4ea21ed701ea5a794ee48ec590ca928773dd53ef2078d7a0c2286d5d'); +INSERT INTO blocks VALUES(310150,'cdd141f7463967dbeb78bf69dc1cd8e12489f58c4ea0a5dc9c5c01ec4fcea333',310150000,NULL,NULL,'88b999e4ae34386b826b0f3b315953b5eeda8d9ef496af051498bfce6d8737fc','db25206ba3a052c622c6a5063359308d04fc2a031d6509447d838cf96a0632d1','acb9afeb0944b74399f89a491ba67f9ca99530017d56ae837af725feb5205316'); +INSERT INTO blocks VALUES(310151,'a0f31cc6e12ec86e65e999e806ab3bfa18f4f1084e4aeb4fbd699b4fe284b330',310151000,NULL,NULL,'b7c176a2eff86655f8b0b71cc8bd3bab3a92ba203d4ccd911d63f3d2ce7fdc25','c6868100e51f390d57b2da8324915c9751aa3882b6e102055fcfe229d1abfc85','911af39c6b284cceb25921658e8bf336ba2b887c03d2b31c6d6c3a454bd10fa2'); +INSERT INTO blocks VALUES(310152,'89c8cc3a0938c63a35e89d039aa84318a0fc4e13afac6beb849ac37140132c67',310152000,NULL,NULL,'3f9471c393bc2bf144b17a5febea88c42982ae746fd700a5903c0e6e541e2b09','ff691488593add72ffd8fb9c8eab2b2c6f92dc2082615b3829f4b84fc8a81f88','c770d1c8d99a801235ebd10335deb8d679ea8273cc78872c118a74bc0f7c335f'); +INSERT INTO blocks VALUES(310153,'d1121dfa68f4a1de4f97c123d2d2a41a102971a44b34927a78cd539ad8dca482',310153000,NULL,NULL,'c6bc81e7b7e6758bbbfe10fa0e688b09e679fb74a18134639e172c18c6e017a7','6c303c21dd9de15f2a265d88e04a2c110f32718da29a06294ebafe9ed91d4441','806b546efd0cd0b4e43eb1b9eee4e732975e2b6ea2964faa74b8ec005ba191cb'); +INSERT INTO blocks VALUES(310154,'ba982ea2e99d3bc5f574897c85485f89430ae38cf4ab49b7716ed466afa506d6',310154000,NULL,NULL,'b3e07f9de85ab67e88042b1bb52302c6eb16b7ff45d5be6a49700f115ed396d4','b21fe34642b2c9ff09e65be86103f1c3390a01eb51b4d8b98456558639ef6e1f','4afd07cabeaa2e1c29c586e17a996959055a74402b1a01284d9f1b632ee1a590'); +INSERT INTO blocks VALUES(310155,'cefb3b87c7b75a0eb8f062a0cde8e1073774ae035d176e9769fc87071c12d137',310155000,NULL,NULL,'27014841a468e23bcb70c718919745eadcded4310031a7be90a4732c96509404','0e5f0bfae3a6ced9c6498cbe95b8bcb56c76530830baa61345b8072aa6e28ff3','8671650b11d7fdc4a904c10815ba74a72c080aead0b34d61c0c044b32bdbef19'); +INSERT INTO blocks VALUES(310156,'6e3811e65cb02434f9fde0445a7a2b03fe796041458737d0afcc52208f988a83',310156000,NULL,NULL,'5597aaadb8cc75848219f9fde3f5d76bb5592689c72068db59922732e89eef9d','ff3319c50ddd9bbd558542bdde3d612a475b543d6a34ea76738d929b5e05a380','a34d163431c88bc87968e2a513a285a1aae75699c43d37096b97d2f30373eb63'); +INSERT INTO blocks VALUES(310157,'51dd192502fe797c55287b04c403cc63c087020a01c974a565dd4038db82f94a',310157000,NULL,NULL,'cc1ae27fef286424e40204f6b575e9e079e1f7a5ccf6cc356729a7c4a7f83eb8','9b4884eaca300843017c2732aa8d09815eee4701cff996cc8b6ca6d62af4055d','88db920e2c33bc87de1bb3fe606e6add1ecdee11ba5234c45262e1f5deeeffb2'); +INSERT INTO blocks VALUES(310158,'749395af0c3221b8652d31b4c4410c19b10404d941c7e78d765b865f853559d2',310158000,NULL,NULL,'6d80d98e778b30c124b0255b3e72620f432245d0f841f6bd62a0fcff44843bf0','03a33d54ece86ab81f4f6e1cb337b07b6fc105a580a4ff82496885c7671939a4','fe497cab88f1061d61c756236db13b8ca69dd4ade232bd90397894b08158c859'); +INSERT INTO blocks VALUES(310159,'fc0e9f7b6ae99080bc41625588cef73b59c8a9f7a21d7f9f1bf96192ba631c12',310159000,NULL,NULL,'d8ab8bb14092afea6cc675d2f50891318e3169bf9dbe2d07e80c4db95f0f2033','c292a08eda8cb807f0c11947fc08c748353bf545596d8c6c03a4a734d25461a6','7d7c8ed0a00d6fb785e18e9fad561f145aa03a89c509b8608b2c2ca9b3cd4627'); +INSERT INTO blocks VALUES(310160,'163a82beeba44b4cb83a31764047880455a94a03e859dc050da782ed89c5fa8b',310160000,NULL,NULL,'2d76a042d062b73b7dd956d5cff0ee397f068c04eae6cf5b9522d3d55e88cee9','df1e1e18b65c4322284ab36204d9f4397c0dade89bf25486c8b84f6358e0f18e','6239fa9312d257e0bc9960efd8fecfc88f02dd80b25ca08b2780c559e3648512'); +INSERT INTO blocks VALUES(310161,'609c983d412a23c693e666abdea3f672e256674bf9ee55df89b5d9777c9264d8',310161000,NULL,NULL,'beb3496742415027bcc0d59f3385809523c8783cd91a5670f2fb6fec3230e980','e61374e297180716eee972376d16b85266342dfcee4f383ba9061360f7c0a425','172c92293c43feaf5d1cc4559dea632d6def54518cce55d85cc6642be8071bc2'); +INSERT INTO blocks VALUES(310162,'043e9645e019f0b6a019d54c5fef5eebee8ce2da1273a21283c517da126fc804',310162000,NULL,NULL,'066a2b93df863300741145cd6a4f1a9ea616bc787861cb8ab809f59d47a6fa1f','bc115f6ddeebabd3e0ea592604ff679267b755376e509c4760cfa394e86498df','6072e0832511ec238ac8fbd30d3c8a8e080352b49d253a4109e1172ddc286e0e'); +INSERT INTO blocks VALUES(310163,'959e0a858a81922d2edf84d1fbb49d7c7e897a8f49f70bd5b066744b77836353',310163000,NULL,NULL,'460c271269ccdd8775925b511705207baed8fc212caa7e74fc08a80be600a38a','d16b6243e4c0718a2adca941956564325985750a9a0833aaa35635335cb504ea','108a8fa0662b7c76867513b2e089efa1e9db3c20e41610babdd86918649ce111'); +INSERT INTO blocks VALUES(310164,'781b7188be61c98d864d75954cf412b2a181364cc1046de45266ccc8cdb730e2',310164000,NULL,NULL,'19a7948cd1bc4a89a427d48bb01330dadff848e2b32ec8b8abe342872850b268','54068fbe0e385c8ae2df5cb2c601397e15c019c732e37ed484573f07106741e3','d062dc72c65b8062b74fa58fcebc5949f07e4886713297e60c5c4b882ea3a5c4'); +INSERT INTO blocks VALUES(310165,'a75081e4143fa95d4aa29618fea17fc3fabd85e84059cc45c96a73473fc32599',310165000,NULL,NULL,'97f0a48a26daf011a8c7b22bb772228a0c8a920eccd011e713956100c9fbdf33','0783c9e3d99f4f95b64b38b92c4e8b7d257f325d10cd83bc86d684378b9ebbd6','4efc87fecc92f6ae3780e614ee059e52a6070f58b6a88aafbf5f6e105ec1cc00'); +INSERT INTO blocks VALUES(310166,'a440d426adaa83fa9bb7e3d4a04b4fa06e896fc2813f5966941f1ad1f28cfb41',310166000,NULL,NULL,'edbd00e1229c673f4f15b3ac7bbe020f54b5f3a61b1d158658471076a55c77b0','683f4ab00ee1ff495bf452c511c1582100191ef7b575139b9d2f102c852018c8','6595e10be7798b55c119a6f9c385d6c1dfd58702cf49df51cdd748cc32c70083'); +INSERT INTO blocks VALUES(310167,'ab4293dbea81fedacca1a0d5230fe85a230afc9490d895aa6963acc216125f66',310167000,NULL,NULL,'e118e0f3aad5be73080f4d1892517e8fd2c4575589ccdfadf980edebb9a66a14','d2be4356643047c7bd04eede767d4f6853885f408827f3bec8c54ceb2b7fd71b','afe1f66a52e4050b584ac2211e230efc3d2f08d1935e6463e5cb9db2a1f62002'); +INSERT INTO blocks VALUES(310168,'a12b36a88c2b0ed41f1419a29cc118fae4ecd2f70003de77848bf4a9b2b72dc9',310168000,NULL,NULL,'267f48eb4e3b0925f4f472d8ce6ec57ec5039911b13a14ff2884a41a9cafd7b1','ad748b661aad47fa8963b43999846ef9bd00ea2595747f835710360afed16797','ae89be4147b050fbd342926fe882c9eb79713b78e1992c81920acec565f2ea14'); +INSERT INTO blocks VALUES(310169,'204809a85ead8ba63f981fc1db8ae95afe92015f003eaebbec166021867421f3',310169000,NULL,NULL,'df394a6f3b2a9b9dded6019dce9f3d3214db1f30019faffbdc2ce614f629b25a','3a92e2c7808a00a0ff2b2fb4695b225acf6262c57753023334bcf3de8e1c7ace','8f73634c5acb87507250a21cd4ccf8f62ae6519d388de4f30659630623d85493'); +INSERT INTO blocks VALUES(310170,'b38b0345a20a367dfe854e455e5752f63ac2d9be8de33eab264a29e87f94d119',310170000,NULL,NULL,'3081081c2ab6d8280ef721c5836d0fb7e89eb3d747a4e4522d2e22f5a6b153a2','f4ada9df3e82d94ba52292e829c4c814b3f0d04f0e3f8606a90fed651634fafd','799f530d8702afae86583a4a2fb313df8d504d6fef162c73d1da7df000af0d7f'); +INSERT INTO blocks VALUES(310171,'b8ba5ae8d97900ce37dd451e8c6d8b3a0e2664bb1c103bf697355bf3b1de2d2d',310171000,NULL,NULL,'e6a4017e4f7d9da50bb3817990c3e115d5035443de8824dc01b5380a5b4c52a9','e335e773387256c016b82649c44647ce0355aa108249413f02117fe14f39c56d','42c4de55a5b306aabb92824b5161f35531e0bbb47677481ef260d04774eb573c'); +INSERT INTO blocks VALUES(310172,'b17fda199c609ab4cc2d85194dd53fa51ba960212f3964a9d2fe2cfe0bb57055',310172000,NULL,NULL,'89e90622bf8363bcee5cd7ab6d48b6d06ce4cbd067f9985e35e67fc683f4c103','d03bfc2a16d240505e3413ce267b263a0ddde5b3f8a04acb6a67d33a89434996','0ff8f806c50a4f8e9484dad2c63a089e212c71e76878238a5daab88a90d68988'); +INSERT INTO blocks VALUES(310173,'f2dcdc5ffc0aca2e71e6e0466391b388870229398a1f3c57dec646b806a65016',310173000,NULL,NULL,'35ceee6a23757fa49e7f5c34ccf0fd034731e95d564257b443ebfdee7cd294d3','73c9dd3d2f5390d0d4379cc8f5e195ba4a0b4d280d3fe663db3940d4a42108ef','6450facdb6c61822b021a55b5521cd6f18a1e80b1ccbd34b435cbcdaffafda19'); +INSERT INTO blocks VALUES(310174,'fa6f46af9e3664353a473f6fffce56fa295e07985018bface8141b4bf7924679',310174000,NULL,NULL,'101dedf34bc0788c0589c8e2b1d7da4ec65f6eab2e3c5523c0903db685cab017','71d9279604a4ac7dbd49f6672ec6cd19ba59b62302eb1b1bd78ecd3b6d4a5263','e78911a0557fa1e4076943ecd8493b29d65f5f7d02ff2d38222a39dffc8c5720'); +INSERT INTO blocks VALUES(310175,'f71e79fe5f03c3bc7f1360febc5d8f79fc2768ce0ff1872cf27a829b49017333',310175000,NULL,NULL,'67de4a0a9e52d9ae06caf62b3412d0bf2c10a6b24716210b21212d75be75ad6c','90b52df6f0427a7dc695fa0e17a7bf3e59d788cf4016bb65c451a151c38f121b','400e28ee2442998accf1cc5866cf963a8706dc7894ae603d43b6251269de8913'); +INSERT INTO blocks VALUES(310176,'67cd1d81f2998f615602346065e37f9ceb8916abb74b5762ead317d5e26453c6',310176000,NULL,NULL,'a90bd400e15727fada1a27be4a6e228bd91a15f0dbd0fb7de3b6779a8bf89e4c','b870ef1dabda015a561f74122039890b1c9c98e2c4c547dea34ed296fc99e8e1','907dbd891be53f35db2daa56905243a1bab5ac2824dd4744a3a9fb43855a677a'); +INSERT INTO blocks VALUES(310177,'6856b1971121b91c907aaf7aed286648a6074f0bd1f66bd55da2b03116192a52',310177000,NULL,NULL,'bac315d07dee18e27336a46ff3ffeed58aaf8eb1eb702e98a93c06303c937716','80b0eed7b842a9779b358c5293771470290876f3acb617d85e1a97e786a73092','68121b496f3e23ce960d2984d270e9d00558693e9efeb6aff3f48c963ce873a1'); +INSERT INTO blocks VALUES(310178,'8094fdc6e549c4fab18c62e4a9be5583990c4167721a7e72f46eaf1e4e04d816',310178000,NULL,NULL,'186ea0ece84d21ee21889ff13c98959dfc1842063a970e0c095552f0ca86515e','79d67c9aecc8676b0743ebc9af6b78c6f40d264b54bcb510b0028715fc1ca4bd','23b0dcba59a0c77df49df5a3207ba43daa60e750de87b9600c6539b27e22c618'); +INSERT INTO blocks VALUES(310179,'d1528027cd25a1530cdc32c4eaff3751a851c947ddc748d99a7d3026a5e581a7',310179000,NULL,NULL,'0200402ef08256efa0adc85b2b4b15fb7448b5107b65fafbcc7985d809e84bc8','3bbcd82428f094a7089c7c9a5c74be0e400e4a03181ea95faea8681323851d43','32a132c83b160c96b66baa151d1361aaee4eaf7447b101af0ee739b3b519e567'); +INSERT INTO blocks VALUES(310180,'f2f401a5e3141a8387aaf9799e8fef92eb0fc68370dae1e27622893406d685c1',310180000,NULL,NULL,'13829eeaf9bdc54f87366e35616c5a57cd836c63db8a9ba7d117d02377ef43e1','2398e91ec31dc2810a4648946a85f5af7df71cae0b678f99aaa17e97d215785b','052d7223b919b539cd798983d21f9f4c8caad734de331b9b6e1a2461a6209fcb'); +INSERT INTO blocks VALUES(310181,'bd59318cdba0e511487d1e4e093b146b0f362c875d35ab5251592b3d9fed7145',310181000,NULL,NULL,'81b4d83a623a55019ad720c1bd3ecef100d8ca49deda91b8ba6ffe9802764df7','82cb247f5dfeeb31342861a77bceb74957ceb62932de536d837988a2f471f599','3924a19880813cf99e6deaecc1696b29aaaa8c7be1598d5175be47838dca9b9f'); +INSERT INTO blocks VALUES(310182,'a7e66b4671a11af2743889a10b19d4af09ec873e2b8eb36949d710d22e1d768f',310182000,NULL,NULL,'935e40f93195d450b292481aac481f445d2de8786d04d26263f4adc5a348704c','1a48f71be7c5f3baa68d68c393a6c68d63596c561005ac7c6df457584fc18c6a','fe7c581a68edda69881d2f4c0844a048cac7a1750880fbfe75394f26f1140f82'); +INSERT INTO blocks VALUES(310183,'85318afb50dc77cf9edfef4d6192f7203415e93be43f19b15ca53e170b0477bb',310183000,NULL,NULL,'268bf841be40615472bf4c60b5306d0763ed50510fbb55c47a6a0ac726e8701f','82d2641b1ab0cdf057e8e68b0cd7824ff8c60222f8d4e23125d68beacf2b3293','db95ad22dd10829f175e489a611aff4d1bf506288d73653900e6dbbd3867a952'); +INSERT INTO blocks VALUES(310184,'042a898e29c2ebf0fdbb4156d29d9ba1a5935e7ed707928cb21824c76dd53bfc',310184000,NULL,NULL,'64323488ca4d32a1f548842db4ac772b750599ce6222020ef6149b4a0e54a935','9a7f77be4828adcfee8ea1f106ecbcb55ae758d5098a6fa1aa3a494af957f7cb','b1d2b703747680800481601113da245d29d9f8e5816ef803578952ff0bd56dd2'); +INSERT INTO blocks VALUES(310185,'bd78c092ae353c78798482830c007aac1be07e9bc8e52855f620a3d48f46811f',310185000,NULL,NULL,'8946baadef2e19c5e4e4b2d771b36982a217486dcb0f95097b41ce633e61da94','8956f030f917aa87d9b309bd845b59cb37ba2265184ff1f67bfa4b61e32d43c3','b6215cf3cdb42da7d03ab89f6eaa3962deeb1388221d9970a3dd61c9e9d74b83'); +INSERT INTO blocks VALUES(310186,'e30a3a92cc2e5ad0133e5cee1f789a1a28bea620974f9ab8fa663da53e5bf707',310186000,NULL,NULL,'e68b5525927cfee15fefee02a16fd700abf6b6e7b4e32e57df7d324fae7ae090','137a7a7a1ae71a317f7c3c48f7f84e4a782a515fa2096c2abe2c1adeab4e8256','04cc762c98843cf7e0b78be024532371b6c33d2e49e94db3c42e2aa0aa2804dc'); +INSERT INTO blocks VALUES(310187,'fc6402c86b66b6e953d23ed33d149faa0988fa90aa9f7434e2863e33da2f3414',310187000,NULL,NULL,'c42efa24d48339fc341908a30c6679beeadc9f5918d8d3e62d5c4b06fec845d5','cc587cfca94dbe30e6670dbfc4a5e3ec46732731f5c66aab9c7ef9028b05c22a','3f7a33d71fe2c983f9f286bdbcf88c02a8fb0da8501f95fbf3b8d3f00eacdf62'); +INSERT INTO blocks VALUES(310188,'85694a80e534a53d921b5d2c6b789b747aa73bf5556b91eeed2df148e2ada917',310188000,NULL,NULL,'13de1d9b569d5d2525ecfa39b1eda69f9fd474683b6e34554b1a755125e96e5d','2fcc160068a4eb52ac410937237ec3813bfee52750bd8cef939738b81c8ac30b','7215da48ed49f22fe5828fa86159e104322a03fc293da4eba679c43fb7850f25'); +INSERT INTO blocks VALUES(310189,'7c036dadf19348348edbe0abe84861f03370415ed2fec991b9374dbb0ca19a06',310189000,NULL,NULL,'582b8b3d3a226d3f6df497cb933ed5f42e1e992c0c25372ec15de424c0a33368','ae81616b5fd77e3672318a0a5ef1b20106afc3ce7d730c8beef848d73ba53a0f','c1ab61d12188a0424fef93fae0a2184ceed95baff436658de227566896803190'); +INSERT INTO blocks VALUES(310190,'d6ef65299fb9dfc165284015ff2b23804ffef0b5c8baf6e5fa631211a2edbd8d',310190000,NULL,NULL,'d4c49d5e3aaf21e6fe1c30663d0ba93f7dc9ddb03611e3751fba9aac8d382ac4','48c70376450aa80a2a920e4b871d27d1efe703b377ba446a262e06c9a6677611','56bc0b05200a0c8d05deea1076e6502c61a240dee48b2797fe42c728e291b46f'); +INSERT INTO blocks VALUES(310191,'5987ffecb8d4a70887a7ce2b7acb9a326f176cca3ccf270f6040219590329139',310191000,NULL,NULL,'23d340ff3f1979a43bd1336c9c882b5ee01c646cd104060feacdb5db78025cca','704b02ead8ed3e4e6505225fc620073993e9c3b13209bff9b5f638d5f21ce23b','d7f6c72e63447fc52ee9eb160d11c76a64622c75ab5e518ad3cfd24ed2396d06'); +INSERT INTO blocks VALUES(310192,'31b7be43784f8cc2ce7bc982d29a48ff93ef95ba18f82380881c901c50cd0caa',310192000,NULL,NULL,'cd18860851bceba4a0174480ccdc0f6ddc47b31ce71af8ec8500cb07f75d9da9','17018479e73908fd235313691ed8464b93a0a5db774d3608294e23fba918c672','cb93dcc884eb0f9d0d7605adb24a21128e31ebc1a14a004a1e80c7575d8e68c2'); +INSERT INTO blocks VALUES(310193,'ff3bb9c107f3a6e138440dee2d60c65e342dfbf216e1872c7cdb45f2a4d8852a',310193000,NULL,NULL,'391e97ae7ccf5bc38ac72e7ad1256f24c28297c625bd9a789cba8231a5ade046','d08696a916e09e242fd20a9f8314cd4fb6305e991b506c53e3ef3f77e2d1d6dd','d11a96e58f9d590b08b436f59bc57aede2fcd4b252b40ce07da1640dd8bf85be'); +INSERT INTO blocks VALUES(310194,'d1d8f8c242a06005f59d3c4f85983f1fa5d5edcc65eb48e7b75ed7165558434a',310194000,NULL,NULL,'9141c9b38087c7cf2b8c11ffd55c2eabcb3bb09f132ac0baf9c3779f628dd42b','d5f418ef4569bb977ff73ab64235b3697d0f7f326f95696e6f63c56cdd180d6d','ef9c7c9c041a1c51deb2735a421e7c4f6ab55dfebdc20673bbe653e4e09c8645'); +INSERT INTO blocks VALUES(310195,'0b2f1f57c9a7546faac835cbe43243473fa6533b6e4d8bf8d13b8e3c710faf53',310195000,NULL,NULL,'705918f002db29e7b3dfbfd6378f79d53e33c6ffa3948b2e3b5c85f85009bbde','d0165e09e04c2049de1d8582291e623c80477499203b702e46fb829390ed64c0','4741095a8001d8e74248b44dbfd8c9850fcf40747a61d19568aa65085596c125'); +INSERT INTO blocks VALUES(310196,'280e7f4c9d1457e116b27f6fc2b806d3787002fe285826e468e07f4a0e3bd2e6',310196000,NULL,NULL,'59e12df19e3c0e3e23a5d1e9783c75e236a000774a038553312919a0f46b8227','57dc6e1a18ce4910ba32e109820e8e0630070251ec745e63557c98ce71dedd80','56992701a711a684508bd4786d0e471a9950827d1a643610b953dfe6ae945326'); +INSERT INTO blocks VALUES(310197,'68de4c7fd020395a407ef59ea267412bbd2f19b0a654f09c0dafbc7c9ada4467',310197000,NULL,NULL,'a0e1817dfc258180fa1629710ff3b6026181a9042fecd2c8b0b5e38118199e07','58d18f5f2362b4bfbf155b16fc4e8868b311286b25365f3b4b1a9bf73fab69b4','a3b5a6e6a7e36a600de6be91ca1e061833774a9c8641c40120bac216f64cad9f'); +INSERT INTO blocks VALUES(310198,'30340d4b655879e82543773117d72017a546630ceac29f591d514f37dd5b1cc2',310198000,NULL,NULL,'ff51bfc670b1387bfce53781750e35a3bf69d907167cf9cf57e15613cc0ff3b2','1443d1c76f64272d6ea00fb8f78913e72c617c515a162c9f1c213be02d48008a','28019538580d128b2fd95ace97f5f279deefb93fc1476c5d9de82493329325e2'); +INSERT INTO blocks VALUES(310199,'494ebe4ce57d53dc0f51e1281f7e335c7315a6a064e982c3852b7179052a4613',310199000,NULL,NULL,'e5f8f8f00de32f0d8d2b62eba27218edcee77563960fe074da5ae86bf5b553f1','87fca2825c48b9ec9db31e2d6e8e8354a0ceff7fa3df299dc2868c7d616a9599','231de46907b625a4f6d60338f084f65e96d931318d51e0a5344bc629ecd57faf'); +INSERT INTO blocks VALUES(310200,'d5169d7b23c44e02a5322e91039ccc7959b558608cf164328cd63dbaf9c81a03',310200000,NULL,NULL,'fd8fb664576868d4f1c843b28efc7ee028417034a33d6f5635238bd13c701b2a','a88ca1fa9d0dfccf2e49323a500ebdfab7ba13b60dc9011c6b510741148dbf54','67ebc38973ed4d1185dd9eac6c6e75da878c6b0ac148fbe40f69a53dd6019d98'); +INSERT INTO blocks VALUES(310201,'8842bf23ded504bb28765128c0097e1de47d135f01c5cf47680b3bcf5720ad95',310201000,NULL,NULL,'7e2dbbf14c0620ac0fd4e0e676857e2d055fff80cadfe2d9d0dfe07d36738722','f20074cd00170edae909606eb1bd3937afaa3711590eb7d788c564ddbdc6600f','e75110cb2debad8c949d7aadc11faa330aebec078a4ce882029c4bdb3363fc3e'); +INSERT INTO blocks VALUES(310202,'95fa18eecbc0905377a70b3ccd48636528d5131ccfa0126ed4639bc60d0003d8',310202000,NULL,NULL,'084c24e81842ec8edc4144ad64df9f12377318fe4dc491b307b7d377f3f81b2b','76c57648e216c5f191f04b79d2a1149d273b2a58a6b4956eb1d077abd2cfc113','4486ebf16b4a0a7cc6f29222c64d6b2064f3437d3b260715243821cf00bc6d8a'); +INSERT INTO blocks VALUES(310203,'ab15c43e5ac0b9d4bd7da5a14b8030b55b83d5d1855d9174364adbebf42432f8',310203000,NULL,NULL,'4b0b8d82a5a2c8600a09b1050eed4440d9e0f2d817498f3e32ba27ebcfbaf6d5','3e49b55d1309646ffce3b91d3cc3c53c488377518fe30cf6397c0d3c2aec45f4','64bdf8100973d693f2597a04c9cee3899d9152ebad7c80ebfc20da46d85ea0c0'); +INSERT INTO blocks VALUES(310204,'18996fb47d68e7f4ae140dc1eb80df3e5aba513a344a949fd7c3b4f7cd4d64cb',310204000,NULL,NULL,'9f81657142f7523c01595bef4e9008d8525c2337f6d90140e05abad619d94416','89015233602aeb77d2097a328f2a5a065245131ac88ec6ac2d2b9b056e7764b6','2307a8e9d27aa0dba9b5da5c18f0c37c658d4abb3feae5656eae78704b207ecf'); +INSERT INTO blocks VALUES(310205,'5363526ff34a35e018d1a18544ad865352a9abf4c801c50aa55742e71630c13a',310205000,NULL,NULL,'fd1cdea0193ed914cc408968efa42377d7c69453aa9bdf8bdf0731d4b1501b01','1ea101d94c29967a141d71d3b8b15b278f3530c4c16c7e0219b892072d89f8f6','6ffebe1e7b3626a02ad8d3aa5b262bcd8bd0fa16114141fae183c77c3bf064b5'); +INSERT INTO blocks VALUES(310206,'0615d9fca5bdf694dca2b255fb9e9256f316aa6b8a9fc700aa63e769189b0518',310206000,NULL,NULL,'5845d6bedf81fba710999bf2954b3c1f3f9ca007a09d812ccae8e2a6d3b9bb07','e26d49ceb523c99c2583e7bec1b4bbe1f8686c2bd009626fa4c8966c642a1bb8','544f8215df39af2c35bc3baecb89e01245263e3df4ee0f9eae2d6c67b2f26e91'); +INSERT INTO blocks VALUES(310207,'533b4ece95c58d080f958b3982cbd4d964e95f789d0beffe4dd3c67c50f62585',310207000,NULL,NULL,'b65cf7069a0eb909357cd5d45129b70c576eeabc0cb13404029d088e24a2be34','596206790b52de9f791b99f7e71e3543cec87d4c3b9439ded8b7cbcd182b08e6','36bdcd3ec340368c3a5dea91f00541ee25da5c3a730c451eda29a17216246a3c'); +INSERT INTO blocks VALUES(310208,'26c1535b00852aec245bac47ad0167b3fa76f6e661fc96534b1c5e7fdc752f44',310208000,NULL,NULL,'aa54dc010fec8a0ef3871c91667c45e88ffac08ee2fc93274d7ad1b2b5b28102','3414e0af132ec9df1da5a4304a3c94529bd915631443d34b759a017ad166863a','e21272e74ec7cf3d3b79a461aa6ea4cd0313022e5b944a7ef3ce5c52ebca0bd9'); +INSERT INTO blocks VALUES(310209,'23827b94762c64225d218fa3070a3ea1efce392e3a47a1663d894b8ff8a429bf',310209000,NULL,NULL,'c7866cb2098c87c1333da5b3dce4c84bdeb620c9f1898456b7cceb23e4027df0','56dce3d0e9dfa62c44e422f41ecc1517bc98302341496db287adf309f666d3bb','74e723d1102889f7771eee1da6080ba775fdc86a81c5fbef8b42189195c7a4f1'); +INSERT INTO blocks VALUES(310210,'70b24078df58ecc8f7370b73229d39e52bbadcf539814deccb98948ebd86ccc0',310210000,NULL,NULL,'207a1c90d1658d55fa0fc2e1507fce98521647ab5c4d11099c2742279cc92b3f','ecd4bb45bef1d8b395add25118bbeedc8d96f818a471bd7606554946a023b151','a614b0c8b0d4cbf4a0540c027373d01b11580d45e226a23f4e67139b92ae09c6'); +INSERT INTO blocks VALUES(310211,'4acb44225e022e23c7fdea483db5b1f2e04069431a29c682604fe97d270c926d',310211000,NULL,NULL,'dfc7fe172f9bc77148a1bfad5d441a3688f718b4985406d0cefd4c4dcd926208','f999268e3400907f85a0448d124df4d139b228327721fad7ad29ef595b0d16c9','f788b344f30b5eaedc4a475ca604e2918b3e50b624495ee2edab1f0bf5766a7a'); +INSERT INTO blocks VALUES(310212,'6ef5229ec6ea926e99bf4467b0ed49d444eedb652cc792d2b8968b1e9f3b0547',310212000,NULL,NULL,'32a39bff0606ec93454a2cb144c0bbd1939bf2be6a2ae369b885afc0b5ef33c9','2e46422b38cddef2d8a10b343115c5e587b5456480fb1a019f0a5d541e90afb8','e86618689c0b651d05f865904034fbaacc64e83fbcb5d5285afb09c6752da5d2'); +INSERT INTO blocks VALUES(310213,'17673a8aeff01a8cdc80528df2bd87cdd4a748fcb36d44f3a6d221a6cbddcbe7',310213000,NULL,NULL,'15968873880e97e849e59971d4ef19881b1c11c3148dba966f51d986c59ccf36','fa1e7562a89ee572607e6cdbf26c80d4ee1aac2bcd45374d166e2e993f8672cb','30df45a6f529772a5908694e02f9de8f9e12d745f095ae7e5dc12d77482282d4'); +INSERT INTO blocks VALUES(310214,'4393b639990f6f7cd47b56da62c3470dcbb31ef37094b76f53829fc12d313454',310214000,NULL,NULL,'dcbdc463154fe49a7f22611fcb53e5ca78501424ba741040d89cac9db0a03ac4','5928d3221dd0bd142368585dc56f9f8a68885be95b7ad46c35bc37fbc61f651f','a506c28394188f0d47dc6cbb7d7461b5cecd53d0cd50aa27433c19ea01a75abd'); +INSERT INTO blocks VALUES(310215,'c26253deaf7e8df5d62b158ea4290fc9e92a4a689dadc36915650679743a74c7',310215000,NULL,NULL,'6047855f1c691f27ade1cc4c587f1c11ff68f5f5bd7959a23f801e5da7773eed','b6410b25a5d6f17a5431f621d6226491bcb2ed97dac543c06e832cdaa8853d5a','4612bd2ee3b59bd97b18b4db38cf1b568e7d95919b4df1efed99827ddb108270'); +INSERT INTO blocks VALUES(310216,'6b77673d16911635a36fe55575d26d58cda818916ef008415fa58076eb15b524',310216000,NULL,NULL,'a12fbb09858868de79095c8e3222f6fa179f2f00bc3c97c8205fd9367ae05aef','f8b3b6d36fcb97071d826e68d2e6e5bc60f982c470e68644d94a6ec1342d0148','46b78103fea5220c7d355b83648be58c25f14f886bc57d66863aaab90e8dd02c'); +INSERT INTO blocks VALUES(310217,'0e09244f49225d1115a2a0382365b5728adbf04f997067ea17df89e84f9c13a8',310217000,NULL,NULL,'419d8dc096dd58523cd4822748754158f0c11945bbb62100cb5268cd802580a8','a61fb813a69ed40eae923918a73a8dfe51dd6fa14f5426ada1a5a543ab7bb0ce','b29b9e98e0b8ede80fef86b055eaf4b1a4811ca2092360b826102dd1468d87b6'); +INSERT INTO blocks VALUES(310218,'3eb26381d8c93399926bb83c146847bfe0b69024220cb145fe6601f6dda957d9',310218000,NULL,NULL,'a36c07f7fdfaf7878d73baf14aee58b42220b2b2411fd1864450ec6ce1fbd173','dc1d785fe75a506a691f0eccaf752017fbaf5ce2b7225bdde3fb538281698e4e','220872c5652e7b6f40c016dc6523de8ff98c3df64b4e184c454d6b633a7b867d'); +INSERT INTO blocks VALUES(310219,'60da40e38967aadf08696641d44ee5372586b884929974e1cbd5c347dc5befbf',310219000,NULL,NULL,'7958aa94088ecf0384a9a6b0569e9507d208e009e9ce139c823960e40996a47e','c9aa622e3b372ba0c76efe97c1443cb89f2dfbcf8ff5e28dedf9b3abab3d6384','a11450c29b7911ad29380e63a6b19fe51c796d75f4c0d53fc920d5fc5f808c91'); +INSERT INTO blocks VALUES(310220,'d78c428ac4d622ab4b4554aa87aeee013d58f428422b35b0ba0f736d491392ef',310220000,NULL,NULL,'00907c4368c2dc76d1ef98a0ba3c86bc4746ed2734b0c10f3797e0af70714240','d0c3959f899232cdb5fed61bac2c09e45254959e8bc1a076acb3ba5e3ee63e65','d040538edf8a2f0f4a6e3faf03960e87d928a54fae425936298d6a681d11f46e'); +INSERT INTO blocks VALUES(310221,'cf5263e382afd268e6059b28dc5862285632efe8d36ba218930765e633d48f2d',310221000,NULL,NULL,'2e42f882087dc2158036592298321113f1b34e15b414efa6d43364c06d368540','cf40107f8d11aa8ba96b03912967f88c44e69e20d7105f497d5418fc08aa5800','59b0ff7a16f517df2cb4bf8bc7ff5956611500befa53d0c4780b5e283da820bc'); +INSERT INTO blocks VALUES(310222,'1519f6ec801bf490282065f5299d631be6553af4b0883df344e7f7e5f49c4993',310222000,NULL,NULL,'00c4a5d41dd629bd0973c03152e4519214dce68498999c8dddc1f7a1cad28a82','6a012ee8e82d8d24b0a24d4bbab74cbe226afea1a9c1e129aceccd1d7591a107','e6dea0d41304cfb4a3c38c1c8d1fba4504f912690b43e3733846f4126c909c2a'); +INSERT INTO blocks VALUES(310223,'af208e2029fa49c19aa4770e582e32e0802d0baac463b00393a7a668fa2ea047',310223000,NULL,NULL,'41c7a0fa22ebee9d55f2a3b118314293d155c349ba01069a23ddff76dc842955','1080406ec3ccb84490487860bdd507637fa8fbdc68fc886d082bfcdf9ac835e7','cb084ce164cae49c6ff1068db4164ae28199c67d8cdb1a113cff3ee5756e3e05'); +INSERT INTO blocks VALUES(310224,'5b57815583a5333b14beb50b4a35aeb108375492ee452feeeeb7c4a96cfd6e4c',310224000,NULL,NULL,'66c268462442b69efb56b29e08aae1a404d3543e0a20711e8998a31af45ee929','1d5188bf347d72bc66239f3b4c709ecca24141c5474755c567f4176293f275af','6d590ad50515d2fe147d37f12a335f9c2a81ce0a480b745563088b258324dba5'); +INSERT INTO blocks VALUES(310225,'0c2992fc10b2ce8d6d08e018397d366c94231d3a05953e79f2db00605c82e41c',310225000,NULL,NULL,'cf39fb28a7e4d4db7657bb11a30d592a15c049000d7ac86d4fb3d942bf879b95','61dccc2a6cdf50b56700c893611fac0dd6cccadcd672cd438452ebd30852ccf7','c2680ad2861f1e3f0cc4b58706e888a73b1ffd4dccb574a57adfb21bc96697ec'); +INSERT INTO blocks VALUES(310226,'b3f6cd212aee8c17ae964536852e7a53c69433bef01e212425a5e99ec0b7e1cb',310226000,NULL,NULL,'cb622a4d04645ad96d3e0006f2b7632e8b82e44206d6c1cb75212b059fe18de5','2c131ef357cdc433dce05cf915be1b2c243e51208c877852a19c67968caddca4','2c21eeeadfc3473fee34a305a93bae07d53734cd66bb628b27fefe546435476f'); +INSERT INTO blocks VALUES(310227,'ea8386e130dd4e84669dc8b2ef5f4818e2f5f35403f2dc1696dba072af2bc552',310227000,NULL,NULL,'60ae4209347248a3f7ad39b6436627f06e45433f6b6dd89cfd3383d68974a41c','200ccbec2ba0927612c50a1ce2a58f856ecbda876943bfc2d3404724fff1927a','90e3c15bd96157e454918c5c2f424db7ac3944357363a15abb84fda1118fc6ad'); +INSERT INTO blocks VALUES(310228,'8ab465399d5feb5b7933f3e55539a2f53495277dd0780b7bf15f9338560efc7b',310228000,NULL,NULL,'798206ee77c9e2fc8fe943f9bf2074c9c2560f534e3304b944e2ed3c89ce8bcb','c8c9a18e8420e274c98c528e0d0636aba20f5a6c983135a61e9cd47d60123185','9f1446c7b2a89aa204c3314e07b538355d213cbbffe90221d199bdc710f747d6'); +INSERT INTO blocks VALUES(310229,'d0ccca58f131c8a12ef375dc70951c3aa79c638b4c4d371c7f720c9c784f3297',310229000,NULL,NULL,'becad39a4d1bc8d73a856fa1d2bfa251f29b23fec9448a91932dc610243fd8df','1d817cb41854bebc85173e6c6c0a8e6ae5a1bdbbd1077a64265ec4c96d60ca45','d3d5934e9ed8b1433c749b5bf4334b3416f52e34e67bac684fb35e94636b7b88'); +INSERT INTO blocks VALUES(310230,'f126b9318ad8e2d5812d3703ce083a43e179775615b03bd379dae5db46362f35',310230000,NULL,NULL,'e08eac4daa7d7bc70f2f47a835bb80993d6d6db06d8d8986101b717db1c62ed6','d37fa640132bf2595891bfaa5d1d562495c780569e2a5d4f8863fd60d6396d95','d2fbfd6192c24c7e814e6024e2b285a9bbfe76cc3716df91ffffdc2d1b8ca15c'); +INSERT INTO blocks VALUES(310231,'8667a5b933b6a43dab53858e76e4b9f24c3ac83d3f10b97bb20fde902abd4ceb',310231000,NULL,NULL,'a761c29e76c9d5090cd1d6424beb91d0a9fd9546c67ecaa6d4879177b6745b59','7bdcbdcc058e4c3d39751316b39bc65594624dc79fc8556e2847c94fb5986200','f3615d817a2ab720a6484a1648a8a0ba44cb89561d09d99eaa2d263441bf7748'); +INSERT INTO blocks VALUES(310232,'813813cec50fd01b6d28277785f9e0ae81f3f0ca4cdee9c4a4415d3719c294e8',310232000,NULL,NULL,'5da469b7e21ad8ec4fe7cc2f426dcaeb18a3a4a3c44385d529a8b252c77a9e43','721ab1fecac8b537de1c90225f23a62d02a6e8b392f5211a8e020d9169dc75f6','9678bba3d4de554ca46c136dde090368c699e1d0dc418e50e46288276eabf4b3'); +INSERT INTO blocks VALUES(310233,'79a443f726c2a7464817deb2c737a264c10488cac02c001fd1a4d1a76de411d6',310233000,NULL,NULL,'d8531834d572acc01591997cac000185facc033e1ab72f8218a70d0ae3898914','a0b57a1491335a2fde88223b77d7c8a248101187be0b71894b6c56c426603867','a23b8db854d4541df9134db44bb6fe793a50120a88b3440aabb70d0e75176ad9'); +INSERT INTO blocks VALUES(310234,'662e70a85ddc71d3feae92864315e63c2e1be0db715bb5d8432c21a0c14a63cd',310234000,NULL,NULL,'0ac6803ab61e14bb08fd8051424565086ab11b4d33faef077f5a0732eec6f766','b719ec81bc5245492809b946a86c76c121148d506292a4ae125b368f1a24b72a','59103e41ec726bc2a59301e3a32784bbcda2c3e7483aae145fd7005e433d6110'); +INSERT INTO blocks VALUES(310235,'66915fa9ef2878c38eaf21c50df95d87669f63b40da7bdf30e3c72c6b1fba38e',310235000,NULL,NULL,'5f7de1c7fe45858dcc844604a77051d55de3b9dbb5f5d9910ead8bd0f3af48d8','8d81c116619e760608161facac457bb00d4e816c049afbe42f6e0f7d7f1d09cd','447fe8a1e60879312f7da19375223bac839dd304cdc22bd6aa7b152ad3450db7'); +INSERT INTO blocks VALUES(310236,'d47fadd733c145ad1a3f4b00e03016697ad6e83b15bd6a781589a3a574de23e4',310236000,NULL,NULL,'c0437ca60921bb73516c31a74f78d2fb48d2c628b629c8f55c8fbb0060718d76','1c50aa16f8543f1eee5c2585aa8f7ee373bdb58648b430189ef4d8c9b0b767db','26bd291c679eea9f6148405903bfbe586ab239983264a3946511d750c4e82526'); +INSERT INTO blocks VALUES(310237,'2561400b16b93cfbb1eaba0f10dfaa1b06d70d9a4d560639d1bcc7759e012095',310237000,NULL,NULL,'4340ab34a083b38dbca477b6cc2479e6d70ffd6d6b9b75772068674297abadff','2f23795147dfb09a113607e442cdc926222a2b9c3dc173b9e92ab8560de20c9f','280d4f89975370bda8fdf0c87314a94d7b0dd03c9b32f7bebc4021fc2720b77f'); +INSERT INTO blocks VALUES(310238,'43420903497d2735dc3077f4d4a2227c29e6fc2fa1c8fd5d55e7ba88782d3d55',310238000,NULL,NULL,'6a76891c10ff0f9416ae1a024b985d621154918bd8ab545980b57fd2d18c4af7','31d5717812d8f7e54ac8b7a000c7b599e2123a1de205cef6559b3930c466b961','e30f1e85675ece7bc8a53ac453222d029bb2d37de9bc5b6118478152c86c9195'); +INSERT INTO blocks VALUES(310239,'065efefe89eadd92ef1d12b092fd891690da79eec79f96b969fbaa9166cd6ef1',310239000,NULL,NULL,'1128bb89562fc3b112da425a3dee67adaf741a8021ee378bdfeb44af3b1b1fac','82b7482bdf98200b43d483dc7725ea9069ab96d897fa88dfafd73334132d362e','eb4ec890f5843e46da78b588ed0b02c3085bb6eb389af2079ec71a6b089e8f10'); +INSERT INTO blocks VALUES(310240,'50aac88bb1fa76530134b6826a6cc0d056b0f4c784f86744aae3cfc487eeeb26',310240000,NULL,NULL,'be05624b84b2e76794f065f36b4e98d6c6c120f1d8a5db91957bbe7008ce3240','bfd037773e4ad5fedd072183d19e824c36cf21549c374f7d7dab3ac313a1542b','353d1f575d868fc39e760ec639862c3a0c4be9d5a67a55c14a65dcfad6d886fd'); +INSERT INTO blocks VALUES(310241,'792d50a3f8c22ddafe63fa3ba9a0a39dd0e358ba4e2ebcd853ca12941e85bee4',310241000,NULL,NULL,'5abfdfb1aa42fb80ca4538062d152d965b6a7a56bd1e170a7a109409a4606b7a','e0bccb8ee5ac848700b228d8d21970f33fcc7a2c091e4b1d1f7f71c09404ecbe','d383311048590267fb4badc18a868b1ab5c2ff5f0a059ae5fd537eda71254207'); +INSERT INTO blocks VALUES(310242,'85dda4f2d80069b72728c9e6af187e79f486254666604137533cbfe216c5ea93',310242000,NULL,NULL,'5f354f767df3256aa6a23544a7164160b9fabe481c85d1891f5250b3026dd7b8','a9b87a1cd3146663579bf192b97136602806865bb60ca2d464e3111872b61b7f','62243f3d73c5f59a8441dbbb4898a241d17f67bc1af36bbb1244455fc977c96e'); +INSERT INTO blocks VALUES(310243,'a1f51c9370b0c1171b5be282b5b4892000d8e932d5d41963e28e5d55436ba1bd',310243000,NULL,NULL,'ea3acc31b3c298237fa11ca4400c65ee46732c96e0b7fac5a183dd49d938e730','b7226a87411a48bc0b25e014f2929d63979a297600f51723a0c9bb89fef120b0','0afd4bd16e3fc7530ec85e9551f1d7825c9c148b46cabdd297b4f16f964af544'); +INSERT INTO blocks VALUES(310244,'46e98809a8af5158ede4dfaa5949f5be35578712d59a9f4f1de995a6342c58df',310244000,NULL,NULL,'07ad792741a48d5a7b657e6c4dc83e3534c79bd1e7da7044139516124adc8f80','baab169058840f62c00af1dc51ee0a77fb964dd27c6241463650fdb6c77d3b6a','b911b0416c6263a6dd60ae07db6faf73d6a10f6fa6cf064e5f333c65caf079d2'); +INSERT INTO blocks VALUES(310245,'59f634832088aced78462dd164efd7081148062a63fd5b669af422f4fb55b7ae',310245000,NULL,NULL,'d36a618af8e92da03b373ab0137ded666db6cef906a6b2c0cb8c71057a1a5903','18cf40a1489af6f99dc454630c35dddf20acacbf979d47acb30a5831e55f920e','d50b71e9e2caafd838879cb22dbb2050f15cd7945c5cf292f195a8336fdd1731'); +INSERT INTO blocks VALUES(310246,'6f3d690448b1bd04aaf01cd2a8e7016d0618a61088f2b226b442360d02b2e4cd',310246000,NULL,NULL,'a34e154571ee585a839053a851a007d6d433d3efd2b3e923a9c4ec4bb0dc9d98','a2103af3fa84dc4015979f3a629c46e2234f534f86d7c5a403275a8eae144ba7','b6294ee4bbf86446dfab3468136c83cc6c8b8558718be9407924704d573a24f6'); +INSERT INTO blocks VALUES(310247,'fce808e867645071dc8c198bc9a3757536948b972292f743b1e14d2d8283ed66',310247000,NULL,NULL,'ee94fcb9210718095ccdf63f30ab081f45dff765a9ca4f5c86b1b0d98973ef90','39cff977657fdbe649c601531383548a3922cde40dd998c355c201cb6deee9f6','254b85a257fd1d35052d1ade0a1b5102d90bd457cbaa1735eb4e19016090950a'); +INSERT INTO blocks VALUES(310248,'26c05bbcfef8bcd00d0967e804903d340c337b9d9f3a3e3e5a9773363c3e9275',310248000,NULL,NULL,'029884a5273466fa45cdfbd91ae3aaca50af0771d22f6b55af6367348c2802e2','6951bec53cc30ad6d9dd3f38f5fa8e4b876cdb1637595d38614ff3e42b53edce','f8b83307c7bd7799cd0629304d19c66b5969f24e1d010e56ebc5e7869014bb45'); +INSERT INTO blocks VALUES(310249,'93f5a32167b07030d75400af321ca5009a2cf9fce0e97ea763b92593b8133617',310249000,NULL,NULL,'dc10674812c5249c693ab7b148d048439a0d77266014f3afc1810a6260838f02','2f53ae50e27194404c5b85dab55335582b2961c6997393a9c48e6708bab8f1dc','255b2e6586e335e4471dee6b33e86c67d9fd71d5a4e1887756f3bb4c79769b31'); +INSERT INTO blocks VALUES(310250,'4364d780ef6a5e11c1bf2e36374e848dbbd8d041cde763f9a2f3b85f5bb017a2',310250000,NULL,NULL,'a0fd49b46ff0000e83d4c56281dfe2be1bbfc924c75969726754b05bf7107641','5148416db7a3e45edd128f1b9b5c61b916ce94f25638cc90a8d73f60afe64176','bd9c584c6ab86bb09093331cb4d437456c09d6c617edd5c57cb2bbaac302728e'); +INSERT INTO blocks VALUES(310251,'63a3897d988330d59b8876ff13aa9eac968de3807f1800b343bd246571f0dca7',310251000,NULL,NULL,'bdef6a6203d28d314dc087e539a9cdad19d123b605824f0a66f13bf5f72de9b8','6742a15406482537d29722db3302d492647e4c7487d840fc8e7d74d0806c3bee','d3be3e73307cf37998f52cac830014fd42964c5ee326e0c9170e8ae02dc4b600'); +INSERT INTO blocks VALUES(310252,'768d65dfb67d6b976279cbfcf5927bb082fad08037bc0c72127fab0ebab7bc43',310252000,NULL,NULL,'8da11bec0d58b196ddb073d3aba0def98f01f83da654765fcae21cae6046214e','2c11848ca51ba429a094ef40b1aa019c132cd9fd6f954139dab5324d77eb7125','2a3f415a498bf24f4f007ff2e079d33fef1ea25c416a6978c2477cce8e6162a0'); +INSERT INTO blocks VALUES(310253,'bc167428ff6b39acf39fa56f5ca83db24493d8dd2ada59b02b45f59a176dbe9e',310253000,NULL,NULL,'2efa2c5781899d213741e795ca62fbee9d3ddf53792ce002db7484adc66bfbd4','1036976d6406322c4c0afb2c6be13d6b89cfb2feb30306c9df8a499330d5489f','67c3aeae46b6dd4e78f141feb7c5817bb6c2fd35f701bd50f94723d2814ec895'); +INSERT INTO blocks VALUES(310254,'ebda5a4932d24f6cf250ffbb9232913ae47af84d0f0317c12ae6506c05db26e0',310254000,NULL,NULL,'d062ec468e76421d3769a99eb3c8b2cbf4bf393d109ba13b3bce128613fff547','098200d06ee21c916a203065eae3cffe8e2c80e32bce890f96e6bee400cf16ee','04920f21cdef0c306cc68eda0e4d60c062b07aa295ea65535e29b250e4df1057'); +INSERT INTO blocks VALUES(310255,'cf36803c1789a98e8524f7bcaff084101d4bc98593ef3c9b9ad1a75d2961f8f4',310255000,NULL,NULL,'5c531dc8a7461e9e7a2ead654509d76c9be3427b1d2b75c0ac7ae0e03126c49a','b9c0f364e8694264c33b7d993ed45f645410820dd0ff39704b79f6aaa64a46c4','5c60183968d6ecefdadf18d0e4a96326ec5f86cca817d0dac4a338f8d24df533'); +INSERT INTO blocks VALUES(310256,'d0b4cf4e77cbbaee784767f3c75675ab1bf50e733db73fa337aa20edefdd5619',310256000,NULL,NULL,'8da9f0162e15e33e14e5e1e22c2fd847055a65b99eec519dd069a83bb9006b51','fbb34ac53fa4a19bb467c92b87291aeafd8bf8c43be49c7d487f962df5c50d21','5515bae0614b3e12c49529253988f197bd1c107c8dabcf278320082eb4bba319'); +INSERT INTO blocks VALUES(310257,'0f42e304acaa582130b496647aa41dcb6b76b5700f7c43dd74b8275c35565f34',310257000,NULL,NULL,'0cf6657db5f3145587a466c05f237289b639668d844abfd8d46430c090b54913','71c115bc32aefb584d499c054cd09d0ea58ea0cc11d187bd5add8f261f43f055','e52cd05ece75b2e63ed41c124938e317c23462936acd6a880f1926d54f32d723'); +INSERT INTO blocks VALUES(310258,'3a0156dd7512738a0a7adba8eeac1815fac224f49312f75b19a36afb744c579f',310258000,NULL,NULL,'e340defe4bd84e788f9c5b083849e6aa1d5c7f33123ebe62d7abe04b8a9e312e','0725d989aaa9e8f1a5604f1807ec8f5aa2db518ec2397479e7e6c48c4d2b04ca','d5073b04c9f93c2db3d53e4775af75f9a19f161e142d8218da5e685fb02540c7'); +INSERT INTO blocks VALUES(310259,'e5ed3cdaaf637dd7aa2a7db134253afe716ffdf153e05672df3159b71f8538a9',310259000,NULL,NULL,'03ca0cbce5a5b50988c19c0d4e754240f50821695dca767d1169f8c7f5c1fdcc','19e343fb3645b7ae94a299eb13691ea02d054e8acef0484a95a4079e42e487b1','2c8abe09d73bf3d398d0394c9efc66e0e27854dde12e163fab65115dd8a6b177'); +INSERT INTO blocks VALUES(310260,'8717ddcc837032ad1dc0bb148ddc0f6a561ed0d483b81abb0c493c5c82ec33cd',310260000,NULL,NULL,'83a3b43e01f4f25ba05b527415baa3e8b8adba319628c245988136bd8fcdfcfe','de3dee5cacbf5af3aaf1dac7cae860b06af7a2ba227f2bd81840d149354a05db','bde13353795758731be5bffb1e00225f868b928b46d1d3b0db9f7fd514c519ab'); +INSERT INTO blocks VALUES(310261,'a2a9d8c28ea41df606e81bf99cddb84b593bf5ed1e68743d38d63a7b49a50232',310261000,NULL,NULL,'e61c12005d60870fee947fff469631ee540b1a0d6b8aa67614cfacc0a9f65ec0','58b8a751b3daa23993a773073b44d4bb2715075dbe3cc1738f3138383646504e','b666065dd27af8046b6129b493f91b76effe12052a38ee635ca6de46e6270422'); +INSERT INTO blocks VALUES(310262,'e8ebcee80fbf5afb735db18419a68d61a5ffdde1b3f189e51967155c559ee4ce',310262000,NULL,NULL,'c21ac4906d435af5b9ef5576da6bce454f65ef16099b7ee03219a4ae1851bb91','a1e30e203c037b242cb1a41e5fd948828da8192a5db70453602961183a00d36d','e8e16450b0be6860aa3c81040eb5cd599518072e0a3b43df3f57678516b8e422'); +INSERT INTO blocks VALUES(310263,'f5a2d8d77ac9aac8f0c9218eecbb814e4dd0032ec764f15c11407072e037b3c2',310263000,NULL,NULL,'676f6c532ff23839fef228a9fac7719e77a3c20efdc17f3cb2d13035c78820e8','ca47834be7a15554ab2dd401462d7d5c14f3f5f9ef9ba715488b1b3704de15ab','b6423cfe1aa1baca40bf9ab4ef27a8ad2eb64eea67404c26dc874b8cf138c410'); +INSERT INTO blocks VALUES(310264,'ae968fb818cd631d3e3774d176c24ae6a035de4510b133f0a0dd135dc0ae7416',310264000,NULL,NULL,'258854505b1d3067bf360f3d0dcb369ed7a90fec8744578d3dde51a79db72c25','21f8b38aa107a9c6fbd6439244ce85a8a6abd12fde211c4569d28353cad5b8bd','a0e471e5dd0421397c1845d3b7815bddfc8795eb5d13d6c2b05ab8632b09f7d2'); +INSERT INTO blocks VALUES(310265,'41b50a1dfd10119afd4f288c89aad1257b22471a7d2177facb328157ed6346a1',310265000,NULL,NULL,'72ab32c420a7dcac0e7c36c4d9ca81e237955b4d8bc57c87078ba292923ce98d','9685f9791c085e79a3c298dfe4f49fd1dbf8b4bdacf45e1d25e7d18382ca0e7c','6bb5150b465d799cda7d98ef583d8afef8f401814e5c5e48617041d32aeecf6e'); +INSERT INTO blocks VALUES(310266,'1c7c8fa2dc51e8f3cecd776435e68c10d0da238032ebba29cbd4e18b6c299431',310266000,NULL,NULL,'b81386d19aac285fee4e39a818cb0442e378372f7d55f92e6028b37f974e4a61','578600253e06f32b4ee4a312df8213ea7cf12f841858bdf6123b0169cb4bd42e','d9efd0101a14c8b1c238675f24df8d16ce23c39c24dd29635f13b999c7803c07'); +INSERT INTO blocks VALUES(310267,'c0aa0f7d4b7bb6842bf9f86f1ff7f028831ee7e7e2d7e495cc85623e5ad39199',310267000,NULL,NULL,'ea8fef9e82e451d9650777b051f19fe5e34b8976f1bcc1880b6eebe5feda34d5','face84fc0aa45f7b072d73d4930b32e223cc4c22a620c39334fc836e16b2fb5c','f66ec0d53fc6fc7d82d193c34c5721bc495229facb199db09ed6b6cd01e3860b'); +INSERT INTO blocks VALUES(310268,'b476840cc1ce090f6cf61d31a01807864e0a18dc117d60793d34df4f748189af',310268000,NULL,NULL,'1545d381812f0f0caa827a237f145838276fe058b05af4808615738ca9910bf1','ee67f9fcd6ce50ee98da722352a917a46d3c71d2e5ea50294a55c613817e77dd','4176917a6feac2b51b421aaa43137a739922690e61bd4ad3756df11b79ca4e5d'); +INSERT INTO blocks VALUES(310269,'37460a2ed5ecbad3303fd73e0d9a0b7ba1ab91b552a022d5f300b4da1b14e21e',310269000,NULL,NULL,'fd9cf61ac6e1fba409e4220a141ed6c89c18c893c7a752af53d5f7608bc04a67','6d1424cf68a5b1dfddbbafb260989c5b27c060a40026e829476d979cbd8f4412','e0c21a8c43ccb12e16b67c1a1ddc93f8ed89752064ae702edb21b02476d17473'); +INSERT INTO blocks VALUES(310270,'a534f448972c42450ad7b7a7b91a084cf1e9ad08863107ef5abc2b2b4997395d',310270000,NULL,NULL,'1d34c8c0dfdb4733a7b589647abb0e6a08f8de93a5c86fbab786f6d9d1500785','fc2696c78afd3051d10ea3ecc56280d2633b732a7c755b9057aa30fb11f58f53','04ca1e602a6f205ddf76e50aa85b5b9db0479d0435fca8587f72fba099d6f665'); +INSERT INTO blocks VALUES(310271,'67e6efb2226a2489d4c1d7fd5dd4c38531aca8e3d687062d2274aa5348363b0b',310271000,NULL,NULL,'cf38baabc6e8a082eba1bd8ca2f72af5eb01cb76bd3c9eb101b27080a3a70d17','b28638da352abf83f2250bbc2da0f75b14483d7d4c69c93636484e9e3aaa326a','1a5874dea8c281362fe9df59541a410e003826464e58caf9e0c603a66b0f0172'); +INSERT INTO blocks VALUES(310272,'6015ede3e28e642cbcf60bc8d397d066316935adbce5d27673ea95e8c7b78eea',310272000,NULL,NULL,'2b2763fa5ab2962582c303062da8b8da7280274e615b3e37f93a32e44793ccc8','329d5096486b8dc452e2a1ee0a36d9a17ddd5bbb3149ddeee2bdb4989a7a3a35','c70ff62a74585b6509861de0dd69fb4dcfecf44dcae6de19eebfe44a12b2c846'); +INSERT INTO blocks VALUES(310273,'625dad04c47f3f1d7f0794fe98d80122c7621284d0c3cf4a110a2e4f2153c96a',310273000,NULL,NULL,'ff9df73d4f92b7557c36f20d8f622923dda225a1ae2871e60f16ee2dfdf5b9d8','f79f73097410b602df3a98901e26ed37d07f1da95249cf0e3a62c811d4f7de3a','21a3ca685a1045cee131f430e32cfc8e4951c171f4d1e0d30d7a0f16a5bf8b97'); +INSERT INTO blocks VALUES(310274,'925266253df52bed8dc44148f22bbd85648840f83baee19a9c1ab0a4ce8003b6',310274000,NULL,NULL,'ece29ec2cd160d7634009f41cc2d0f13330d53ec6971c019d69dfa4367f86646','bf01b445bc208b9efcb314f1cfa1ea4300fc152ad46a973044abf56dc74e9c62','ed15fe9ddaac54eaac250fc655db3514e8ee1617ce12d3cd6bacad14343032dd'); +INSERT INTO blocks VALUES(310275,'85adc228e31fb99c910e291e36e3c6eafdfd7dcaebf5609a6e017269a6c705c9',310275000,NULL,NULL,'23738d6d8dbf8b44b481f6c0eade991987c84e8025fe1f484c7acd3ead7f4163','c0f70c46688ecb9eccaa94bdcbb3fc54eaf3af76cc450b62dfd7a9513bbbd50f','9efb57bcddf342222aaeb4ec11b1c1a6aadf5f514f084668de123b2d44358e8a'); +INSERT INTO blocks VALUES(310276,'ba172f268e6d1a966075623814c8403796b4eab22ef9885345c7b59ab973cc77',310276000,NULL,NULL,'a241e1cb19bfbebb3bbb09c6471760b8379ddc73a67d69b4d84fd1d21dfb7034','99d32cb4d9b52ec0726c907330b2a60d7cf8380c8012f804cf8838bee1b0ecec','4e685f44887156780a7604b32d945ced2b372029e28a20ae7fb7d9a1b7c8fecd'); +INSERT INTO blocks VALUES(310277,'c74bd3d505a05204eb020119b72a291a2684f5a849682632e4f24b73e9524f93',310277000,NULL,NULL,'0efa57fd462031a87831832a789ed7751aac5f6c19a23767555b3f7145d87532','08e71c5246f1225a02a00c8b52bb7a92c6937da9c9659129a5dcd2981069bbb3','9f7ca19c2967aec200b50b55041282bc2ee1b77adc93d20219ad7444575db0b3'); +INSERT INTO blocks VALUES(310278,'7945512bca68961325e5e1054df4d02ee87a0bc60ac4e1306be3d95479bada05',310278000,NULL,NULL,'0045189a4da126b22e91e4bc2a7ac37dc90ec0869b7fcbc927919fca4cce5259','6e3580c7af675e8fdd1c5366a7af2e387f8d8d9192589794883a28ad2ce6a499','418da939689114cbb0dfb96112ad762001d6ca5e860755339a9c6d3e80d9364c'); +INSERT INTO blocks VALUES(310279,'1a9417f9adc7551b82a8c9e1e79c0639476ed9329e0233e7f0d6499618d04b4f',310279000,NULL,NULL,'442b7d4dee025b81c298ca0f6a5b9dbdf17ed0087fc36eab7f0671d5a19c9a2c','04f51f4c3de467be5cfb32cccba5cd482eb14657d7f67a60820204fa22afaa41','2d8cf7ac32bdb3f50d8c673fc3e3b1e15675b0b74df5658392c3229772614f0d'); +INSERT INTO blocks VALUES(310280,'bf2195835108e32903e4b57c8dd7e25b4d15dd96b4b000d3dbb62f609f800142',310280000,NULL,NULL,'38d7f98ae9cfb8e3938032dc33899e2e3e5a88e9037571cdddf8ed4709fc8225','d25ed55e962a45fbade2012c35ef507dd76fa0c67553343bb6568569bf1c08ca','db8a5152d084fa5ca9a720673ca8f49b0c5adbda4ce9cee08621dc3c3ebb743a'); +INSERT INTO blocks VALUES(310281,'4499b9f7e17fc1ecc7dc54c0c77e57f3dc2c9ea55593361acbea0e456be8830f',310281000,NULL,NULL,'51237cee3b85f1636e336259b115fad87acc830c71e13ca79e344efb7c308ecc','77eb5540b9f1e2f80cd3cb8572ee80bc112391e0236b560749aaf9952fb6705b','edb566059f9f14c5979bfb99c098bc88397ffa81cfd369cab83fd2ea4e76d488'); +INSERT INTO blocks VALUES(310282,'51a29336aa32e5b121b40d4eba0beb0fd337c9f622dacb50372990e5f5134e6f',310282000,NULL,NULL,'73adccef91b5c738e8810d4781a38edf98d2aa0a8cb619d575e9bdeda979f1fb','889f3e1047c8ca362c1ce4749d1c7ad167dab1e5f85e509d114b1ba1bac8f240','8891c9f267ac9c4cf6728eb63929966158511799e4b78c13638058281f8548f6'); +INSERT INTO blocks VALUES(310283,'df8565428e67e93a62147b440477386758da778364deb9fd0c81496e0321cf49',310283000,NULL,NULL,'5853e60a1b79d4f154cc1f3dc8b0a4d6130ac07784bac16f257f92b9ef294144','1ce62f0a42cb7ecd8c35436253e8234b83e81ba5abc757965b5041400139eee2','e71a8719bc509cf14fe2839283a8c005ba0be7cdc51c9a060a23494695b0b3e1'); +INSERT INTO blocks VALUES(310284,'f9d05d83d3fa7bb3f3c79b8c554301d20f12fbb953f82616ac4aad6e6cc0abe7',310284000,NULL,NULL,'ce33194cb67aa0a5facd788cc24706ef249bcecc95a9965f91065146b33e464b','c354cfcb046ca331ae57c00f64b56defd034278e5616ef7d1f3e559dc538bf0a','f082b16e4c826787a6ee92e2669a83df56a45d1bd4d36cc076bc3c0cc866dda3'); +INSERT INTO blocks VALUES(310285,'8cef48dbc69cd0a07a5acd4f4190aa199ebce996c47e24ecc44f17de5e3c285a',310285000,NULL,NULL,'3af35e85e98aebe1a9c778570c730bf80e085a08ca707c1a5d44b50f2579e71c','35e84bd8780b8efbdc3207b9fef22e12ff71798477971a50088b9c8def3c77ed','f6e7a11a0dddd9aa03a4e28eaed31619303a74a461da94531a1da244a0d0337e'); +INSERT INTO blocks VALUES(310286,'d4e01fb028cc6f37497f2231ebf6c00125b12e5353e65bdbf5b2ce40691d47d0',310286000,NULL,NULL,'4b09b627adda46ee7cf7116102a330ba2aa1ce714b2fa133f7952af34a52ede9','5a868b89444476076be22e42526c4462c5b865012d9970b917376c5342750311','6a0ae9786f71832f49cf2f33624457f4e62005019f24582a400eb3d0a7d8a309'); +INSERT INTO blocks VALUES(310287,'a78514aa15a5096e4d4af3755e090390727cfa628168f1d35e8ac1d179fb51f4',310287000,NULL,NULL,'67786e4ffab15cb78c7bb44ef160d1e5d99b599eecb5ff4f906a6599d744d410','791a49e50583660824bb3ec141a54951c2fd737ed963b1e65b653c22a4fc4a84','9a7e4154f3fbfec3071cebb12a7fa02e269863fc8d39fb0635eb9836b75af996'); +INSERT INTO blocks VALUES(310288,'2a5c5b3406a944a9ae2615f97064de9af5da07b0258d58c1d6949e95501249e7',310288000,NULL,NULL,'600716d2696160b3ba290636180f2afa24bf8d24435022b4539a4cc965c18dfc','3a1e3da301643f22a9b2719922a4621879b2c2d8b790e646f135bc3b5d165e65','267f2136067e09b54f578d0aaa8706f4aa5259c7d181bef4501a5a5c2b1e5055'); +INSERT INTO blocks VALUES(310289,'dda3dc28762969f5b068768d52ddf73f04674ffeddb1cc4f6a684961ecca8f75',310289000,NULL,NULL,'cd6d4b17759152edbf25fd72dce9b9126ea31a2bb1a5435636801e0ee4be1158','26aeba5ab63445ebd419a02915a835d8d6a0bc25bac49dd799e356325687c8f8','f71a3d250855cee67b3dfd077c8c495b9994a712e1373a49407ea698de000e3d'); +INSERT INTO blocks VALUES(310290,'fe962fe98ce9f3ee1ed1e71dbffce93735d8004e7a9b95804fb456f18501a370',310290000,NULL,NULL,'04a9135f416dc041d3c1c0216a84fd780d133213c3369691fbf5e8848af9d14f','74c57c7e7db040f0974be44dae944c978ed2ddb01390d616c9bfaa6816ed198e','e6d8417a7106e130721f87b5ca51f39497b313622066470147f96cd4425ab212'); +INSERT INTO blocks VALUES(310291,'1eeb72097fd0bce4c2377160926b25bf8166dfd6e99402570bf506e153e25aa2',310291000,NULL,NULL,'50f556e01b9e8c135b20187bf863839e651a0d0bf4cfd1008b446531776f7917','13ede25257044f3bd98c6905c216bed45b0d054951d2c5e86a3cf4707699a279','ebfbe8f6d7681ac360b13eb90c5a7eea59e353967ea46cb5c34712d5ec463741'); +INSERT INTO blocks VALUES(310292,'9c87d12effe7e07dcaf3f71074c0a4f9f8a23c2ed49bf2634dc83e286ba3131d',310292000,NULL,NULL,'9d4bf4b1c5dba1132a9cbfd78c1d94cbaf15d7648da80c8bc1a8dce12a79eac0','1b761ed985b1e55c95598c5c0f37df4a1e06dfd26c17792b1020cf0d28fa9a56','29eb591834a466d856b3e283dec80b75e1e653a8fb7ce1502ba3db2881b8311a'); +INSERT INTO blocks VALUES(310293,'bc18127444c7aebf0cdc5d9d30a3108b25dd3f29bf28d904176c986fa5433712',310293000,NULL,NULL,'a51a3f9af39175cc9d142eff67811307ad8f51cdd8161aaf0d98af9e2be28efa','2fd7a38fbb17d7b0eec35f2f03a28c4aee7f579d7f42e3ab124cf5eca07869eb','d526032b1e8dada6c15da7ed324bccf1db499a3d6fb552893ddf2ed64c38de0a'); +INSERT INTO blocks VALUES(310294,'4d6ee08b06c8a11b88877b941282dc679e83712880591213fb51c2bf1838cd4d',310294000,NULL,NULL,'3e9858caa8e835295aa7e78505ea34ce0726e3f5f6cf9fbc6dc4393a28724a25','36566c7c396ecf454c6fa6d3b27dd7ad2c138a85edd74672f2e7d9791e77f0b6','3258e76e3e657f170c950d2e04e111bc252b1a3b61ed62d14df5376d903187be'); +INSERT INTO blocks VALUES(310295,'66b8b169b98858de4ceefcb4cbf3a89383e72180a86aeb2694d4f3467a654a53',310295000,NULL,NULL,'bf48715799c46d629641ba5b72405f6e6cf0500886da94fcc6fddd306a86b02a','2d6b79733125c81413a3e70acf597a11e986893264588da74e9b8a0d5d46e1da','4595b24ce73a88daf27016b1b4c2c93716157faf8e8656d5e0a7a6ad62f6dbf2'); +INSERT INTO blocks VALUES(310296,'75ceb8b7377c650147612384601cf512e27db7b70503d816b392b941531b5916',310296000,NULL,NULL,'08e2361ae4b98387ee43fd7230ea8b296dee677b337f0e211527e3cf29a64e9b','517c81a10cc4219c38e3f947dd862f6983a4a2eb22459dba31f1a656bdf4eeff','d09a7103993dadfa7fbed1ec5affe5a2694dfa7c98ac02637ec9e2309d5af858'); +INSERT INTO blocks VALUES(310297,'d8ccb0c27b1ee885d882ab6314a294b2fb13068b877e35539a51caa46171b650',310297000,NULL,NULL,'cfefc3138983a33686dd1fc37f06fa1d7e01d9b218f7242cdd59005633c0ded8','85ae0c384a76e7c93b29204df759293f7a488fc71edf6b4abaea1944fa3a85d7','dec3bb7b4ebe38b1d919b39608e2f86a5f1cdf2f94184c53ed521e3a4d2555c3'); +INSERT INTO blocks VALUES(310298,'8ca08f7c45e9de5dfc053183c3ee5fadfb1a85c9e5ca2570e2480ef05175547a',310298000,NULL,NULL,'25254257d6f6724161b2b73f94d28d3fd40594b4846699b8a2d5f45d205b1fec','0633d67a69ae2c0ea1e7d3c349cfe1f3b753e387446787987c50782ee4601b68','c64cfcf26b145a34be046fd8309edbbfb19656c8860e695c76d2f7a67ae6b6b3'); +INSERT INTO blocks VALUES(310299,'a1cdac6a49a5b71bf5802df800a97310bbf964d53e6464563e5490a0b6fef5e9',310299000,NULL,NULL,'756acb1055ec75df8fa70f80e23d75f2b47e75035bfd68802e68308785a2ee14','299d47f0c18c1629003069df0afd0bb877b45f06b5609ec171c7b87ae65a0be0','f60c45323fa73d42da598fa797a73d224abb4609eaccd74c804ec333d24151cd'); +INSERT INTO blocks VALUES(310300,'395b0b4d289c02416af743d28fb7516486dea87844309ebef2663dc21b76dcb2',310300000,NULL,NULL,'e30027ca81176dc1e79a0ab3a5afbb839a3338dbe9ea6057aebcd383ed884c1d','8338432f3d159dd15129a269d1cf3866cc7cda8c3845ab349ee6cc240ecd7020','3b6ec2e51285e73d2ea056948076174575c525df91244b21a74f9432b76430ec'); +INSERT INTO blocks VALUES(310301,'52f13163068f40428b55ccb8496653d0e63e3217ce1dbea8deda8407b7810e8a',310301000,NULL,NULL,'4c2bcffc796af76a2607a978289942241e63a6387e0a2ae8fc3d02c6b5519fb0','676af2de3d30fc26112e65d493b9c2401f93822c8e414cc5e7231e60b728e6e0','32b9755f91675ea83e3159fbbb5d3ef727aff9fe4b072f930acd4044fff58282'); +INSERT INTO blocks VALUES(310302,'ca03ebc1453dbb1b52c8cc1bc6b343d76ef4c1eaac321a0837c6028384b8d5aa',310302000,NULL,NULL,'a39fdd7f84d2f6e29b613a8a724bc0902d9abd2d6b4d2f46c3b0512928d69b3f','ef3dfc32bc5b72ec279a0229af8bf6548bfb5bf4ed717e3e81ccb7710f802021','9566b4e9c496557f99e22e5dcaaec94b471ef5bce2d5c4fafed35918785a4e31'); +INSERT INTO blocks VALUES(310303,'d4e6600c553f0f1e3c3af36dd9573352a25033920d7b1e9912e7daae3058dcca',310303000,NULL,NULL,'23f307ef560a02210f4aae5fe605c6d8af9317ab17f1e1ef0944038a3515da49','d1c0461baeac24d356af8ba5283753c778f8ab0fa222c51b753758268f1e7fa4','b39abe3f84fc4b3642bdba7718ec9e3ef705b41651ad1205bb7ef1c6289d229a'); +INSERT INTO blocks VALUES(310304,'b698b0c6cb64ca397b3616ce0c4297ca94b20a5332dcc2e2b85d43f5b69a4f1c',310304000,NULL,NULL,'6baa2ac646d3725fa01111959753844d22181cbbd1801cb12c4208be3709a3a3','96ea912eae3265566ab229e5d5a25354c0713471d73d866b9a09c9b2954d53e5','c9ffd06f24437b994ac54a789e00fc40312d05719f6982b748c8b989336797f7'); +INSERT INTO blocks VALUES(310305,'cfba0521675f1e08aef4ecdbc2848fe031e47f8b41014bcd4b5934c1aa483c5b',310305000,NULL,NULL,'c366fd009860a090c632131eae9380820e512009bbbaa6f7bc5529afab7a88c1','35584be5484303aa263d746735209b04d92a6baa6045e2d684496ff5dabe59ef','5bbfe9f83b65e5b7624a0277d59aaede0a55b9759721e9eac40d0cfa51637e4b'); +INSERT INTO blocks VALUES(310306,'a88a07c577a6f2f137f686036411a866cae27ff8af4e1dfb8290606780ec722a',310306000,NULL,NULL,'fd12969b828d689063b4885a0356fc17e5207794d1f5b6a17bdeb8d584815a79','df65a3a9f318fd30166869a3d5d6eabb9c84399f15a7a50f39422a05ff851997','f77fc5b6e58f3cc3da528941368b646543919a968a9d78a37610e3e466c40fae'); +INSERT INTO blocks VALUES(310307,'bc5ccf771903eb94e336daf54b134459e1f9dd4465dec9eaa66a8ee0e76d426c',310307000,NULL,NULL,'e168094d31f56d36e4c3863fe719e6064b08ccc6f3c2adb490b1359360026aee','272ae60ff5120848055f08303e13a982fc66959f3e3b72f7d7461c7f91252944','143502dc40a8671003a6a88e9223627f22203998b0a6abd1ab0bb838b4cdc23e'); +INSERT INTO blocks VALUES(310308,'2291ffd9650760ff861660a70403252d078c677bb037a38e9d4a506b10ee2a30',310308000,NULL,NULL,'523b3bba7b02e2c4e588f21ed14b7b4f6630f887cc89f9361487b581d7e633b5','30df282ad2859208c35204fe5e2d395734e041bd9644b8b8626678fdd64058c1','834cb5874d864aec58095b356ec9112851e3aebffe63361a044482e319a49753'); +INSERT INTO blocks VALUES(310309,'ca3ca8819aa3e5fc4238d80e5f06f74ca0c0980adbbf5e2be0076243e7731737',310309000,NULL,NULL,'effe1a68917014086da3bf8696f6c13f3cf2cb5cbd6c18b80ed622e476cff017','197a65735f9d06d433abdd01f29f44ec697ba537ead9107ebe9cd889393a053c','c405f2c98172b6b14aefc39cb648528cf22da1eeaaad7be7906fb1f7003bdc17'); +INSERT INTO blocks VALUES(310310,'07cd7252e3e172168e33a1265b396c3708ae43b761d02448add81e476b1bcb2c',310310000,NULL,NULL,'968fb8a7409531a27ffb52af484e7c1076f05b58f9a51bf9cf3d5a7d83b12002','b9b9eef5f4c1720522286ce5f6375613c267684ac330210ab664e29219065cc0','1e9fd01b83f98367bcc7c26b68dab6982f6e8a7b01f3ede80566a9139e06884e'); +INSERT INTO blocks VALUES(310311,'2842937eabfdd890e3f233d11c030bed6144b884d3a9029cd2252126221caf36',310311000,NULL,NULL,'8c69639a757d0195594fa1da3f6b35a0e8c62b8df7f95db81e26d496b8c9dd72','86b9b4356e26ab703e29060a4ff1be0c5cad328b2490d983eae10c24369a1649','13c559735d179e481150f90c78eaa644b739fa66401d0d29592552806eb04874'); +INSERT INTO blocks VALUES(310312,'8168511cdfdc0018672bf22f3c6808af709430dd0757609abe10fcd0c3aabfd7',310312000,NULL,NULL,'8d839bac01b9aae5e554f691ae0ee42cee072f9367fcc2811d4b3f65640cfcad','802b3d153e101c2772b1c96c851efab754f77fd3fd7eb59848d510f8994a9d86','101d59f0cb81493976bf21434f5101e717974c5fe327068f33505d544bd96245'); +INSERT INTO blocks VALUES(310313,'7c1b734c019c4f3e27e8d5cbee28e64aa6c66bb041d2a450e03537e3fac8e7e5',310313000,NULL,NULL,'1377f4255bfd7ff6638734733a4b8faec97fd62aeb954e42b477c875ccc50b73','e96392425727ab5eb4e16a61aef7d28cd0826ad7bc1d8266b3c187bb22bb5d51','6801c7ba823344e0cc2d60bdae45014c2221e8dfc7482054b7fcf45ed0ad88be'); +INSERT INTO blocks VALUES(310314,'1ce78314eee22e87ccae74ff129b1803115a953426a5b807f2c55fb10fb63dc8',310314000,NULL,NULL,'8ed80d44f0d6ad01a30611d94b91f735ef3a166cf0dfa7531492a3e4ac7c29f1','17d9134674657a9958c43efaea302df438762233e7e5d57811b71378e3d62695','4c941a5cd397b14d8552bae72f57aac08b33049443b0bc894578fb283a54a9f7'); +INSERT INTO blocks VALUES(310315,'bd356b1bce263f7933fb4b64cf8298d2f085ca1480975d6346a8f5dab0db72cb',310315000,NULL,NULL,'24b5905cf0d5349b7031870af9677916892e3292fa61455a75e84c1605a398ba','d8bad5e8a6ab63c8e0394c200e6b90cb2a1feabe3f58dc0faaaab59bb0b82654','ed0be536c9b4a9ca553d7b590fb30287db0096adeaa1b709138c18d8ae940efd'); +INSERT INTO blocks VALUES(310316,'ea9e5e747996c8d8741877afdcf296413126e2b45c693f3abdb602a5dae3fa44',310316000,NULL,NULL,'a191657253ca159739403f35417ef74637b053db49c7db62465fde4c54e69239','daf2edaf9fb8e7f718f56cff9e570869297ce6bd350794501b05e02a541e1c84','629c6a46585dce51eda4c6803d4f4e95bf2a50538b3282272e8accd2af786cc9'); +INSERT INTO blocks VALUES(310317,'aa8a533edd243f1484917951e45f0b7681446747cebcc54d43c78eda68134d63',310317000,NULL,NULL,'bf6d880b9fa42b0e38523c00c92a898093afd068450be504a0a56bafd69ed647','740737c2cd6ffb9a5e89e2ae0d34afe5f0bb48d120ae482802b76d07100b6153','4d51cec8d7f3acd743e02e717ec5a0be47c5cdadd2e3e2f1524ecbff16513134'); +INSERT INTO blocks VALUES(310318,'c1be6c211fbad07a10b96ac7e6850a90c43ba2a38e05d53225d913cc2cf60b03',310318000,NULL,NULL,'6422eb2cab5937adb9ca2194c025d0dce63cd62e18d7ebd63220207957c942ee','3cb46a2e5b1a3ef3dd37dbe0cc429962982812eb9c7f87b5282a77a4a7f6185c','cf7aafc875f975340393bbf71285d52e57acd0fc64d4edb6ac95debe2ac7173a'); +INSERT INTO blocks VALUES(310319,'f7fc6204a576c37295d0c65aac3d8202db94b6a4fa879fff63510d470dcefa71',310319000,NULL,NULL,'efb625496aa4365f5ac198a82833c880a60cd5f86d04689463216619cd7d96b8','ed69cef0ba9e4a9371deca76209629cc988257493a69006504b96a99b3da4222','3ddc1626ddf10d1b8325d6852440ee4830f8e328ff6c1c9959a79ad03c5d411b'); +INSERT INTO blocks VALUES(310320,'fd34ebe6ba298ba423d860a62c566c05372521438150e8341c430116824e7e0b',310320000,NULL,NULL,'8c3938d7b3c0a822ebee67f1ecf21b1db6496e19471cf1f2cd00f30325d0c88a','b87169ed018fdc8251d14b58f8d0e09001e45ab5dd76eb2408ab625d34ec584b','7907be5f60e63c02e1e4ceb2229880b5a170e5b85676825dbc8f87fc16f96a65'); +INSERT INTO blocks VALUES(310321,'f74be89e9ceb0779f3c7f97c34fb97cd7c51942244cbc2018d17a3f423dd3ae5',310321000,NULL,NULL,'21e4c3a7afd02f183cbb69709fc6c006ab3d38fef3466de1a1870232d1c891bd','77ef24833ac345e51eeb48fa9adbb111e31ffa3739298ce12a18d2f581c9a79a','5b10b9285c7aa8a132366678bdfceb5fcae8787aef8f4f640fd04ae939d609e9'); +INSERT INTO blocks VALUES(310322,'ce0b1afb355e6fd897e74b556a9441f202e3f2b524d1d88bc54e18f860b57668',310322000,NULL,NULL,'01b3b28c4d8eb796827267c06e6362206884e44f40c3f72d9b5c9d1e6cdfb29a','3833d915749baf7aa33484d7a6b6b28e4acf0d78ee0f1b4e8ab44b22d756a3e3','001616c9feb9b04e2c08e83494b8269f45ffbc630f6143fd852e42bf7701fd66'); +INSERT INTO blocks VALUES(310323,'df82040c0cbd905e7991a88786090b93606168a7248c8b099d6b9c166c7e80fd',310323000,NULL,NULL,'a362da58df0d31eeaa93a25c91c17bec62f9cad6ff0c31420584ce293ecafdbc','2d41c7286053cb2256526ce42c03ab1288dfa066720e9ae5e5dac4532d512de4','3394dda006c49a85fed44816c6ef5fc6ec287043fa8a481bdb3ee117dad0626c'); +INSERT INTO blocks VALUES(310324,'367d0ac107cbc7f93857d79e6fa96d47b1c98f88b3fdda97c51f9163e2366826',310324000,NULL,NULL,'d1b353ac97e000471c66df8ee04d7b0c25f7eead2414e5648cd2ef334881bad6','051b158e05c22a326dd8becd27d142b52477b9209f369599db5c5e25484af157','9838e1a1cf6cc43a0d79c5d614b7942649fdb86a9871256ff409b935e2b978dc'); +INSERT INTO blocks VALUES(310325,'60d50997f57a876b2f9291e1ae19c776df95b2e46c14fe6574fb0e4ce8021eac',310325000,NULL,NULL,'7734300dc764c67fde935dd4432396de4a31cedc2901f3fc70bf1576797cf7b0','7671d8cfff3601fc44132a6d274c1ab1fb0b4fb712041d86eb28157667682251','5e362376ca0af2fbac11aa16d399db299ce2d0e5a2d60963c9671c647c3c2d62'); +INSERT INTO blocks VALUES(310326,'d6f210a1617e1a8eb819fc0e9ef06bd135e15ae65af407e7413f0901f5996573',310326000,NULL,NULL,'ebe859a722587fd456695c6a46af7f0bf54c03e940bdbb5424520a8c1fe70617','72884e56565b442c37cbbc572fa762c7b7b3c549c396037393463be7afb089fa','1d21681efeb4bd7a927eb4abab27ec294ecc7551658690c4e6bf40c160987dac'); +INSERT INTO blocks VALUES(310327,'9fa4076881b482d234c2085a93526b057ead3c73a6e73c1ed1cdee1a59af8adc',310327000,NULL,NULL,'8ced7a546ee2c746d4dc3f0ecd2fb4eaa62c65c4e98be74545d8de22c03526e6','ccbabd4fc70b15ebb6f28afa6f96e4a1f0af08e6a3cdfb518ae008432b908739','2331c9d8631e6c8c455fa4183ad7e5ac4e1cf61b3800da496eb233813c0cb715'); +INSERT INTO blocks VALUES(310328,'c7ffd388714d8d0fc77e92d05145e6845c72e6bfd32aeb61845515eca2fa2daf',310328000,NULL,NULL,'bb5d3479e492f52a0b3b69d29852faefdff645f9b113eae82594f57e8aa40b5d','42fa2df2e053f97e86881395e5d66de912e59bf73eb5be322ab170b06fabd344','225b22b9ce59d48fd30ebf662bc8c964c2445dd2097974289e987df79bad36f0'); +INSERT INTO blocks VALUES(310329,'67fb2e77f8d77924c877a58c1af13e1e16b9df425340ed30e9816a9553fd5a30',310329000,NULL,NULL,'4ad2c9d802db762537be19143ef5eca474cd9f749bbbc661cb95bcf1dcb0b02b','a5336a1818452ca9888d582bb5ad8182e00ec37723d42e6769b001069f96232a','4e0fc56c87b4d94c5676702a3d2a4e68099e952593db43ef7216be1a084ac5a2'); +INSERT INTO blocks VALUES(310330,'b62c222ad5a41084eb4d779e36f635c922ff8fe275df41a9259f9a54b9adcc0c',310330000,NULL,NULL,'4a9a6b59d56f6b7cf867095d939f9bddbf779141177feda470df3759b7d48be3','263932b9bd949d4b0557a7fcd5597a0c607c722b34e644f9795e4f08713a4436','1860e73bfaecdf4d6151f1cbb92bbe406c48afe619a74ef727608d07c3e368ea'); +INSERT INTO blocks VALUES(310331,'52fb4d803a141f02b12a603244801e2e555a2dffb13a76c93f9ce13f9cf9b21e',310331000,NULL,NULL,'c676b9c31e0e3d74d005ad0a52a18ba34688b6002da5d269bcea0f789a4f8e91','646197318fca63f2c8068c0a119f122d02cfea4a5c95201d6cc2eada9ba276a6','8df1a608eba89ff170320b6b9cba3ce91dd2d020c8762944245083ef799b1143'); +INSERT INTO blocks VALUES(310332,'201086b0aab856c8b9c7b57d40762e907746fea722dbed8efb518f4bfd0dfdf2',310332000,NULL,NULL,'cf0b702c03ecff4bda1254dd5e96ca580b69d5d02d1f233725fccbe1f5f32000','8197afee90f808a95bd5a3dbc9c41618e3a07a3039dc2e2539a94cb023e54a0b','c1471fe2c56f24d1393218176b6ab56a22197c7854ffb8427a66cd26c810c383'); +INSERT INTO blocks VALUES(310333,'b7476114e72d4a38d0bebb0b388444619c6f1b62f97b598fed2e1ec7cd08ee82',310333000,NULL,NULL,'b40359eb197db65549946d93a39b2a732e0694d21b8d0138b9bfce4f5a87ae5b','c8b269f3fb117e7ea3a9592a023787d886ffc388f91fd651618f807c017c9a67','78d2ef35e9b57e0a88e07eb754149e42fbf911afa3c434077a1d48e63b4f5608'); +INSERT INTO blocks VALUES(310334,'a39eb839c62b127287ea01dd087b2fc3ad59107ef012decae298e40c1dec52cd',310334000,NULL,NULL,'7cb471ec146f9ec1e4d1b93184ea641f7b8088807dedcd1c0be4ca5ba99e80e1','24eb770852273754585985a5fed612de801663408db3703bb9771d5bcf518cb9','fb4989f05a57ae4a9d332fb1e8308d156490914c1c05579aa57532c228b051b1'); +INSERT INTO blocks VALUES(310335,'23bd6092da66032357b13b95206e6527a8d22e6637a097d696d7a96c8858cc89',310335000,NULL,NULL,'47de747ec20cbec96a6bc4b71f67ea827c7a5a1ab0d3541fd539efac7442d644','ba840a499b9de3ae457db93220ebb7bf61560f33660b8e7b980178325d114cec','041193e13b67818a8a6fdaa90003cca9beeb3302ec88681d789560b0d52bea25'); +INSERT INTO blocks VALUES(310336,'ec4b8d0968dbae28789be96ffa5a7e27c3846064683acd7c3eb86f1f0cc58199',310336000,NULL,NULL,'c216588e623d2b3d03499c7e9f817106b20a8c98765979987633f1e4e50d9594','a6c20cca4d22fa5b8357fae640f1a90e3e656f9015eb5db289ef6da17b597f1c','ce4a7a73ad36049581e6e7e3b7fe57e18269540563315cd3f74bd85780fa94d6'); +INSERT INTO blocks VALUES(310337,'055247d24ba9860eb2eadf9ec7ea966b86794a0e3727e6ffbcba0af38f2bc34a',310337000,NULL,NULL,'a558b47328f54b79a5ad9f7737af0e4df07e13e20f150296370e111879c09c2e','15c9f81424d97e28fc5d40b9f74edee6bed3f68f8c81dcf572cbd786626ff353','3dd740a2c33fcd52d89bf51c09e7df422df4430c22d5450e4e4dd84be038b8d2'); +INSERT INTO blocks VALUES(310338,'97944272a7e86b716c6587d0da0d2094b6f7e29714daa00fec8677205a049bcd',310338000,NULL,NULL,'31bea50c6481fa982eace70df5fc13d2981f1af13962809e3492b493a0dd4905','ee8efb364c79aae62d48d0198d7ca348d71f312eaef01daf906fec89d2fe9166','ba87d74e8a27f01bac80391b73637530af058844a4a42b1e784bfb05017c993e'); +INSERT INTO blocks VALUES(310339,'99d59ea38842e00c8ba156276582ff67c5fc8c3d3c6929246623d8f51239a052',310339000,NULL,NULL,'6605ca3db3c509fbc8574f2e10a3f981e2ff17b2812946ec8f2b1e49ba44f220','af5e50fc6a529fb06423c8ad7beed13c6e1de1c3f746f53dcedb7af76e0d95ff','13424b1524cea7335f977de29a3d82a036c9055f9293f754213503ddb5e62c70'); +INSERT INTO blocks VALUES(310340,'f7a193f14949aaae1167aebf7a6814c44712d2b19f6bf802e72be5f97dd7f5a0',310340000,NULL,NULL,'7db1ad1952cac2dda86fff6e5f939010bb30a1da26af438d354e17f423d5bf1f','f42c5c43148a61dace7d50127d905f236ad738774c20d4f874fc3b824b58cf92','a87523972a536aecfed83021ecaf5dde00a2d73b49aeb6ae914c3af6473c869e'); +INSERT INTO blocks VALUES(310341,'6c468431e0169b7df175afd661bc21a66f6b4353160f7a6c9df513a6b1788a7f',310341000,NULL,NULL,'1a1eef01250d2c53a1b34a8ee5b1e8fce984c3d47d28c544c6e162493b51225b','5fcdf7ababadc89a26c3833bc8b819642466504b58323cded8cdb8a904239ce6','8b894471f788e35078e9c5594d4b4c5a9bfb75fd8c14c319f624bb6c09e9d069'); +INSERT INTO blocks VALUES(310342,'48669c2cb8e6bf2ca7f8e4846816d35396cbc88c349a8d1318ded0598a30edf7',310342000,NULL,NULL,'3c85c0b825985b04b42137da7e59fb3daaaf9e65b871b79390a4d8b31be5da92','b165c708026f386ddc7206518e594fcef7b5782fa0db77db6ce5b02e3b563145','003ddc5ad7c0b3b4dd02bab6c8e312873eaf569e0b672021612178acc01d9c33'); +INSERT INTO blocks VALUES(310343,'41a1030c13ae11f5565e0045c73d15edc583a1ff6f3a8f5eac94ffcfaf759e11',310343000,NULL,NULL,'26f4ea323dd31b715c7a7f4ab8f1feabb199333a8494449ed538ff13215bb3b2','37808f9fb4ad766c671be7e9703aa7c7ea53991fa838400536d25f304ebe8090','a96cdbabc14588eb63ea872dab5e4611d0388a9cda6f76b146eb3bbff6988293'); +INSERT INTO blocks VALUES(310344,'97b74842207c7cd27160b23d74d7deb603882e4e5e61e2899c96a39b079b3977',310344000,NULL,NULL,'444314748cb1fa1c836b3b4de65c3920c7fe446741193e5f77843affe3bee908','52dd50744ce4773a3db8dcf016a392a133ff7ebbeaf293d4ecb4a32fcc575a19','c023bab2f994984969b12abbb380bfc16e978fe7af9a479f252710b72487c083'); +INSERT INTO blocks VALUES(310345,'0bda7b13d1bc2ba4c3c72e0f27157067677595264d6430038f0b227118de8c65',310345000,NULL,NULL,'d1775816bb104187076be74e78e87fc6d367c3cb31d372329aec2b635002ca2e','15f4f9eb55ff5d2b8efb40a57193f253470889b1fb2f532f02b66d236bc902bf','7b39e441679ed6d00705070a04888baa60ef8e27214f7399c25f478f6dee965a'); +INSERT INTO blocks VALUES(310346,'0635503844de474dd694ecbcfb93e578268f77a80230a29986dfa7eeade15b16',310346000,NULL,NULL,'3244eed1df8ec4ae0ddb04f9f6e59e54244ca3df10dc21fc89c99c74ba734781','58faa47bcd277d0d52d39a46473882adc797797cf2c30967418fb4ae832dc21d','ad6302d6a1c866a6a9f12e0b83dc354194d9a3c89d69dc729ffa323ddb44dbbd'); +INSERT INTO blocks VALUES(310347,'f3f6b7e7a27c8da4318f9f2f694f37aaa9255bbdad260cb46f319a4755a1a84d',310347000,NULL,NULL,'6fd1802c269750b69ec04df457d47cd6b44c261340ebd5b4da61f06ede6aa166','716162f3fea6641e6ac697eb11880c5b39903de4ab30fa24e899e363d5c1d9cd','65567d45e29c2768dd001d35c4e5cdd397a0793fb4ac525243d6030e927585c3'); +INSERT INTO blocks VALUES(310348,'c912af0d57982701bcda4293ad1ff3456299fd9e4a1da939d8d94bcb86634412',310348000,NULL,NULL,'668330e80a23f499c0e91b01c4c51aab393813b840f81b6b672611e391699faf','8c169d593d4c922ef7d3f530f6de4da37c01716f19ea19b48b122a6135f3e293','c102b403d780f0ce4a1e408f7053c9e641b3a4281cbde5da86175521eaa9156c'); +INSERT INTO blocks VALUES(310349,'ca911c788add2e16726f4e194137f595823092482e48ff8dd3bdbe56c203523c',310349000,NULL,NULL,'32b36035ac1684e93126657ecd9711feb689672f64cceb03d220a8089dfacf12','8d54849ce08f65fd3dd06baf845e5a3132b84c960e6f316c4bbbbe5a3d2b7b01','a3c93a080c7d4ac05b8b780f333697a6ac142bde91cb0886e91792fb8c4c5299'); +INSERT INTO blocks VALUES(310350,'c20d54368c4e558c44e2fbaa0765d3aecc8c9f01d456e3ff219508b5d06bd69d',310350000,NULL,NULL,'dbe70bf3b8e4b74ac25c1b6737b6a760e6a06a4f96ee83a5ca728c8501d4af05','1e46f66542896fa2ff6048472d49feed3065a6fffaad639da03027b00ce377bf','5f1cfcce7130342905d43fb129f7df47fb21588952b9bd48e6b75023c36c2ea8'); +INSERT INTO blocks VALUES(310351,'656bd69a59329dbea94b8b22cfdaaec8de9ab50204868f006494d78e7f88e26f',310351000,NULL,NULL,'89bb7ea865a221a3646f78ea774a7cf1e15e8d65b85ddcfbdf87773145904151','f99c452388cd3d8aa59f7c75fa06770a116b5f69263dddbb7b5fdcffc7ffc524','1279a7460cb68e822281a28fd27b82ec91f2559917c8c0f8bcebfbd26a6ca8a1'); +INSERT INTO blocks VALUES(310352,'fb97d2f766a23acb9644fef833e0257fdb74546e50d9e2303cf88d2e82b71a50',310352000,NULL,NULL,'fdbf27d576a72b046776be0e5c0a91d060619778aadef3df1d30f1a7785a0fdb','1d2f391bb7990954e14c69c9429b54b9f5a88791ec4b2fba2facb464152417f4','06a43a7b50b2627b5e2b6b8bf3fdcac969f9ae1f5a5d2f59afd946258c5b7f63'); +INSERT INTO blocks VALUES(310353,'2d3e451f189fc2f29704b1b09820278dd1eeb347fef11352d7a680c9aecc13b8',310353000,NULL,NULL,'73429d323376209447edc6d2ddbfd51f0bcde21736ea6dad61dc96b6984a1fa1','8ad1adee999dd851e81025b31920d1f0f66c1e56433e7b2b110d03cfccd7a141','09302136df1d739ec72b8916d095a402633cd2e7bf1b08d626620ec1c433fe11'); +INSERT INTO blocks VALUES(310354,'437d9635e1702247e0d9330347cc6e339e3678be89a760ba9bf79dd2cd8803e0',310354000,NULL,NULL,'b2bbcbb6a7db94b2a5681c6e380ac13480bb49c29a3fbb3c7c1eb740f70f8324','8d6870632f2336908828a72e7445c9d8ecbec3d420b234dad2b17ae06c0a709c','d6f68866f299e8abb809852ea45334c2875b860d3f69ff428516cb41dc79cef8'); +INSERT INTO blocks VALUES(310355,'ea80897a4f9167bfc775e4e43840d9ea6f839f3571c7ab4433f1e082f4bbe37d',310355000,NULL,NULL,'ccbd3ea41587c3c1d92f355979b49c5340a0a90060f07c228c22d6ff76b25579','8dfb02eb42bf84a085d150a0dc3fb2effa201594da47639e8f77fea0a7084eea','1477f22dd0bfedc575c5774665bf058aee34f74a7c086c52f26f8b979ad241f3'); +INSERT INTO blocks VALUES(310356,'68088305f7eba74c1d50458e5e5ca5a849f0b4a4e9935709d8ee56877b1b55c4',310356000,NULL,NULL,'06a95d39e110e40ba318320d50984096cbec88c680f426f721154555efc2561f','3516c2e9b180883b3526ee0a028c6d22b2a8a028b896423eb71db31cc284d566','5518645d03a16c710c7066cff85bb653fde14b162830a46558d783c827ae9ab1'); +INSERT INTO blocks VALUES(310357,'4572f7f4ad467ef78212e9e08fa2ce3f01f2acc28c0b8ca9d1479380726bab1f',310357000,NULL,NULL,'443f947352e853367d1c10d25771c7d78eec22fac19c5bace6f96b8f949e264b','af4dd2cd8426ceb8c7dacc24b30d4d48e1152340a5a81f32b745878558969f4a','92f7ec2d864b302597e888a48c212fff3c5360a16064fe26c42274e33ba03995'); +INSERT INTO blocks VALUES(310358,'d5eae5513f1264d00d8c83fe9271e984774526d89b03ecd78d62d4d95ec1dea6',310358000,NULL,NULL,'c2cd71dc9e7d5ccb5d5e9d6b55c47010c9db6a573d01820da1c8960970fd571f','635f90dc6b705e3e5928101d6ffc32a247088fd8965e0e372358b35ba822df31','338eee7d4c6986cf687d6f152c4453c4c579c2c9c4a9f052fea9b4ecdf71f004'); +INSERT INTO blocks VALUES(310359,'4fa301160e7e0be18a33065475b1511e859475f390133857a803de0692a9b74f',310359000,NULL,NULL,'5b7646bafc6b11eb1554ea1e02221883043b435ae973c3678505fa2128aadfb7','eeec8a86b03a3973bdf5215e1789277ab7aa4c47f4e9f05a44a312c01e0ccf0d','be11e8f0204e857b8475d9b6bc62135a8d6ed5a10561e834b2c89c2de87c78fd'); +INSERT INTO blocks VALUES(310360,'cc852c3c20dbb58466f9a3c9f6df59ef1c3584f849272e100823a95b7a3c79f0',310360000,NULL,NULL,'b0e937568a47c244e3b29cfb3a5e7196c171acc1565c44020345c715b7774658','32f4991609b3d8cbddbee2fe5e7aff49e7d4f5334ba0d283893733f19d3f448b','1c0b61ff88ef19a2040963d71644c3197f3d76cafbd756738e5f9963d3cbbbf7'); +INSERT INTO blocks VALUES(310361,'636110c0af5c76ada1a19fa5cd012e3ee796723f8a7b3a5457d8cb81d6c57019',310361000,NULL,NULL,'fd5b67bb571f4e9c0c37c6a5c9e1181133c301e05f4f97a41bd827eda7a6db3c','4ad763ba9a9de4e6fd2f48d1342b9c2b4f87224fe591cddcf0ea3aab19187ab3','354b075b0db70c64bc9a801de34abe50b41b3b255cf127df30713217b51d46c4'); +INSERT INTO blocks VALUES(310362,'6199591a598e9b2159adb828ab26d48c37c26b784f8467a6bb55d51d7b6390f2',310362000,NULL,NULL,'38382cc090b349809c4798c3c83b485f8ff682fd5b5b2568357d62ef30f7c046','2eed1cb542570837b9e34c5ef140428d09c132369e5073061d9b1580338fad97','66632a4c85b049bbd4b30f4c8e48e0d4c5378351b824e4243afa6eb39d10a3c7'); +INSERT INTO blocks VALUES(310363,'a31967b730f72da6ad20f563df18c081c13e3537ba7ea5ab5d01db40e02647e6',310363000,NULL,NULL,'82911a691937d87629bc14e5294f68a25ff2fc6512370db032834b85a623d5c3','baa8c23f6f8bbed9640382166a4fa59eba156a3c94b645334124a57ad886136d','1ab5f20d280349d31350d6efe24df8d820920a4c6da61ca9c374971267ed2f90'); +INSERT INTO blocks VALUES(310364,'67025b6f69e33546f3309b229ea1ae22ed12b0544b48e202f5387e08d13be0c9',310364000,NULL,NULL,'cc362ce4c2142e539057430e2dd6402b985c62fefa4e4ad33afe1305f53af8a4','973037f8124687eaeba2e9f3e301cb20b9370bef4acd3f2c86eedf595b792b73','c336a6582c3e9f513b8fb92d1924fedc8e8248a40ca2297c3f644c786f09a23d'); +INSERT INTO blocks VALUES(310365,'b65b578ed93a85ea5f5005ec957765e2d41e741480adde6968315fe09784c409',310365000,NULL,NULL,'49e41f95f081b70e3f540fa22864cc4f229ceabfdfd54f2da112f1fd35466617','aa3e39acb1dc1a955f579a9a40961a80319c5dd484ddf322ca6edc6b67cec932','859b3db53c1b503093a1825596d9fb0cf381356c2bc2966912b7d52409c15425'); +INSERT INTO blocks VALUES(310366,'a7843440b110ab26327672e3d65125a1b9efd838671422b6ede6c85890352440',310366000,NULL,NULL,'687c5f3e381d164499126ff90785e3635c825db3808267d4de2ec0e37cc7c597','610fbd2d8f4dad57d7efca0772534da791785cb2c45de1906a9b282792faa9f8','4b0340b110d388f39e8d25e0ea18a032d942e3c6d0c3c4f152978c7e794cfcfe'); +INSERT INTO blocks VALUES(310367,'326c7e51165800a892b48909d105ff5ea572ff408d56d1623ad66d3dfeeb4f47',310367000,NULL,NULL,'d7fe976a4b2cca2e23d082a703ef4f4739e110ce1e0a373e76064f6186856ff7','531453a70483611396ce5bacc17e22125b1b61f61d56c110fb72a929b95deb9a','4185f8a927cb386021808e33c719085d83559fa49d2cfd50478e4a6abc60cff4'); +INSERT INTO blocks VALUES(310368,'f7bfee2feb32c2bfd998dc0f6bff5e5994a3131808b912d692c3089528b4e006',310368000,NULL,NULL,'97f0a0f9e6f355dd179aa2941412decc1b0a06de0dc14dce8538aed6e35d41ba','289eb338000f45b4d7e143a08a490fbee8d307eb0975f5a2ed62586c2f625e0e','f1b8d32e9dc5312846a643fff3e9c541adf9f04b6615719a107900893e587571'); +INSERT INTO blocks VALUES(310369,'0f836b76eb06019a6bb01776e80bc10dac9fb77002262c80d6683fd42dbfc8da',310369000,NULL,NULL,'1b5d9ec9bd918c84a5f9b6882c94a739cc1ad1362dedfbdf7b2009fd42251d66','a9122294ce4ccd606d3fa1787fb9c44f25811fb2fe486c9d58b407b5da50dd8b','835c5bf57865bb24574658e88601e5cab0b0756267ea238606d36e3c2c307cd5'); +INSERT INTO blocks VALUES(310370,'9eb8f1f6cc0ed3d2a77c5b2c66965150c8ceb26d357b9844e19674d8221fef67',310370000,NULL,NULL,'578b039ed2b9a25e1c75ad9a5242c5962d6645616dc53fb08386602e40f14486','d61d958644caab04dc236d04d3654abeb1fd625dd7b9cdc01ca5caeae9b41f58','c45d36d5dc7493948bc398122180528f2dd6410b81c3f8018fffdbbdb6629052'); +INSERT INTO blocks VALUES(310371,'7404cb31a39887a9841c2c27309d8c50b88748ed5fa8a3e5ba4cc3fc18310154',310371000,NULL,NULL,'473d21b8218a2b02f7fa0d5daf114fa988e4a3d97c33aebe97e51a8d22252492','8abb7bf5c66895fd9e9de804ed8e35b3b1d12054a4e45ab3df6cd41194d836e6','c3828b3db02795c32d1ac0a662db515aa5c2fd31e7ac88c7aa56a0d96dd10d8a'); +INSERT INTO blocks VALUES(310372,'d3a790f6f5f85e2662a9d5fcd94a38bfe9f318ffd695f4770b6ea0770e1ae18d',310372000,NULL,NULL,'0c306eb25702d190ce32cac521b1fac9b8a7cbcf441fd74be8de2e002b4ce14c','ad3d52b024093fcc5b88b7a3176c4117468f0f675fd9e908c727ebedc5e2eff3','6fa5363d267fcf795706c98e1ad3dd41104b0d042a1659b6fad1e8550252768e'); +INSERT INTO blocks VALUES(310373,'c192bec419937220c2705ce8a260ba0922940af116e10a2bc9db94f7497cf9c0',310373000,NULL,NULL,'48d14b17f9074ce1f75ab32581e8f6fe7d518ebd669af6508e5d986d97c92b3d','b60270d322c86c6452289e0968be64c2217ebeec34944e43aef908e119f838ea','f7fdd5c106deff5cb8571e040998a22b1d610dc4502256b978ddcf3faef08aba'); +INSERT INTO blocks VALUES(310374,'f541273d293a084509916c10aec0de40092c7695888ec7510f23e0c7bb405f8e',310374000,NULL,NULL,'aee93917f6fe0046069aaff48d5d1875a9c4451acec6562a377428bfb1184cd4','46decb141683d0bf4c52e4f756b955c923bfb3995025d0f19a8ef7cac1dd2b60','ef6c754eafd7db3b6b5f56dcc52075e2fdfb41014e14f43448d07cc2a1d0a84c'); +INSERT INTO blocks VALUES(310375,'da666e1886212e20c154aba9d6b617e471106ddc9b8c8a28e9860baf82a17458',310375000,NULL,NULL,'2b0d74911bba5c9530b69c04fec512fe4c5df25458e5237db884586a221fa30b','9349961eeb706cf083d6ef1fff69cc871def662dd23fd7854135c1b0dc1a78fb','f1f1ec5110fdb670657e283a210960b6c7a6a9dc945d2ab846259e32126e4af0'); +INSERT INTO blocks VALUES(310376,'5dc483d7d1697eb823cba64bb8d6c0aded59d00ea37067de0caeebf3ea4ea7dc',310376000,NULL,NULL,'a6f84afe2845ba2fa4e5e7377b1d4474dbde6dfc9c4bed050e6d10cc80025e82','a5f607569f31beb9ba2a0496a9eb2eb40a6926df4b174161b73f53719ad04767','3bb9bcb2938ac7ace27013dbdd6f3cf621dd4bddf422d34aab1c7bb30934a615'); +INSERT INTO blocks VALUES(310377,'f8d1cac1fef3fa6e7ad1c44ff6ae2c6920985bad74e77a6868612ee81f16b0b3',310377000,NULL,NULL,'e006e13691719e4fce65e72c692d3affeae8ae465de2a3b285a1bed4eb518a70','4dd3a5ae07e934557005871e7c72351077b1092580eadda11fcd3501bb000579','a10b4025e5802ad98bb0fb309cff6fe8739b273be7bb710dd27f81f37c06a25b'); +INSERT INTO blocks VALUES(310378,'fec994dd24e213aa78f166ca315c90cb74ee871295a252723dd269c13fc614ce',310378000,NULL,NULL,'607ffa4928577b82f275750353fcecc2e50098d227f18bb8ea95ac2bbb10eea6','49533405fa36a389e0d8cac965389e23eb421da5833d625d160f75fa9defdeab','bffc7ece240ef47dfd29d28e11882b9e87114c5950f2e1a7f7b56e849d1b8980'); +INSERT INTO blocks VALUES(310379,'d86cdb36616976eafb054477058de5670a02194f3ee27911df1822ff1c26f19c',310379000,NULL,NULL,'9f17e8d662dbbfc12a56dc36172b3154bc9b05a87885d1411826481e1ca4f6ea','4514a78a69d0987ff60976334f70d0533a1c5726099ae73d93be187a57f25f44','66f382068ec1276e01a17254f1631aa531e9ee931dd799a40a2e85ebecbc92df'); +INSERT INTO blocks VALUES(310380,'292dba1b887326f0719fe00caf9863afc613fc1643e041ba7678a325cf2b6aae',310380000,NULL,NULL,'d617e30e1a32ed1cf269a190fd4c843755413492827546a0b3ed14278f817532','77038e6b75820a64c9fc9530b3d2c8411cc4da649fc69a3d235424c2dd5500c5','ef13172b58bc99c618ebed517a661a1f922b092f7843d6daadbfcd150dfb42f6'); +INSERT INTO blocks VALUES(310381,'6726e0171d41e8b03e8c7a245ef69477b44506b651efe999e892e1e6d9d4cf38',310381000,NULL,NULL,'8af8d819f02927de4a74d3d37dcecf6e5124d53be37603764b1b1adad13b0d7a','48b66540bea91d2c2d216d5c13e88dfd9c1f1a36cae2ec721253034041e63af6','7e0ef6dd294b793ae92490426381ca311e71aa3d3137698dde64c71d9f00916e'); +INSERT INTO blocks VALUES(310382,'0be33004c34938cedd0901b03c95e55d91590aa2fec6c5f6e44aec5366a0e7d8',310382000,NULL,NULL,'809d5c20335bbefe8e4f3552e24b24d96f6ee4ab12f3bfc9e74898371cf69797','159e8434abde33d3a97a4e7701cafec884a6d0d7ad78852ee7db449a18c5e23f','75a00de354e330048b6cd964582024a1c99f9df7d33341ed70f81b7b754e5b6c'); +INSERT INTO blocks VALUES(310383,'992ff9a3b2f4e303854514d4cad554ff333c1f3f84961aa5a6b570af44a74508',310383000,NULL,NULL,'d8ec301994a5333f8efe7cc547a833d26c6766deb0b39c4fc18d1bdb470ee903','aecbe5619daf47a60ab2765502725a284224c0985e91993b212c50c3449d197a','72ac00be3c14c6de8d99b78bba29f897ad7f5f08ebb012c48cd46fdb771ff759'); +INSERT INTO blocks VALUES(310384,'d518c696796401d77956d878cbdc247e207f03198eabc2749d61ebeadee87e5e',310384000,NULL,NULL,'fe47a03993cb9079a6e72810552d631fe838bcfaba3b34c73c9948af77266df2','e69bc390fb0a624f6d33512a55e9732857afee1b114df97761186ac648f63111','1cee6067a92522fe72bcf2bd3344447cd46aa3be97d2234a2780e6a6869f1788'); +INSERT INTO blocks VALUES(310385,'2aa6a491a03a1a16adbc5f5e795c97ec338345cfdf10ff711ffb7ac3a0e26e28',310385000,NULL,NULL,'6114e98e0004cf0f9472fce6bfa6bb99ae38e57214c8b134f30da1d62399f6ef','d3e6a4df9ff34518f8fe243dc87c981aef0cc7b89ff9ca466269a19493aeaecb','5cf497d09ec075e85b4b6e575e25e3ddfbff53680912d6089f68ba5bc6488850'); +INSERT INTO blocks VALUES(310386,'9d19a754b48a180fd5ebb0ae63e96fa9f4a67e475aeefa41f8f4f8420e677eda',310386000,NULL,NULL,'4c52d59ade1bd2068e3b75b8b3cd1d23c6a94b6437f7966d10f5a07bf8f630ff','1c250ef18892c191c535562bb35bb1c8bd4f515ab00bc4cf0b564436b2bd33ee','26be3bcdd7f49c67fc010fa423920d131fe9a6760327a5ef9cd9bdb75d44c737'); +INSERT INTO blocks VALUES(310387,'b4cac00f59c626206e193575b3ba9bfddd83bbfc374ebeb2838acd25e34a6c2b',310387000,NULL,NULL,'327e9a842233568888998ec1456b6f78c093b47639707d44e6336b2bc18d955f','d7de64dd98a65b478518d909b1f0f2860f6a0b8e5e530f23ee55caffbaf1a545','b38ef8d93be3303fcd4f9c5651dcf53d2a4de77c31e442a01c91e3f79ce05303'); +INSERT INTO blocks VALUES(310388,'41a04637694ea47a57b76fb52d3e8cfe67ee28e3e8744218f652166abe833284',310388000,NULL,NULL,'6efaab188a5cae39ef547a804f61bcbc2be4881e0569f49d7622b407f6860401','4916559fdc472a474aa4c652c85b0db143744daed0d98d7f2fddd1dba32be88e','9479b126e03a3aebf28ea4f6c3df40587d1b6a5933b0223d5a699f56925d4822'); +INSERT INTO blocks VALUES(310389,'3ec95ae011161c6752f308d28bde892b2846e96a96de164e5f3394744d0aa607',310389000,NULL,NULL,'89c686d5d973691a7281268c867f837b86b140a05f16f12302a3cdeb3b6a0ee9','b2e0098e42f81a8a9369d510b17be67446feb3e5da1b1eb37acd9f0b33b29fce','12e3eeb2b9c2627e5e66fef5b03d31032699a3b23f2e476d17ddfeaee93982b7'); +INSERT INTO blocks VALUES(310390,'f05a916c6be28909fa19d176e0232f704d8108f73083dded5365d05b306ddf1a',310390000,NULL,NULL,'2c4eceebb94d0c7a7702478d9547d1afbb42ab5ecb5ae6271a3f69942bd77e50','8e3a48b160083860b0928dd97150477980da9097945c4ae3ee144c505f131b86','cff919c4f794ddf47465bf4575e83cd862f9d213dec813a6a11c1b46e21c7969'); +INSERT INTO blocks VALUES(310391,'fc26112b7fdd8aaf333645607dabc9781eac067d4468d63bb46628623e122952',310391000,NULL,NULL,'06397124ee2a1bcb9104899469394855d4ecccd1a08626d650bdf3169e227831','b1b4f0fc9ba54527ea0902192a61158bb5383f1959f187915c07f88bdf11caaa','ea8ae8e50a84b097600f499085d1f1dc3f5598714403bbc839015108ab92ab80'); +INSERT INTO blocks VALUES(310392,'f7022ecab2f2179c398580460f50c643b10d4b6869e5519db6ef5d5a27d84a1d',310392000,NULL,NULL,'44974b5fec0be3a2958d39f2d6824a2e82733f873a404ec9887178c620843149','97a039be078662ac5b1a275d5618224c1a90886c79b9fb651dfcb14481da8e8a','434c2762a4ddef0ebf90a96e1355fbb43a75b0fe86d70f0f8d7fedcaafb1aa0e'); +INSERT INTO blocks VALUES(310393,'e6aeef89ab079721e7eae02f7b197acfb37c2de587d35a5cf4dd1e3c54d68308',310393000,NULL,NULL,'1863677c0e552344607b1af3eb8ef8f4fc6b2a73d63eebb3e9928302c887970f','c488dd61c64182cdc779e96a2b312463d42ff9829d1d518c8a9daa1a4cb26de3','5cb6a0293dfd854f3a45ce2e5c7808997800c9e4e70f9c5025b8217d5785a1b7'); +INSERT INTO blocks VALUES(310394,'2a944743c3beb3bf1b530bd6a210682a0a0e9b0e6a9ff938d9be856236779a6f',310394000,NULL,NULL,'3838ba6e84376ed8dffb3fee9b5928d903952c0d8a8ad41ab63a9651a1c8c770','e329db30a579327664d135ce9c3661a259378dcc12e179232599e0186c7bfe91','028f524a10339795063cbd61648fbee24579bdfb9b0135a01756bbfc9efa13db'); +INSERT INTO blocks VALUES(310395,'19eb891ce70b82db2f2745e1d60e0cf445363aaff4e96335f9014d92312d20e4',310395000,NULL,NULL,'872367d61f81cddeb555da5f9c4f46a8ac57c24629ab073094e407a4555a8555','2234b36f4187eb0da9ed6a633aa2e15075d5efb23f154963885e7fd42495e4a5','9b06b7d54cfe8e8946cb98fa4ffed469133dfc5ec24043b5874bfeb029bcd2a4'); +INSERT INTO blocks VALUES(310396,'aea407729ac8d8e9221efd9d70106d14df6aaf9f2f87dc6f490835a9caadf08e',310396000,NULL,NULL,'b9a9eaaf1cf6cfa4ae5b0f314812a9a2346209da0b7ce57e16010d2a01c0092a','25946162b9af068438633980c75eaf9e508144f603f7a913de56cc11a7a482f6','d95291b9e836c797f5d30a8ca7dc29eaa8e6c95072c55625e3bf2a61cccb8d47'); +INSERT INTO blocks VALUES(310397,'7c429e56a19e884a8a77a759b52334a4b79404081b976270114043ba94d7985c',310397000,NULL,NULL,'b61f36bcc934a18fdccf7806d41482684ca129801d0b9ce7815dcd488fc49a66','e697fb2f445f03a1d895b904be58a554af4c26ed74a65eb0e52c98e490efbd44','bc2f21cd5a3dff3b3352b5436a9716b91ffcc04aa5a3575446f41412ceaaea32'); +INSERT INTO blocks VALUES(310398,'55c046db86dee1d63c0e46e6df79b5b77dfd4ab2ff5da79e6360ce77dd98335e',310398000,NULL,NULL,'9446476e123e5dd354682c60591cab8b712c30df9080dde756246eef45e21df5','0d20ba449b95f7d128c8b78ef2a37ec390e6177b2041a2b035a72cb8e6062ba9','e1849c27b605edd12ec6b429d59bf4cb4c2d084da5b7614ce3b475261bd20dca'); +INSERT INTO blocks VALUES(310399,'765abc449b3127d71ab971e0c2ae69c570284e0c5dacf4c3c07f2e4eca180e7a',310399000,NULL,NULL,'50d288bca09d446f56544fb1ec50d613bdf156488468ac92d433425a3cab0804','82214bf1638d82e5b66919990e24d3960eb02a423bb3f36bcdd730b17267e340','681fffa3659a2a9810247bcfc5defeed11edae487be1a3e6b83dbae44cb3a33a'); +INSERT INTO blocks VALUES(310400,'925bc6f6f45fe2fb2d494e852aaf667d8623e5dae2e92fdffa80f15661f04218',310400000,NULL,NULL,'349a24fd446727bb1793ccf88fc569d20eb680c10e506fc25b281ce6ec3fd7bd','e7ce5e8c9c4160590dcdaba04bc866267a9784f99fe68bebd337da16768e8f18','a1a715b25e361c43222dac45cf437ab128110770242f4f6763b9eb6fa1bc97d1'); +INSERT INTO blocks VALUES(310401,'f7b9af2e2cd16c478eed4a34021f2009944dbc9b757bf8fe4fc03f9d900e0351',310401000,NULL,NULL,'52c06b68cad19608420b73476a73b411d0327382b92bd454cadf1b8616eb17a5','6ff1e13b2110c6ee69e86818bd32bacdffa6f4e91fd2d8c2b09b5db35062be81','56efd387141cfe562ef470b6768e8df8fd05a43781b660a44af2eb325df4d439'); +INSERT INTO blocks VALUES(310402,'1404f1826cd93e1861dd92ca3f3b05c65e8578b88626577a3cbad1e771b96e44',310402000,NULL,NULL,'8bf64213a454c62dd4b0dcd7dfa298da0244a6aa7ae6fff98be6f49d50d259ab','3e776187716a384a84170b2e7dbbb5c152d98535351c1f5b4b00c7bf5ea7ff33','c10cb4ef7d37a4bac14f7fbd84ab133011bedc4c14d8f4aed6ac9180f9dac218'); +INSERT INTO blocks VALUES(310403,'f7426dbd4a0808148b5fc3eb66df4a8ad606c97888c175850f65099286c7581c',310403000,NULL,NULL,'fb2a365372522d1442792cb38e1a4167eda2612ef442c776749097a3d541a827','1fad731787bca55d4102d8d355ccb9625590baaccd0ae63490320efbf5aaf90f','1ef5d5724200d2ecb9b9ab48f2a52aae19752c002bc8c1978a0e041d2baa2c4b'); +INSERT INTO blocks VALUES(310404,'401c327424b39a6d908f1a2f2202208a7893a5bedc2b9aff8e7eda0b64040040',310404000,NULL,NULL,'47f96d798df9cad17667be908ebb063ab9f79d947784a78189d247e626864a5f','10b2cfe8ebe45dac311048b4aa8d15d7c59ae17f5c1a0c132cfb675d893de8d5','3aaac91e9d2c2f1e81c8e8644baed1cf20e4de7e164d46d5c08bb2066af3ad24'); +INSERT INTO blocks VALUES(310405,'4f6928561724e0f6aab2fc40719f591823ca7e57e42d1589a943f8c55400430a',310405000,NULL,NULL,'185780205a9ab241bb0656799fd0d5942c1e3e5854abd1d06573da550b04b096','8cbd52dd97944b34f080d675a51360dafcd38183cb08633e6ea247d2c5074435','2db56935e136754de568e268f25e94ebb5b652299537fd7c153c8cac7728bf58'); +INSERT INTO blocks VALUES(310406,'6784365c24e32a1dd59043f89283c7f4ac8ceb3ef75310414ded9903a9967b97',310406000,NULL,NULL,'367b9de2313c5f7fce0c2dc2b4a8e2bc059f6881bc924f7315e8e2ca61728a59','0d104d4ce44d11e581f51e5a33ec9e35a994b2b992842b173fb8a2756412b4b2','17c2e3cb7f244ab92d9e4e3e64232a82a24a51cd935d6b66617d2f581ac827dc'); +INSERT INTO blocks VALUES(310407,'84396eb206e0ec366059d9e60aefdb381bca5082d58bffb3d2a7e7b6227fc01e',310407000,NULL,NULL,'2bdbd79575aa2ff52ba0cce3fc1a1aac6120d598a8ab0ff3925e1395e6cad2d1','a3407057dc90723c90ed8f2df5af7840e50daa4c4bdedd47181c17a1e8563934','e6c45352ecb23436824969e613f6088e929aab8a5917b7f8362439a376ec5cdf'); +INSERT INTO blocks VALUES(310408,'4827c178805e2abae5cb6625605623b3260622b364b7b6be455060deaaec2cda',310408000,NULL,NULL,'fcd0edef8c4ae9517a6e793a2742c598de38c122829b7a7aa265310417ac92c3','3ee1e7949bdb395a4e481f94344fccb2781abcb3f5d1fea2bbadb9de9228a426','f92b895eb0d82ccbb18a0c9498ea54042217e563b78072d8d32ffd17ea64a0c2'); +INSERT INTO blocks VALUES(310409,'01a719656ad1140e975b2bdc8eebb1e7395905fd814b30690ab0a7abd4f76bba',310409000,NULL,NULL,'5b663c40873af21ebc721f2689e2c57a2c787fff579c58f033bba75910a64837','68fbf3a110ed24946d1594f5a4de1dae9c4b6f0394188a71ab89996e9fb4e55b','d8d2e188e49a7055723777cf9226e033ec1eb1b706461d3655336d380a7c18a4'); +INSERT INTO blocks VALUES(310410,'247a0070ac1ab6a3bd3ec5e73f802d9fbdcfa7ee562eaeeb21193f487ec4d348',310410000,NULL,NULL,'93c5a33931b2a33933bc286d6987b34730c0677460e4875d5c032ae86c2e01f0','bd755bf0718d5a0423ec41a8ac84b1554751ff8f0a3f63d87e7e0f58aaa31008','6c4ce5cabb1c84cabf3d8e1b4273091a6e8cd0d4de36121aa95d82deb982dfb0'); +INSERT INTO blocks VALUES(310411,'26cae3289bb171773e9e876faa3e45f0ccc992380bb4d00c3a01d087ef537ae2',310411000,NULL,NULL,'8d98498f89619a2e334e9ac69bf8ff37251af6431d9bb6d1ea8bbc404c5e560d','103563dcfc7b9f149b6efdad7cae17b090d4a8232fd4c37fac7bcf942d784b55','b44cecf6daa815b12a6edfc41bd743bcc378f104ead7ff4ea9b970921bf7adc2'); +INSERT INTO blocks VALUES(310412,'ab84ad5a3df5cfdce9f90b8d251eb6f68b55e6976a980de6de5bcda148b0cd20',310412000,NULL,NULL,'a16a650c4b63ed783e7229980be1177da867c188a5039ed5c58b9717f6ccf634','4daa6f0799529346ba4ee87e2aed1450447921dfa92e785378fae39c234a7c8f','9760454574e345bbbdc638dd0c5cb7994d8a05c1793c52caa1094684c6805ae7'); +INSERT INTO blocks VALUES(310413,'21c33c9fd432343b549f0036c3620754565c3ad99f19f91f4e42344f10ec79bf',310413000,NULL,NULL,'768577c1a7c2cf2cc19cd8dbe823f1bdb8a222daee4c7ac7b5ead6633040c283','7ae9815341dccd2d1bff8dbcfdbcce4e52b4aac8f2fdd421348ed9f44cd19e38','dbada9f8d05453ce6de9c7a471e16ae9457d3312ece8ab151103d799ec905e06'); +INSERT INTO blocks VALUES(310414,'8cff03c07fd2a899c3bcf6ac93e05840e00de3133da14a413e9807304db854b6',310414000,NULL,NULL,'906c491f164877c31002da41233c237d0d4a945a0072406a7b7d13df74be7eec','807cd64b4d8ee3d91a5cbc651e42feeacd5248b6572310472743ca71a9f24621','9a3672293563dda8518404b36b5e38eaf8abdeed23921264722506e50a815b89'); +INSERT INTO blocks VALUES(310415,'dd0facbd37cca09870f6054d95710d5d97528ed3d1faf2557914b61a1fc9c1cc',310415000,NULL,NULL,'d27f99b4a67dfc910d3b932f97b7299779f245e95f871140d3c90f13cc6e506e','67fe947c260b3d8748887e94f68c3725664bb6dbd72187e9312ee48a42770ec3','c661a0a521e536d8fe187032daaca281feb2bc495660209cd80137f4bccd85a7'); +INSERT INTO blocks VALUES(310416,'7302158055327843ded75203f7cf9320c8719b9d1a044207d2a97f09791a5b6b',310416000,NULL,NULL,'90fcd04c508a9821e0ba0ed36cd7cfadd1d3c95116e3f52ad69f98d3d14de571','1041a17c5c146181a56da6ef17386814299be8a22c76a2b2f8a4a2768b2b531c','24f1065ce8aaf24c4431f4f7396be8d6992856cde19b185d6b7029e269cdd66b'); +INSERT INTO blocks VALUES(310417,'2fef6d72654cbd4ea08e0989c18c32f2fe22de70a4c2d863c1778086b0449002',310417000,NULL,NULL,'19cbb26c6d24df5b110a5aae9b53a911a61b2086dde926273a1b0f66c1049e6b','920154e272608daa3c501588cf0eee50c2c45a385d30f42711657ae4a6de3bf5','627f60e7d72b69de8253d8b20819f2160ece68d141fee6302650446704a56c7f'); +INSERT INTO blocks VALUES(310418,'fc27f87607fd57cb02ce54d83cec184cf7d196738f52a8eb9c91b1ea7d071509',310418000,NULL,NULL,'2dc971d2db4e92e2d5dcef124bf9cdad33c41a71d6ae3db80297cb2257911f0d','290826e9c72e49636370d0dad56ba1c2c9209d888b993e030838f84300c0225a','9c7c7dfc3f93d0e139663e97b4521d548a430a3431b599f32b4aabe177184041'); +INSERT INTO blocks VALUES(310419,'9df404f5ce813fe6eb0541203c108bc7a0a2bac341a69d607c6641c140e21c8e',310419000,NULL,NULL,'7ad2bf141622a0db4b27b1f4dab4857d1595e3f746a4113992850a680ebf1f37','d06653b493d120dd288637d530cd3f6efa1c8f5c252bb275572c1948ff0f3539','0097a8f5a9c329605e119fc5d665ce1fe52456e9ea117447df0f86e42bd8e93e'); +INSERT INTO blocks VALUES(310420,'138b3f1773159c0dd265a2d32dd2141202d174c2e52a4aeac3588224a3558372',310420000,NULL,NULL,'3602b26268d1bd3fc5f08f170e9767ff07c91f6976a1c342dc6b24f7ee98c509','ae8e61a57232c10bd15c655bb8c76007dcef394ba64d1619157ca58990e18c25','91b6c48a5b950cce7df1ceae7fef3223780bca655a780eaa96c13060b272be2f'); +INSERT INTO blocks VALUES(310421,'71fe2b0e02c5cad8588636016483ddd97a4ef0737283b5fd4ab6ea5dc5c56b9a',310421000,NULL,NULL,'1c1facfa3852b33c173a08d06450335a2b230541c60973a154e8dd864f3c3c8b','01bfd609f878bb6149779f6377d7868d5b7fa3b831f68cd757967b982cd09ad4','9a2114e704bf99c97717e262ccd54227704cb49ef71ab6e71d381cc46decc282'); +INSERT INTO blocks VALUES(310422,'cd40260541b9ed20abaac53b8f601d01cd972c34f28d91718854f1f3a4026158',310422000,NULL,NULL,'e788123aefd1129554fa2c166dbd06ce68f913730183ca73cf248c1f5284eba4','6577ad9a9e3889fb5eeac7fc9039af8d4537a8fc28b4a9de85e230f5d9da3583','e74e0b7e58d9c7a60166cbbf4e38e259e3b6e7b48975500f82273d5ae81abe28'); +INSERT INTO blocks VALUES(310423,'6ca0d6d246108b2df3de62a4dd454ff940e1945f194ba72566089f98ad72f4db',310423000,NULL,NULL,'ad445e5351af8739b2f74cbba8b44201c20ab55ad1db064402614fb97f35c375','dd7b66518e8ec22359df2d8ad4c0349fe4ab3a74620aaf2ef4bdc93a4c7e2d92','7b38a59b442521d976f66463d51a14f8c7c4e4abe8fed61ab6118bbe9cd119a3'); +INSERT INTO blocks VALUES(310424,'ed42fe6896e4ba9ded6ea352a1e7e02f3d786bfc9379780daba4e7aa049668ad',310424000,NULL,NULL,'e89872ed802fe4421844882958fe6384cf21a85a6dcf10db761e2bb4a77ed24e','bb05836e569bc4c85141c5b4d2832efa5a83ad519260e96d92f6ee16fe4a0c80','fff650f3d50508af819648d8d5620424fbac9b14993726e324cc2fb8e2483932'); +INSERT INTO blocks VALUES(310425,'73f4be91e41a2ccd1c4d836a5cea28aea906ac9ede7773d9cd51dff5936f1ba7',310425000,NULL,NULL,'29e595e9ac7717013cfc8d12255496192234abbddd8a66762a5eaff0c49f3750','2cedf78c9d13e32fde5792907f2ac9f409fe701740533b94ceab6b8087f790b1','1b4b7b19314030e08d4e78e641759198c30a6bf3dd3578bc69d40901e6cb2dcd'); +INSERT INTO blocks VALUES(310426,'9d28065325bb70b8e272f6bee3bc2cd5ea4ea4d36e293075096e204cb53dc415',310426000,NULL,NULL,'9b9509ce7b7bf380f4d030604810a755c71fabe27152be990997a6a9db37ff15','c037094c1947835fceefa8a25a81724d9c88191d5f5199d3a59339bd44407289','132dca78a6ff39667be8793bf902f933e86652c0986f60c88febeb8259c1330c'); +INSERT INTO blocks VALUES(310427,'d08e8bc7035bbf08ec91bf42839eccb3d7e489d68f85a0be426f95709a976a2a',310427000,NULL,NULL,'f1b834e2a380f1b9a78c592acbe78ec809220c620e15f296ab8d7ecea6cd392e','81d439d9d368279e97c8739243efb01c7027be218d831d93127364fa247aed95','54dfe1d9490a585dbc972c0e5160c933d4ccc3807d75226fc8078ece939798e0'); +INSERT INTO blocks VALUES(310428,'2eef4e1784ee12bcb13628f2c0dc7c008db6aaf55930d5de09513425f55658a2',310428000,NULL,NULL,'9e963a17fbc4a5c20d48094f1459959033520f92d7a8bc044b71bbffb8dd173d','002b7ac255f66476970512e50d7ca9cb5da695bea9763bf0379f8d8e6c77a71c','9dd22a33c0c291638ac17155276f5f088626b10ddea1faf2db6b1ee52848fccd'); +INSERT INTO blocks VALUES(310429,'086bfbba799c6d66a39d90a810b8dd6753f2904a48e2c01590845adda214cf8d',310429000,NULL,NULL,'ac8cfd965b9c53f32731a3e0fcdb6df5746d646b02c88b5201a674125e37eed5','4b68376b50d77145ada0ebc72c3eb43b54b4743b538dbc9fa2c914515882dbb7','046e2533300c7a8a1be57d43f5757063eb025ca874bc844fbe0ad7074b392f99'); +INSERT INTO blocks VALUES(310430,'870cf1829f84d1f29c231190205fe2e961738240fc16477c7de24da037763048',310430000,NULL,NULL,'33654e32dfd41ff3a5744b57fd2483a08a2b4729c18ca54c3ac5d95a1bf0ef21','3323c2d01e777caaca3eeaf6f2af8299cee1622589cbaf08f4d245356642d2f2','723df511fb009229f786a5947d3a9f8944b7dbbfe8531955cad2fb2228ff01de'); +INSERT INTO blocks VALUES(310431,'20b72324e40ffc43a49569b560d6245c679e638b9d20404fc1e3386992d63648',310431000,NULL,NULL,'ba8837c811ae87981cc37cb49438d958fa58dfc5a95824040f2fd088465406d1','67aadda0a565f4f5e2786b5007e56e2d10077e87e7d3acc216fe0803365b7b81','d910b858c078ab4be5465ed74fee5706835a9ab61da85953fe148194d72d61bf'); +INSERT INTO blocks VALUES(310432,'c81811aca423aa2ccb3fd717b54a24a990611365c360667687dc723e9208ad93',310432000,NULL,NULL,'7864019cb0cbbcd895154421183d6acb932b1d64441103b913d52469f656655f','c12942ffa02a5f8eaddf3e8e55ad0ea03f29cebd9e822e00c504c162cddd0471','2c4a12bdb6f95bf868d5344e35d3bf5eeca2f5fede2fdc72325b9f008848f32d'); +INSERT INTO blocks VALUES(310433,'997e4a145d638ad3dcdb2865f8b8fd95242cbc4a4359407791f421f129b1d725',310433000,NULL,NULL,'a6da92ef0df7d092de09f2f8d2c99ff65ad74e2a0bd2ea25f8335614372f5279','f0eefd9f81db595b07fe719a41e67e54fdb987e177f05d37040237db3be2a8a5','e2b7edad2ccfa2da39ae9aded4e1e753c7fcea4b2ce66ee6a9186aa539f5ffac'); +INSERT INTO blocks VALUES(310434,'61df9508e53a7fe477f063e0ff7e86fbb0aef80ff2ddedc556236a38f49ac4d8',310434000,NULL,NULL,'e288db28ac6a42822f85fd042f65b57378bc6cc2f8616edfa88143d7b1c9ddcc','173f8b7d2c581e9f088b3fb6e96ad2af597b172717d8f8732fd5857997f0f3d7','4114aadc1b7ac40e097304eb06cee018e683e78a93139e1cf766a4fa69c1af84'); +INSERT INTO blocks VALUES(310435,'f24cf5e1296952a47556ac80a455a2c45da5c0dc2b388b51d235a3f741793d5f',310435000,NULL,NULL,'e87af314e8d7a5f2315ccc559d7c2255c008ba63aff017696201db69344d423f','a4dd5a36f1aeee54e99bb23095b64707fc0b3fde5f64e33135429a100e4ea558','82df70c75951c7fc496789e29dc6e704afa1485b0d171ab3a23b292e1d7c3817'); +INSERT INTO blocks VALUES(310436,'a5e341ba92bdf9b3938691cd3aab87731eba5428bb61a804cecf9178c8da0c19',310436000,NULL,NULL,'82327b93bd3ffcdf797bc2f6470b9c8c5101e54b924ec5f141a31356aa8865c7','c6b0f05a847c30dd3f2d3f8cb7c26a84f1d005b4720a553f9dd8b717185d7f05','df0ac359c8e6a280be790745e166fa9743f1ab2504189c3f1db6c987a5f9cc32'); +INSERT INTO blocks VALUES(310437,'9e18d0ffff2cb464c664cefc76e32d35752c9e639045542a73746f5ec2f3b002',310437000,NULL,NULL,'70d86f9ef8df495474de06b94e1857693c73d9ca3528356b82553a52fdce0dda','809d60564fefff56688616b7fb96378d4eb425e5c8de36b34f0c9070935dac26','6bf8ff2ccd9244261c208d4eefb6ae1a3ceb281103510591a4ed2cb0e295b068'); +INSERT INTO blocks VALUES(310438,'36be4b3470275ff5e23ed4be8f380d6e034eb827ebe9143218d6e4689ea5a9fc',310438000,NULL,NULL,'44b90478e32373205462f0fb212da636b31db6dfb99a2b56923beb97a3a64722','2cf7695a3cea08358af8bd9378b1d6ad6c7223cbac01589042ace6c3cb312196','f80b3cefb4262772d2d31a98d684be690285fc649fccb2478cc686553623183f'); +INSERT INTO blocks VALUES(310439,'4f2449fce22be0edb4d2aefac6f35ce5a47b871623d07c2a8c166363112b2877',310439000,NULL,NULL,'66b791b9deb7d2fc8b075f41d712e300ffa9c46ca9d6f4e7cec6429ca6a65163','41f11f77910c12535fa183e819b36a0dda32eaafe0ae8016e2ce7c23d5c1d67d','b536503ccb5dcf52ccdd1784c56588ce9fa8fdba30a15f5f7ffa992168b7f1ba'); +INSERT INTO blocks VALUES(310440,'89d6bd4cdac1cae08c704490406c41fbc5e1efa6c2d7f161e9175149175ef12a',310440000,NULL,NULL,'5baa10e1659182ba4511f87f08deda38d5de3501c63efd376604cc199140d27c','c6762d7334806b6b62c3cee84f65346d1121493d3bc3f890af174c4abe4710ae','d6fd667b13dcaf27f1781dce1ae42a3bc506f7aee087147071570f96e2820547'); +INSERT INTO blocks VALUES(310441,'2df1dc53d6481a1ce3a6fee51ad4adcce95f702606fee7c43feda4965cf9ee15',310441000,NULL,NULL,'2d490229fead1b15a8350da7bcc83c483dae06e4a2f574c6e8fde248acd449d6','f9fcb16a928c44b86ab2af7407a2ca269455b144694a80927b9213bf8e7ac710','c852a7bf3239f6fdfd6629b1905b1c61c29fb6488db9f364ea5cf219e044af7d'); +INSERT INTO blocks VALUES(310442,'50844c48722edb7681c5d0095c524113415106691e71db34acc44dbc6462bfec',310442000,NULL,NULL,'a3728bacfbdd289b7af24248b9bdacd5643bd5412bb993f5380278631eabb9e9','5d2600af95413d101a9e3d98b2d9f5ea02cf1cf6a28bf7e96870e167638a7be9','6d0290337931ab72bebba228d181d6f556b7c76bc2e922c5ec61e4ecf871b310'); +INSERT INTO blocks VALUES(310443,'edc940455632270b7deda409a3489b19b147be89c4d8f434c284e326b749c79a',310443000,NULL,NULL,'d829da764f6397b22a6b97ef396b363ef2cf071990df2dc9c0d03806db6a46b5','4c595c9a60ccc98d2f6cd75c92c28333174c618337457f9c5ccf362252732081','9037ed8005f44f00795bd3570a81c2f31cc0fe8bfe2db0bbfd023e8a1d675d2a'); +INSERT INTO blocks VALUES(310444,'68c9efab28e78e0ef8d316239612f918408ce66be09e8c03428049a6ee3d32e4',310444000,NULL,NULL,'ef53249bf0f13e1f2073b815c8d8da3ab744b6d277b29ddbc0bd68bd006af34b','5ec6d64106ac1c65cd1dd2129c786aca3cf426c7a1b5f6a966b6684b37755293','5649cf99011bc4058a7d40a21fa722d454ec53218bc6c79d4ceaa7cbe40aeee4'); +INSERT INTO blocks VALUES(310445,'22a2e3896f1c56aefb2d27032a234ea38d93edf2b6331e72e7b4e3952f0234ef',310445000,NULL,NULL,'7e731cda90932b2b4844abdbc3ff60683173104e6c72ed81c65d9a17fd4872dc','6da5abcb8ff2a77c33c7c43061754d9fe8e587157a98e194157faf534d2ee9c6','c2f07f38a0d58f9ed8295020aa7f5091b26abaab8fbbd5cc9e23ecdcac7686b9'); +INSERT INTO blocks VALUES(310446,'e8b0856eff3efce5f5114d6378a4e5c9e69e972825bc55cc00c26954cd1c8837',310446000,NULL,NULL,'db55bac8025e95a567ba984f36dcb09357aa3e9b8706bb594e669b628d4e7204','e8efb64e8f5f867f1c0db99afa9f9a3e3a06d0e1d55e16e9639ca36c3bda5cd4','d484ab73d82954f0ebbfe6018a79467c2de4b87f41e26efcd2154ff3933b40d6'); +INSERT INTO blocks VALUES(310447,'3f4bc894c0bc04ee24ed1e34849af9f719f55df50c8bc36dc059ec5fa0e1c8a8',310447000,NULL,NULL,'5cc4fa447cc291ffcce7be3c4f8fc70041bf8af5c2dd591136d4a449095d2570','026eb6a7315302879ca62afb071da788deb5759eb3de89cf68fec00ec638d9f0','263570b8cb42f88989f78944ef6782d8928b211e65e38db4826e147d1975e0d6'); +INSERT INTO blocks VALUES(310448,'6a6c7c07ba5b579abd81a7e888bd36fc0e02a2bcfb69dbfa061b1b64bfa1bd10',310448000,NULL,NULL,'ce49854f4493c163bc891888f920fbc6dd8855c30870beb757df69b33de52633','e47cc99299a82c9be619633effff5b9cace113215d7f71aa7d2327e69d3ca3bb','fe0d22cefffa3033092b2122771cacbd10bc2b4e767e31095ef70752efd25b20'); +INSERT INTO blocks VALUES(310449,'9e256a436ff8dae9ff77ed4cac4c3bfbbf026681548265a1b62c771d9d8e0779',310449000,NULL,NULL,'84557595cf2067a95924119b8ed5fea114acd9ca1b0df4dbe4ae5181a739b5d1','4e3048f5eeba69570f9ffd86a3573e85bdfb46a92acf60d55c04d41f49f7f870','7449b8f168d7307175f95e972fefcdf7361d0fbc16ffaf485420ba7743ff2e3e'); +INSERT INTO blocks VALUES(310450,'2d9b2ccc3ad3a32910295d7f7f0d0e671b074494adc373fc49aa874d575e36a3',310450000,NULL,NULL,'0e3b252b73fb652f904780da9fc59d1081d712337a9b15cf1a56ea72fbe96c73','c98b9428cf94077169705f3961816f87293eb89bc840167b1ed8ffb074aef48e','15ab3f2d22058eea112c4dee4483020f6231fa771f0ec80ff6ce09bcf4cde4db'); +INSERT INTO blocks VALUES(310451,'55731a82b9b28b1aa82445a9e351c9df3a58420f1c2f6b1c9db1874483277296',310451000,NULL,NULL,'790eccd04e24e5f10f843d63bbdc1538cf1aabb0e8e6c862104be0ef845f603f','3fda9e8b7ebc417311c9f14e61c9dca2e490702c1c796eeb1df156f174d52cb5','7cfb9230fdb172fb72a851fca37631413fa1fe9909919afd87e0d1fba5486b61'); +INSERT INTO blocks VALUES(310452,'016abbaa1163348d8b6bc497cc487880d469f9300374a72ecb793a03d64572aa',310452000,NULL,NULL,'30962129b060b63050fe8f249592587d74cdabc4ebb5680230a280da880c8586','a1bf92fe5ae4df49a6059263dfd3a9ed105ec24ae02cb9127c0408f7330d962c','d5ff30648d54992513772bae35cce89fc17eedd01b6f2709071964bf336482b2'); +INSERT INTO blocks VALUES(310453,'610be2f49623d3fe8c86eacf3620347ed1dc53194bf01e77393b83541ba5d776',310453000,NULL,NULL,'56f4aa1086d8985a00cc295cf9618d976e69ba426b0c3d103bea6b47b58e4355','a81de51b7b56cc68f599e592be22e11c2f0b51ca27c027f13b58f05b2229a8e1','f562ce07f2c525c3b932b6df3b11f12eec505edc119a835388afbaef029d131e'); +INSERT INTO blocks VALUES(310454,'baea6ad71f16d05b37bb30ca881c73bc48fd931f4bf3ac908a28d7681e976ee9',310454000,NULL,NULL,'38d14a206003b812cbaf5f200235dbe12aa6a674e5f3379cb186a781cb5a5654','022e8475ba7e68c75b4a00387ae431b7bdaa4d125dcd1b19d08e9c431d3e6057','b02b5ea4dabd0fb098d218b2b702b5d62c6f7f5ac89fb8b5190fc8fa875347ef'); +INSERT INTO blocks VALUES(310455,'31a375541362b0037245816d50628b0428a28255ff6eddd3dd92ef0262a0a744',310455000,NULL,NULL,'b2ff303a67c05bc12fcdfdb774ea4ddc690434c3371428b3416d38105f265f28','91a1dc2fe8dd56e137b210136966950c79b4badcdf787b4b9fafa7985847192a','3b94c3089f3825dcdd8b9c454cd46471e7c60b5d53f36eff8cde0b238dc8ee8b'); +INSERT INTO blocks VALUES(310456,'5fee45c5019669a46a049142c0c4b6cf382e06127211e822f5f6f7320b6b50fa',310456000,NULL,NULL,'6cc16b442fd7758ed7bae9f50367fa60debdb5d81bffc5abccda044573aeaf15','5125d7f8718a5a26aed1e1db2ce80e8d2eb4d96bbc91277bace52f571b7f8c26','2e6a293b9e8e8bac4a620e9a3d0f419cd1f50e2ec18cd16c57ebdc70a039560e'); +INSERT INTO blocks VALUES(310457,'9ce5a2673739be824552754ce60fd5098cf954729bb18be1078395f0c437cce9',310457000,NULL,NULL,'8fa0401d245b1b1e8b40760a54f331564d8597e242462ec412878e36a9b06800','061dc1962f44d4da9de8ad6bff4d96650058f5d444951e9c808b901db8717c81','f7370b9939b91a6a01d5b78c6cc403f8876403a3c8eddfb37f835a8c9d5fae61'); +INSERT INTO blocks VALUES(310458,'deca40ba154ebc8c6268668b69a447e35ad292db4504d196e8a91abdc5312aac',310458000,NULL,NULL,'520f92700e31b8a35260a280ae11bf8668b0e09d34795a9d88678f2977e19f7c','b0208287d25e4ca6a1856236b4d4c7a3608533f0a47a9c673806d5d3baeb2297','d1a08e98dda783d91d3d76daed6d6d2a05895abf0fdc64e39119c82cd5c51e83'); +INSERT INTO blocks VALUES(310459,'839c15fa5eea10c91851e160a73a6a8ee273a31ab5385fe5bd71920cbc08b565',310459000,NULL,NULL,'d7f728b78228a914b8767a6caeaf2267e9dbd50490a27f6c23bd96060eab8ee0','21a24d787b30434a230cae77e281636855ff40a8fb4aaaad35eb034835f63e97','f391bda91be1e73e5ee84dc4677c81e1aa68bcc41271f9511086b52235385aa0'); +INSERT INTO blocks VALUES(310460,'9b5f351a5c85aaaa737b6a55f20ebf04cafdf36013cdee73c4aaac376ad4562b',310460000,NULL,NULL,'33c2b4c6d22888448a2458ff2ce6a1cfae5e858acae2a57e4cc0232980f8fa4a','2ae25ed250bd603684d0affe8b14af5a1b8d1554beaed08aa8f723cc3c66cf8d','015eb57064249424885086b2e21ac265f183065ce39a0f0d20ea31f8b0de4b95'); +INSERT INTO blocks VALUES(310461,'8131c823f11c22066362517f8c80d93bfc4c3b0a12890bdd51a0e5a043d26b7b',310461000,NULL,NULL,'22426912d3317922912326da552af284677c9b76b6416b6c056668f27ae4f19f','13b7774cf2a5a0f3d65031cd5f9ee498eaeee5c1e0e8ecbd346e0427d847a5c0','3f403c618e9fee553e2b85077520933fbd2c23dfa669044004842bedc53dc483'); +INSERT INTO blocks VALUES(310462,'16f8fad8c21560b9d7f88c3b22293192c24f5264c964d2de303a0c742c27d146',310462000,NULL,NULL,'74225b62e696aaeafbd4d6db40b41081c7493d9cc44984729d8619ff9450ce32','4f23d4da0bbe4b8bb7e00b6b746b4180356013c63f7a6f9b3eee479380b04e4f','c6fd9f875df5d2053cd4dc4a838d827548cfc41765163ac2177446355c265ff9'); +INSERT INTO blocks VALUES(310463,'bf919937d8d1b5d5f421b9f59e5893ecb9e77861c6ab6ffe6d2722f52483bd94',310463000,NULL,NULL,'b970979bfe0d44ae2f21f7d98bdcc4ae37287b93cad9fa51f32a62337ceba0c1','7b9a9095733a9d870b33aef4bb15767c32b012c27b52de8731358178b87bfb50','1d1f317dcc9f9834f7ef177056a75072f351e1a2ac7166a76c62d99be1ef43c6'); +INSERT INTO blocks VALUES(310464,'91f08dec994751a6057753945249e9c11964b98b654704e585d9239462bc6f60',310464000,NULL,NULL,'00007a158b003fcca20c9fcaa8d73a556f0206bc9a7ab3e5c566ea1bda8648cb','28d7eceb69efcc6736dd64c65ed218dae2e8d0e9d4d7284b0572a5d1065a9d52','70533d7e5f618c1d903338eae462e33b04d4a33dda70cfaf7dc5a40a843e5586'); +INSERT INTO blocks VALUES(310465,'5686aaff2718a688b9a69411e237912869699f756c3eb7bf7c3cf2b9e3756b3d',310465000,NULL,NULL,'09c407870b056db90148a9e4cb8ada003898ff28c584bec6a5be90514758a851','7a4f4ed76efc69ddb5fc13abe258656d6a5e4a845203b5f3f9133716093d7f6d','2f3cf6cbaefd5adca92edc74b49f6f42dd7e823bfd02034fc42822dee486d087'); +INSERT INTO blocks VALUES(310466,'8a68637850c014116da671bb544fb5deddda7682223055a58bdcf7b2e79501fc',310466000,NULL,NULL,'23bcfdbb44d8fc2ae6a86ea073ab080158014f04516b256a70d846399e7383cd','57124a566cf1e863b27fa19e3c982fe4a5115119ffb745624697380ad8d5f900','764d09a1334d335c7865e2491b0032ee8ef7a47dbeb00aa8eaa7f894f41817f1'); +INSERT INTO blocks VALUES(310467,'d455a803e714bb6bd9e582edc34e624e7e3d80ee6c7b42f7207d763fff5c2bd3',310467000,NULL,NULL,'a43abeddb61ad99d57f208cb0c6cc3e0b05a200009e6d90641a2bc7aac707adf','fb3b1ef99d2f323e1bdd6998b78b6044c8c7328fafad6b9fea1de7bd0244a265','e021092401ea9771540b28edffa5e829c0d747d8f6a17b07b9800b5cb8355219'); +INSERT INTO blocks VALUES(310468,'d84dfd2fcf6d8005aeeac01e03b287af788c81955612375510e37a4ab5766891',310468000,NULL,NULL,'fc909facd6ba38fa0908fd49a6e2f25bd8284de5265ef761497b8a2d595344b3','5c84a33365a6954fe639a1c2b1df030b8728d5d331df5ea1ef4a60f976cfa5d2','a39057b01c6eefcca1aba43e383ada071f0bce8e4590ffb310c35b27d840b0b6'); +INSERT INTO blocks VALUES(310469,'2fbbf2724f537d539b675acb6a479e530c7aac5f93b4045f4356ea4b0f8a8755',310469000,NULL,NULL,'09f0d1c9bde8cdd63544fbb5eab46c2954654d32f3736f9975cf860588aa65cf','38083f12891b03e2f089b02f7cb6b7fc7b6cb7091613e1d299051717eef6748b','eb2a94319cdb9723d7882507fda004deecffca03e8dbb6750a251ad5b3e90188'); +INSERT INTO blocks VALUES(310470,'ebb7c8e3fbe0b123a456d753b85b8c123ca3b315da14a00379ebd34784b28921',310470000,NULL,NULL,'41832b12459e778621b8f576e597b9f639390338605b30e5be28423b016b199a','bc0a8227d8698655c56004a73150eb92144469fd22d4ce8bf0f48c27084e99ae','c37b48a047f74eedaf5b5344b32a86e5c418e9b5fe095f7a75d009c2a62ab0e4'); +INSERT INTO blocks VALUES(310471,'fc6f8162c55ecffeaabb09f70f071fd0cb7a9ef1bccaafaf27fe9a936defb739',310471000,NULL,NULL,'bf701017153742cb597353349c90ec66f790f222dd98d617d98a0117f1de3274','d912707e01e39b078d3cee49df85af32019d7367d199543259bc98864c3ddae5','6048d57665d3373652889d7082ed84862506f0b859ed8c0aa580a6c2a1f299e0'); +INSERT INTO blocks VALUES(310472,'57ee5dec5e95b3d9c65a21c407294a32ed538658a6910b16124f18020f16bdf7',310472000,NULL,NULL,'2a162bbd5a20f89a39156995658fd0c4715881bc130922d0edf95b60ece60b9c','c9f21a9ff022fd95423d3eb56017f4f6f8ad56a9fde974c5d08b37f01a0d0f13','8de2c39b1efd9d73443fa89674c9c48a3d98bb2bfb9be5d065223185cc9b568d'); +INSERT INTO blocks VALUES(310473,'33994c8f6d06134f886b47e14cb4b5af8fc0fd66e6bd60b3a71986622483e095',310473000,NULL,NULL,'1ce10996ec9e37d8ddc204f038542c6781da88d2d45bae1952a88ab993b81e88','ad410d51bae82f8322d110d7b2270a1ff74c0ca64dfc31c5d293cfee7dbbb459','9e5a06535adf9336cd908bb5b0f64bc0edfb439a5b6ed303d0153d1e527b463f'); +INSERT INTO blocks VALUES(310474,'312ee99e9526e9c240d76e3c3d1fe4c0a21f58156a15f2789605b3e7f7794a09',310474000,NULL,NULL,'5ae424c24ca30aad5aca8298a13ae9371f55b15bc789c7731d833c6e7c7cb04e','b091eceeb4b263d9fa55bd5595cd298ff8b335e03007d62339033cd884137d48','4ed5440140e06d1f93e8951b77e8cb0c3159328b1040b71a50c4cee0102fc169'); +INSERT INTO blocks VALUES(310475,'bb9289bcd79075962117aef1161b333dbc403efebd593d93fc315146a2f040eb',310475000,NULL,NULL,'b9b257efe76a36c340629ceb265822dd10449a08eadc69667a8ea05af5c052f8','345c94c7b237efaf2b4e92802125b7d783e456e36ab6868d1f4126698361ba89','04349faac9296da518bf9d2f4fe783d44bbe6aba326b5527c7c0d1a049e07be8'); +INSERT INTO blocks VALUES(310476,'3712e1ebd195749e0dc92f32f7f451dd76f499bf16d709462309ce358a9370d0',310476000,NULL,NULL,'070c06b36f3a77c04fb4bcc3ab1045e95f198f3f970846e59c35db0d03cdaf2c','014e01dabe6dd8db8e0477f9b12d4f4e3589e41223ec8c9ca5035b942524ca41','98bedb6136796c28d35e083ac762668c96bcdd83fbada2f4fe10bcdbc92960df'); +INSERT INTO blocks VALUES(310477,'7381973c554ac2bbdc849e8ea8c4a0ecbb46e7967d322446d0d83c3f9deab918',310477000,NULL,NULL,'4954596dd44d112fd0407c215be3c9534a348d6f708ae4a1e66527d1ac2830b1','1351438c8ea21d9619f81e51cfd188dbefd6a4816fe3c30b68210ac160890e9b','9643b508c3ef16a34f636ba6daed2403cf7c3cbb30e953ae6f27d75cc44774da'); +INSERT INTO blocks VALUES(310478,'c09ee871af7f2a611d43e6130aed171e301c23c5d1a29d183d40bf15898b4fa0',310478000,NULL,NULL,'d9cac2e29863569bc96aaf022437906a534968a17bf965c54bf59931cd92e590','cbec4d277b86a587fd0463340a8990600046f6f166f6fde0b6ec1ee817ab12bb','b81b59d2bc47e0477f06553dd3ffede3e86632425e8420aa56d0046977c6ea9a'); +INSERT INTO blocks VALUES(310479,'f3d691ce35f62df56d142160b6e2cdcba19d4995c01f802da6ce30bfe8d30030',310479000,NULL,NULL,'2e48a89a55b6f368745e1c022683e93c20bdd920011518f18fd936f2190ac5e0','81d4ab55e022000a1bb3fbe758e497425c5196951c3e7896d3c641d54b4f2db6','2507a7e2e759cc6343e75f581ef5cd1c106fe36d69d6b934ce705f76c67d5851'); +INSERT INTO blocks VALUES(310480,'2694e89a62b3abd03a38dfd318c05eb5871f1be00a6e1bf06826fd54d142e681',310480000,NULL,NULL,'aa54124d86e74bebd14ea481ac2a5a5186236ffe214747f1af11ac370565525c','8d7e0f8a6f052692155e23eb612c02468830485938e7cb77a91e0c2061611385','d3cd2df4207a9fe421874573060180bf5505514da2bc664c20d5f73563d940d0'); +INSERT INTO blocks VALUES(310481,'db37d8f98630ebc61767736ae2c523e4e930095bf54259c01de4d36fd60b6f4a',310481000,NULL,NULL,'fbbe1266bb773e5a3f5b48e82566ff75bc74bfea9424f81f670952565db15c59','8bc755d288d8d6525d9161e5d5072631a72e46d2373de37c7851aa10f3479ed5','c014632a79cb73b53398c621ffbfc6d063cddfcb1777dc606e04787af60e9601'); +INSERT INTO blocks VALUES(310482,'2e27db87dfb6439c006637734e876cc662d1ca74c717756f90f0e535df0787d6',310482000,NULL,NULL,'bd28a97e90054319c4c301c3e99d68aaa5e1bf5a145a8f2c4529040bb8137209','838486910c9c7722fb3afbac7b0514cdd94126486f6671697423b34164b9906f','5920abc3ead7066b4ce9ad287e93c0448afed80dcdec69a3c24076a5593ddbc0'); +INSERT INTO blocks VALUES(310483,'013bac61f8e33c8d8d0f60f5e6a4ec3de9b16696703dea9802f64a258601c460',310483000,NULL,NULL,'fbbeacec99c9ed99a7fc37cdd5673fe8bdce08eba7fcb25b696e262af29ca5d8','2be6ebe515877a76a7b83b1929ca2ef77be1df3aa3d6766c0c47450898ad7adf','aae7317d18edb8cf199cdda73aa26b6a917426468288e4ad4366a4e7c930ad57'); +INSERT INTO blocks VALUES(310484,'7cac2b3630c31b592fa0497792bed58d3c41120c009471c348b16b5578b3aa2b',310484000,NULL,NULL,'310bc7c61c1325ee3f97e888658fd74e1fe4adccef4924abb6978150fe6f3dad','ec800faf2b61e7b1c2c85157d09b058f59defc14ffbe64d82dffea2a0368ade2','eceb407aa4120b42a6d351b53569e49357eb340ffa7a7a9a683c85fdfb17bf9a'); +INSERT INTO blocks VALUES(310485,'eab5febc9668cd438178496417b22da5f77ceaed5bb6e01fc0f04bef1f5b4478',310485000,NULL,NULL,'b7f66db9ea5838b65286422d0cac262f6b81bbd5a7397adf7b8d85b21354dbcd','c2c0301119eb8f6e5ee8f72a4f93366a7c2b9f327f087a5aabff7d73892ca74f','cbb5ac853d9b39f65af711754f62688239ab43ac983521018360a241c299cc4c'); +INSERT INTO blocks VALUES(310486,'d4fbe610cc60987f2d1d35c7d8ad3ce32156ee5fe36ef8cc4f08b46836388862',310486000,NULL,NULL,'0f829769e4da773089d7b05047a499db5f6d1b17795d4fba912882caee9813e0','ea66c7d9251a0eb884fef48de05cb58bbcf3a9e08319f01c96f180aeb0de9bab','89411706766129719126b2b790a94f6e4e477da147b0f243a22815bf7f6d18b3'); +INSERT INTO blocks VALUES(310487,'32aa1b132d0643350bbb62dbd5f38ae0c270d8f491a2012c83b99158d58e464f',310487000,NULL,NULL,'4b4d7a79843342e96e5d9d71bbc49690245b3098be75e7b86f273021d526216d','76fbd411c43f3f67c8bf61138c5672de0cfda2d98f112a6e50b3a5d084d7cc72','e5a165429914eaf94a41b748a2dfc8b0a09438a5d0b1f933c4f1789a0e2eab9e'); +INSERT INTO blocks VALUES(310488,'80b8dd5d7ce2e4886e6721095b892a39fb699980fe2bc1c17e747f822f4c4b1b',310488000,NULL,NULL,'2d7e59026ea4c8933e9c7474936931ca49d4af91f9b9985f3c76085fb3a69104','78e801f2d1968c860ac2563e9cc912c18cb8e5f95996011e84c289833fbd46da','fa3460597f3dd24c32881a28ccd29848f2badf31fb28ef65b5907a093c8d645f'); +INSERT INTO blocks VALUES(310489,'2efdb36f986b3e3ccc6cc9b0c1c3cdcb07429fb43cbc0cc3b6c87d1b33f258b6',310489000,NULL,NULL,'716354a370f344980e98785a444b56b21188bc699e7fbd0c877b6f2fabf35efc','23d9af03e6aa29fbab29c8e2a5a0419680053bba19594105cc8ef4d3db05d418','4d0a10ff1fcd5e853e6eef2f7e3bcaefc2be02687d62fec5b21a03972f54befd'); +INSERT INTO blocks VALUES(310490,'e2cb04b8a7368c95359c9d5ff33e64209200fb606de0d64b7c0f67bb1cb8d87c',310490000,NULL,NULL,'906a38f4256f50312891119c99721537992438af85421e317574ce1810e2b909','5f934032dce4102cd1d72d3f887526e78baa4a78991bc43cf0a1ebefe08fdec7','9e8317be956daf7753f8f8861e68a29d6a79ae41f2d9d39ee06c811abb256806'); +INSERT INTO blocks VALUES(310491,'811abd7cf2b768cfdaa84ab44c63f4463c96a368ead52125bf149cf0c7447b16',310491000,NULL,NULL,'3114d8091cfcaa9944c6fab49d51950535c4ef269877d58c372ed80b2b472ec6','f065728a3544adc085fae976759c0d040a34ca0a8ddd39260b55f0262cd5baa8','be852aa8b022209355ea4147a57525f0b7c38e629e0422b675bfbc2d45b58788'); +INSERT INTO blocks VALUES(310492,'8a09b2faf0a7ad67eb4ab5c948b9769fc87eb2ec5e16108f2cde8bd9e6cf7607',310492000,NULL,NULL,'98af18583618fdeed545347c013763d068e8294405d265911cc5e1bc420bc740','daf4d2c1a1ad5206abcf7744bdd06fae99c442fb2607a843dcabb5727d02916e','d8b58011bf3392e8db39f8d5eccbecc028d5aa0f321a54b7845f510a97191654'); +INSERT INTO blocks VALUES(310493,'c19e2915b750279b2be4b52e57e5ce29f63dffb4e14d9aad30c9e820affc0cbf',310493000,NULL,NULL,'29119cd30a4733916fbfd0551506eaa16f7bb1bdfbdf8d17ac4e5bb20d1cb09c','7ec4cfa94544900c8e8732ad51be7cee6452aa1884ea940cd5c98862fb4aaba6','fd24cdff61bfbcfdcbe0f5304cc923900df40302928f17963408ca9f0fd9c266'); +INSERT INTO blocks VALUES(310494,'7dda1d3e12785313d5651ee5314d0aecf17588196f9150b10c55695dbaebee5d',310494000,NULL,NULL,'72d71bd72263699ea9f2b097ad141be5bc394f49d8b0b0a6b2ff6a87b0ee3919','9350c3ba33d0546d1194c5fa767ced28834b26246aedc56d89b1d48ec4f26014','67f896d349a506059dda2bc17af89bc9480e862009abbff09b80846dfdf320b3'); +INSERT INTO blocks VALUES(310495,'4769aa7030f28a05a137a85ef4ee0c1765c37013773212b93ec90f1227168b67',310495000,NULL,NULL,'5a7e5a36882466373d576bb5f4ccd1bc72ecaf548b9589baa803a7275a7a24cd','09e9db121649cacd979fd18bbaa35e519361e727e7e072e2f2f86291160cdb29','ee77de1de0409ad159d6c115b4b456a1b6a60ebec57ad1ec608be95a08c6cd2f'); +INSERT INTO blocks VALUES(310496,'65884816927e8c566655e85c07bc2bc2c7ee26e625742f219939d43238fb31f8',310496000,NULL,NULL,'7ac6121c624b634f44695172761830926afe76bb18c4cc9195773f3a26966941','9eda85cce745579122ba9c6e24b63cd83f2e5161031a34e6ee9bf08b80823cb4','7ea5245c38a6a1c383280a873c7096bd5fdef4e76761dd4c19638ed3279f9820'); +INSERT INTO blocks VALUES(310497,'f1118591fe79b8bf52ccf0c5de9826bfd266b1fdc24b44676cf22bbcc76d464e',310497000,NULL,NULL,'28c6e92b2299b9cbbb5953f8b7ff3de0fe962d15642ba27e43faa64e1935e819','ff8136601b9e0138a999d1f0467af6e8535a2bcdd2b622af7be0178a083b9519','e1c3baf6f308d96b7dfed6e63e9f9c17c88cb210c99cfb00cd530ad529468492'); +INSERT INTO blocks VALUES(310498,'b7058b6d1ddc325a10bf33144937e06ce6025215b416518ae120da9440ae279e',310498000,NULL,NULL,'5fe6cdb0828379bf240fad99c68bba34e1889bbc19605ce5c297b82352264414','b488f6f0e6c233f202ee17c0843236d464144e79c870af88bae56355ae9372b7','3f7f9ab501e9bc06faed0467bb6314f7c7996606a400f5cd69b9e48643b07c9a'); +INSERT INTO blocks VALUES(310499,'1950e1a4d7fc820ed9603f6df6819c3c953c277c726340dec2a4253e261a1764',310499000,NULL,NULL,'b9fcbdafddd46fdda061f6e9f8744b426b6ca37e32b315df1098cbc7899ae9b9','032166892f568bb97f4f69ef5bdf49cc1b15cc9f8c7f6c1f3e1f9d54816ad7e5','d1ca82813949964578289848b69f074dde9adf80eb05c9463d8d875f3b9d3387'); +INSERT INTO blocks VALUES(310500,'54aeaf47d5387964e2d51617bf3af50520a0449410e0d096cf8c2aa9dad5550b',310500000,NULL,NULL,'5ffefc7a2724be6bd697796bb82638ec913c5cbb73627153d1a13b48c7a6c02d','35f4a33840d002ab4e0e44f11c1749ae95b41376927fb346140508b32518edd1','cae2a80d55e87c77e808fbfcc7f52eca235d59030eb8d64458dd6273fb722907'); +INSERT INTO blocks VALUES(310501,'9d9019d15a1d878f2c39c7e3de4340a043a4a31aebb298acdf8e913284ae26ba',310501000,NULL,NULL,NULL,NULL,NULL); +-- Triggers and indices on blocks +CREATE INDEX blocks_block_index_block_hash_idx ON blocks (block_index, block_hash) + ; +CREATE INDEX blocks_block_index_idx ON blocks (block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transactions +DROP TABLE IF EXISTS transactions; +CREATE TABLE transactions( + tx_index INTEGER UNIQUE, + tx_hash TEXT UNIQUE, + block_index INTEGER, + block_hash TEXT, + block_time INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + fee INTEGER, + data BLOB, + supported BOOL DEFAULT 1, + FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), + PRIMARY KEY (tx_index, tx_hash, block_index)); +INSERT INTO transactions VALUES(1,'6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); +INSERT INTO transactions VALUES(2,'1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'00000014000000A25BE34B66000000174876E800010000000000000000000F446976697369626C65206173736574',1); +INSERT INTO transactions VALUES(3,'7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'000000140006CAD8DC7F0B6600000000000003E800000000000000000000124E6F20646976697369626C65206173736574',1); +INSERT INTO transactions VALUES(4,'c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001400000003C58E5C5600000000000003E8010000000000000000000E43616C6C61626C65206173736574',1); +INSERT INTO transactions VALUES(5,'90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001400000000082C82E300000000000003E8010000000000000000000C4C6F636B6564206173736574',1); +INSERT INTO transactions VALUES(6,'344dcc8909ca3a137630726d0071dfd2df4f7c855bac150c7d3a8367835c90bc',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001400000000082C82E3000000000000000001000000000000000000044C4F434B',1); +INSERT INTO transactions VALUES(7,'4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000A25BE34B660000000005F5E10007D00000000000000000',1); +INSERT INTO transactions VALUES(8,'6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'00000000000000A25BE34B660000000005F5E100',1); +INSERT INTO transactions VALUES(9,'4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'0000000000000000000000010000000005F5E100',1); +INSERT INTO transactions VALUES(10,'21460d5c07284f9be9baf824927d0d4e4eb790e297f3162305841607b672349b',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000A25BE34B660000000005F5E10007D00000000000000000',1); +INSERT INTO transactions VALUES(11,'1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000000000000000000000000F424007D000000000000DBBA0',1); +INSERT INTO transactions VALUES(12,'a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,1000000,X'0000000A000000000000000000000000000A2C2B00000000000000010000000005F5E10007D00000000000000000',1); +INSERT INTO transactions VALUES(13,'698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'0000000000000000000000010000000011E1A300',1); +INSERT INTO transactions VALUES(14,'0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000000000000A25BE34B66000000003B9ACA00',1); +INSERT INTO transactions VALUES(15,'1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'000000000006CAD8DC7F0B660000000000000005',1); +INSERT INTO transactions VALUES(16,'e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'000000000006CAD8DC7F0B66000000000000000A',1); +INSERT INTO transactions VALUES(17,'bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'000000140000000000033A3E7FFFFFFFFFFFFFFF01000000000000000000104D6178696D756D207175616E74697479',1); +INSERT INTO transactions VALUES(18,'d14388b74b63d93e4477b1fe8426028bb8ab20656703e3ce8deeb23c2fe0b8af',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB33003FF0000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(19,'f9e0527c85a9084d7eda91fc30a49993370d029efea031a8ccccdf846146a660',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','',0,6800,X'0000001E4CC552003FF000000000000000000000046C6F636B',1); +INSERT INTO transactions VALUES(20,'2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000152BB3301000000000000000900000000000000090000000000000000000013B000000064',1); +INSERT INTO transactions VALUES(21,'5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000052BB3301000000000000000900000000000000090000000000000000000013B000000064',1); +INSERT INTO transactions VALUES(102,'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e',310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000352BB33C8000000000000000A000000000000000A0000000000000000000013B0000003E8',1); +INSERT INTO transactions VALUES(103,'16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae',310102,'11e25883fd0479b78ddb1953ef67e3c3d1ffc82bd1f9e918a75c2194f7137f99',310102000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB33023FF0000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(104,'65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b',310103,'559a208afea6dd27b8bfeb031f1bd8f57182dcab6cf55c4089a6c49fb4744f17',310103000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,-99994375,X'',1); +INSERT INTO transactions VALUES(105,'95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff',310104,'55b82e631b61d22a8524981ff3b5e3ab4ad7b732b7d1a06191064334b8f2dfd2',310104000,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,-99994375,X'',1); +INSERT INTO transactions VALUES(106,'e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa',310105,'1d72cdf6c4a02a5f973e6eaa53c28e9e13014b4f5bb13f91621a911b27fe936a',310105000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,-99994375,X'',1); +INSERT INTO transactions VALUES(107,'bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3',310106,'9d39cbe8c8a5357fc56e5c2f95bf132382ddad14cbc8abd54e549d58248140ff',310106000,'mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','mvCounterpartyXXXXXXXXXXXXXXW24Hef',10000,5625,X'',1); +INSERT INTO transactions VALUES(108,'9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec',310107,'51cc04005e49fa49e661946a0e147240b0e5aac174252c96481ab7ddd5487435',310107000,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','',0,6150,X'0000000C000000000000000100000000000000640000000000000064000000000000006400',1); +INSERT INTO transactions VALUES(109,'93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73',310108,'8f2d3861aa42f8e75dc14a23d6046bd89feef0d81996b6e1adc2a2828fbc8b34',310108000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','mvCounterpartyXXXXXXXXXXXXXXW24Hef',31000000,5625,X'',1); +INSERT INTO transactions VALUES(110,'e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e',310109,'d23aaaae55e6a912eaaa8d20fe2a9ad4819fe9dc1ed58977265af58fad89d8f9',310109000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','',0,6800,X'0000001400078A8FE2E5E44100000000000003E8000000000000000000001050534820697373756564206173736574',1); +INSERT INTO transactions VALUES(111,'f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7',310110,'cecc8e4791bd3081995bd9fd67acb6b97415facfd2b68f926a70b22d9a258382',310110000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',5430,7650,X'00000000000000A25BE34B660000000005F5E100',1); +INSERT INTO transactions VALUES(112,'510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186',310111,'fde71b9756d5ba0b6d8b230ee885af01f9c4461a55dbde8678279166a21b20ae',310111000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','',0,5975,X'0000001E52BB33023FF0000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(113,'d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048',310112,'5b06f69bfdde1083785cf68ebc2211b464839033c30a099d3227b490bf3ab251',310112000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',5430,7124,X'00000028000352BB33C8000000000000000A000000000000000A0000000000000000000013B0000003E8',1); +INSERT INTO transactions VALUES(114,'34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63',310113,'63914cf376d3076b697b9234810dfc084ed5a885d5cd188dd5462560da25d5e7',310113000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'00000014000038FEDF6D2C6900000000000003E8010000000000000000000C4C6F636B6564206173736574',1); +INSERT INTO transactions VALUES(115,'025b810fce7735c5869b90846007e5f604f60c1beda4c1695f1c7fbec3d44bc2',310114,'24fc2dded4f811eff58b32cda85d90fb5773e81b9267e9a03c359bc730d82283',310114000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'00000014000038FEDF6D2C69000000000000000001000000000000000000044C4F434B',1); +INSERT INTO transactions VALUES(116,'4ab1a24283c1dbfc710be7b215d64e8a4510ee97af019e210049c25773b50beb',310115,'a632d67ff5f832fe9c3c675f855f08a4969c6d78c0211e71b2a24fe04be5656a',310115000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'00000014000038FEDF6D2C69000000000000000001000000000000000000076368616E676564',1); +INSERT INTO transactions VALUES(117,'27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9',310116,'8495ba36b331473c4f3529681a118a4cc4fa4d51cd9b8dccb1f13e5ef841dd84',310116000,'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); +INSERT INTO transactions VALUES(482,'b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5',310481,'db37d8f98630ebc61767736ae2c523e4e930095bf54259c01de4d36fd60b6f4a',310481000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6375,X'0000000200000000000000010000000005F5E1006F8D6AE8A3B381663118B4E1EFF4CFC7D0954DD6EC68656C6C6F',1); +INSERT INTO transactions VALUES(483,'c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34',310482,'2e27db87dfb6439c006637734e876cc662d1ca74c717756f90f0e535df0787d6',310482000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','',0,6350,X'0000000200000000000000010000000005F5E1006F4838D8B3588C4C7BA7C1D06F866E9B3739C63037FADE0001',1); +INSERT INTO transactions VALUES(487,'3b95e07a2194174ac020de27e8b2b6ee24d5fc120f118df516ba28495657cf14',310486,'d4fbe610cc60987f2d1d35c7d8ad3ce32156ee5fe36ef8cc4f08b46836388862',310486000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','',0,6800,X'0000001E52BB33003FF0000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(488,'41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef',310487,'32aa1b132d0643350bbb62dbd5f38ae0c270d8f491a2012c83b99158d58e464f',310487000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',5430,7650,X'00000028000152BB3301000000000000000900000000000000090000000000000000000013B000000064',1); +INSERT INTO transactions VALUES(489,'870fb08b373705423f31ccd91fdbcabe135ad92d74e709a959dfa2e12f9a6638',310488,'80b8dd5d7ce2e4886e6721095b892a39fb699980fe2bc1c17e747f822f4c4b1b',310488000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','',0,6800,X'0000001E52BB33023FF000000000000000000000096F7074696F6E732030',1); +INSERT INTO transactions VALUES(490,'685d7f99fa76a05201c3239a4e0d9060ea53307b171f6ad7d482a26c73e9c0d1',310489,'2efdb36f986b3e3ccc6cc9b0c1c3cdcb07429fb43cbc0cc3b6c87d1b33f258b6',310489000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','',0,6800,X'0000001E52BB33033FF000000000000000000000046C6F636B',1); +INSERT INTO transactions VALUES(491,'7c437705c315212315c85c0b8ba09d358679c91be20b54f30929c5a6052426af',310490,'e2cb04b8a7368c95359c9d5ff33e64209200fb606de0d64b7c0f67bb1cb8d87c',310490000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'0000001E52BB33043FF000000000000000000000096F7074696F6E732031',1); +INSERT INTO transactions VALUES(492,'74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498',310491,'811abd7cf2b768cfdaa84ab44c63f4463c96a368ead52125bf149cf0c7447b16',310491000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000000000000000000000000C350007D000000000000DBBA0',1); +INSERT INTO transactions VALUES(493,'1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81',310492,'8a09b2faf0a7ad67eb4ab5c948b9769fc87eb2ec5e16108f2cde8bd9e6cf7607',310492000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','',0,1000000,X'0000000A000000000000000000000000000C350000000000000000010000000005F5E10007D00000000000000000',1); +INSERT INTO transactions VALUES(494,'c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a',310493,'c19e2915b750279b2be4b52e57e5ce29f63dffb4e14d9aad30c9e820affc0cbf',310493000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); +INSERT INTO transactions VALUES(495,'321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503',310494,'7dda1d3e12785313d5651ee5314d0aecf17588196f9150b10c55695dbaebee5d',310494000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','',0,6800,X'00000014000000063E985FFD00000000000000640100000000000000000000',1); +INSERT INTO transactions VALUES(496,'02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e',310495,'4769aa7030f28a05a137a85ef4ee0c1765c37013773212b93ec90f1227168b67',310495000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj',5430,7650,X'00000000000000063E985FFD000000000000000A',1); +INSERT INTO transactions VALUES(497,'a35ab1736565aceddbd1d71f92fc7f39d1361006aa9099f731e54e762964d5ba',310496,'65884816927e8c566655e85c07bc2bc2c7ee26e625742f219939d43238fb31f8',310496000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj',5430,7650,X'00000000000000000000000100000015A4018C1E',1); +INSERT INTO transactions VALUES(498,'076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f',310497,'f1118591fe79b8bf52ccf0c5de9826bfd266b1fdc24b44676cf22bbcc76d464e',310497000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6300,X'00000014000000000AA4097D0000000005F5E100010000000000000000000C506172656E74206173736574',1); +INSERT INTO transactions VALUES(499,'0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf',310498,'b7058b6d1ddc325a10bf33144937e06ce6025215b416518ae120da9440ae279e',310498000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6550,X'0000001501530821671B10650000000005F5E10001108E90A57DBA9967C422E83080F22F0C684368696C64206F6620706172656E74',1); +-- Triggers and indices on transactions +CREATE INDEX transactions_block_index_idx ON transactions (block_index) + ; +CREATE INDEX transactions_block_index_tx_index_idx ON transactions (block_index, tx_index) + ; +CREATE INDEX transactions_tx_hash_idx ON transactions (tx_hash) + ; +CREATE INDEX transactions_tx_index_idx ON transactions (tx_index) + ; +CREATE INDEX transactions_tx_index_tx_hash_block_index_idx ON transactions (tx_index, tx_hash, block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transaction_outputs +DROP TABLE IF EXISTS transaction_outputs; +CREATE TABLE transaction_outputs( + tx_index, + tx_hash TEXT, + block_index INTEGER, + out_index INTEGER, + destination TEXT, + btc_amount INTEGER, + PRIMARY KEY (tx_hash, out_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000000,310001,2); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92900000000,310002,3); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',1000,310002,3); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92850000000,310003,4); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','CALLABLE',1000,310003,4); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92800000000,310004,5); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','LOCKED',1000,310004,5); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92800000000,310005,6); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92700000000,310006,7); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',99900000000,310007,8); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000,310007,8); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92600000000,310008,9); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,310008,9); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92500000000,310009,10); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92400000000,310010,11); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92100000000,310012,13); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000,310012,13); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',98900000000,310013,14); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000,310013,14); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',995,310014,15); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5,310014,15); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',985,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10,310015,16); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310016,17); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','MAXI',9223372036854775807,310016,17); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92049999991,310019,20); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999991,310020,21); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92049999991,310020,21); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999991,310020,21); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999981,310101,102); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999990,310102,103); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310102,103); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310102,103); +INSERT INTO balances VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138821,310103,104); +INSERT INTO balances VALUES('munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130460,310104,105); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92999122099,310105,106); +INSERT INTO balances VALUES('mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','XCP',14999857,310106,107); +INSERT INTO balances VALUES('munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130360,310107,108); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46499548508,310108,109); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46449548508,310109,110); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','PAYTOSCRIPT',1000,310109,110); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',98800000000,310110,111); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000,310110,111); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46449548498,310112,113); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099,310113,114); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','LOCKEDPREV',1000,310113,114); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099,310114,115); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099,310115,116); +INSERT INTO balances VALUES('tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','XCP',92999030129,310116,117); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91950000000,310481,482); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',199999990,310481,482); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999990,310482,483); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310482,483); +INSERT INTO balances VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138812,310487,488); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91950000000,310491,492); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92995878046,310493,494); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92945878046,310494,495); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',100,310494,495); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',90,310495,496); +INSERT INTO balances VALUES('mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10,310495,496); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',0,310496,497); +INSERT INTO balances VALUES('mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046,310496,497); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91900000000,310497,498); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','PARENT',100000000,310497,498); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91875000000,310498,499); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','A95428956661682277',100000000,310498,499); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000000,310001,2); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92900000000,310002,3); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',1000,310002,3); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92850000000,310003,4); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','CALLABLE',1000,310003,4); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92800000000,310004,5); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','LOCKED',1000,310004,5); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92800000000,310005,6); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92700000000,310006,7); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',99900000000,310007,8); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000,310007,8); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92600000000,310008,9); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,310008,9); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92500000000,310009,10); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92400000000,310010,11); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92100000000,310012,13); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000,310012,13); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',98900000000,310013,14); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000,310013,14); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',995,310014,15); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5,310014,15); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',985,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10,310015,16); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310016,17); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','MAXI',9223372036854775807,310016,17); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92049999991,310019,20); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999991,310020,21); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92049999991,310020,21); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999991,310020,21); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999981,310101,102); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999990,310102,103); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310102,103); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310102,103); +INSERT INTO balances VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138821,310103,104); +INSERT INTO balances VALUES('munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130460,310104,105); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92999122099,310105,106); +INSERT INTO balances VALUES('mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','XCP',14999857,310106,107); +INSERT INTO balances VALUES('munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130360,310107,108); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46499548508,310108,109); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46449548508,310109,110); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','PAYTOSCRIPT',1000,310109,110); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',98800000000,310110,111); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000,310110,111); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46449548498,310112,113); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099,310113,114); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','LOCKEDPREV',1000,310113,114); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099,310114,115); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099,310115,116); +INSERT INTO balances VALUES('tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','XCP',92999030129,310116,117); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91950000000,310481,482); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',199999990,310481,482); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999990,310482,483); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310482,483); +INSERT INTO balances VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138812,310487,488); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91950000000,310491,492); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92995878046,310493,494); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92945878046,310494,495); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',100,310494,495); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',90,310495,496); +INSERT INTO balances VALUES('mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10,310495,496); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',0,310496,497); +INSERT INTO balances VALUES('mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046,310496,497); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91900000000,310497,498); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','PARENT',100000000,310497,498); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91875000000,310498,499); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','A95428956661682277',100000000,310498,499); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table credits +DROP TABLE IF EXISTS credits; +CREATE TABLE credits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + calling_function TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO credits VALUES(310000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',93000000000,'burn','6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',1); +INSERT INTO credits VALUES(310001,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000000,'issuance','1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1',2); +INSERT INTO credits VALUES(310002,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',1000,'issuance','7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584',3); +INSERT INTO credits VALUES(310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','CALLABLE',1000,'issuance','c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140',4); +INSERT INTO credits VALUES(310004,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','LOCKED',1000,'issuance','90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da',5); +INSERT INTO credits VALUES(310007,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000,'send','6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753',8); +INSERT INTO credits VALUES(310008,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'send','4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43',9); +INSERT INTO credits VALUES(310012,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000,'send','698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6',13); +INSERT INTO credits VALUES(310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000,'send','0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132',14); +INSERT INTO credits VALUES(310014,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5,'send','1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a',15); +INSERT INTO credits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10,'send','e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c',16); +INSERT INTO credits VALUES(310016,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','MAXI',9223372036854775807,'issuance','bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39',17); +INSERT INTO credits VALUES(310020,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'filled','5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',21); +INSERT INTO credits VALUES(310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',0,'filled','5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',21); +INSERT INTO credits VALUES(310102,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',9,'bet settled','16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae',103); +INSERT INTO credits VALUES(310102,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',9,'bet settled','16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae',103); +INSERT INTO credits VALUES(310102,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'feed fee','16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae',103); +INSERT INTO credits VALUES(310103,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138821,'burn','65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b',104); +INSERT INTO credits VALUES(310104,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130460,'burn','95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff',105); +INSERT INTO credits VALUES(310105,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92999122099,'burn','e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa',106); +INSERT INTO credits VALUES(310106,'mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','XCP',14999857,'burn','bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3',107); +INSERT INTO credits VALUES(310108,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46499548508,'burn','93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73',109); +INSERT INTO credits VALUES(310109,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','PAYTOSCRIPT',1000,'issuance','e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e',110); +INSERT INTO credits VALUES(310110,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000,'send','f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7',111); +INSERT INTO credits VALUES(310113,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','LOCKEDPREV',1000,'issuance','34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63',114); +INSERT INTO credits VALUES(310116,'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','XCP',92999030129,'burn','27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9',117); +INSERT INTO credits VALUES(310481,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'send','b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5',482); +INSERT INTO credits VALUES(310482,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'send','c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34',483); +INSERT INTO credits VALUES(310493,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92995878046,'burn','c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a',494); +INSERT INTO credits VALUES(310494,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',100,'issuance','321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503',495); +INSERT INTO credits VALUES(310495,'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10,'send','02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e',496); +INSERT INTO credits VALUES(310496,'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046,'send','a35ab1736565aceddbd1d71f92fc7f39d1361006aa9099f731e54e762964d5ba',497); +INSERT INTO credits VALUES(310497,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','PARENT',100000000,'issuance','076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f',498); +INSERT INTO credits VALUES(310498,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','A95428956661682277',100000000,'issuance','0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf',499); +-- Triggers and indices on credits +CREATE TRIGGER block_update_credits + BEFORE UPDATE ON credits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX credits_address_idx ON credits (address) + ; +CREATE INDEX credits_asset_idx ON credits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table debits +DROP TABLE IF EXISTS debits; +CREATE TABLE debits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + action TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO debits VALUES(310001,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1',2); +INSERT INTO debits VALUES(310002,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584',3); +INSERT INTO debits VALUES(310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140',4); +INSERT INTO debits VALUES(310004,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da',5); +INSERT INTO debits VALUES(310005,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'issuance fee','344dcc8909ca3a137630726d0071dfd2df4f7c855bac150c7d3a8367835c90bc',6); +INSERT INTO debits VALUES(310006,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8',7); +INSERT INTO debits VALUES(310007,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000,'send','6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753',8); +INSERT INTO debits VALUES(310008,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'send','4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43',9); +INSERT INTO debits VALUES(310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','21460d5c07284f9be9baf824927d0d4e4eb790e297f3162305841607b672349b',10); +INSERT INTO debits VALUES(310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a',11); +INSERT INTO debits VALUES(310012,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',300000000,'send','698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6',13); +INSERT INTO debits VALUES(310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',1000000000,'send','0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132',14); +INSERT INTO debits VALUES(310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',5,'send','1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a',15); +INSERT INTO debits VALUES(310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',10,'send','e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c',16); +INSERT INTO debits VALUES(310016,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39',17); +INSERT INTO debits VALUES(310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',9,'bet','2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1',20); +INSERT INTO debits VALUES(310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',9,'bet','5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',21); +INSERT INTO debits VALUES(310101,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',10,'bet','db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e',102); +INSERT INTO debits VALUES(310107,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',100,'open dispenser','9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec',108); +INSERT INTO debits VALUES(310109,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',50000000,'issuance fee','e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e',110); +INSERT INTO debits VALUES(310110,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000,'send','f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7',111); +INSERT INTO debits VALUES(310112,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',10,'bet','d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048',113); +INSERT INTO debits VALUES(310113,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',50000000,'issuance fee','34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63',114); +INSERT INTO debits VALUES(310114,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',0,'issuance fee','025b810fce7735c5869b90846007e5f604f60c1beda4c1695f1c7fbec3d44bc2',115); +INSERT INTO debits VALUES(310115,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',0,'issuance fee','4ab1a24283c1dbfc710be7b215d64e8a4510ee97af019e210049c25773b50beb',116); +INSERT INTO debits VALUES(310481,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'send','b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5',482); +INSERT INTO debits VALUES(310482,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'send','c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34',483); +INSERT INTO debits VALUES(310487,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',9,'bet','41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef',488); +INSERT INTO debits VALUES(310491,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498',492); +INSERT INTO debits VALUES(310494,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',50000000,'issuance fee','321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503',495); +INSERT INTO debits VALUES(310495,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',10,'send','02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e',496); +INSERT INTO debits VALUES(310496,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92945878046,'send','a35ab1736565aceddbd1d71f92fc7f39d1361006aa9099f731e54e762964d5ba',497); +INSERT INTO debits VALUES(310497,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f',498); +INSERT INTO debits VALUES(310498,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',25000000,'issuance fee','0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf',499); +-- Triggers and indices on debits +CREATE TRIGGER block_update_debits + BEFORE UPDATE ON debits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX debits_address_idx ON debits (address) + ; +CREATE INDEX debits_asset_idx ON debits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table messages +DROP TABLE IF EXISTS messages; +CREATE TABLE messages( + message_index INTEGER PRIMARY KEY, + block_index INTEGER, + command TEXT, + category TEXT, + bindings TEXT, + timestamp INTEGER); +INSERT INTO messages VALUES(0,310000,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(1,310001,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(2,310002,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(3,310003,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(4,310004,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(5,310005,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(6,310006,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(7,310007,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(8,310008,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(9,310009,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(10,310010,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(11,310011,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(12,310012,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(13,310013,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(14,310014,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(15,310015,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(16,310016,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(17,310017,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(18,310018,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(19,310019,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(20,310020,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(21,310020,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(22,310020,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(23,310020,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(24,310020,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(25,310019,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(26,310101,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(27,310102,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(28,310102,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(29,310102,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(30,310102,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(31,310103,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(32,310104,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(33,310105,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(34,310106,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(35,310107,'insert','dispensers','[''asset'', ''block_index'', ''escrow_quantity'', ''give_quantity'', ''give_remaining'', ''oracle_address'', ''origin'', ''satoshirate'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(36,310108,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(37,310109,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(38,310110,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(39,310111,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(40,310112,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(41,310113,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(42,310114,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(43,310115,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(44,310116,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(45,310481,'insert','sends','[''asset'', ''block_index'', ''destination'', ''memo'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(46,310482,'insert','sends','[''asset'', ''block_index'', ''destination'', ''memo'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(47,310486,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(48,310487,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(49,310488,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(50,310488,'insert','replace','[''address'', ''block_index'', ''options'']',0); +INSERT INTO messages VALUES(51,310489,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(52,310490,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(53,310490,'insert','replace','[''address'', ''block_index'', ''options'']',0); +INSERT INTO messages VALUES(54,310491,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(55,310492,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(56,310492,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(57,310492,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(58,310492,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(59,310492,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(60,310492,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(61,310493,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(62,310494,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(63,310495,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(64,310496,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(65,310497,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(66,310498,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +-- Triggers and indices on messages +CREATE TRIGGER block_update_messages + BEFORE UPDATE ON messages BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX messages_block_index_idx ON messages (block_index) + ; +CREATE INDEX messages_block_index_message_index_idx ON messages (block_index, message_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_match_expirations +DROP TABLE IF EXISTS order_match_expirations; +CREATE TABLE order_match_expirations( + order_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on order_match_expirations +CREATE TRIGGER block_update_order_match_expirations + BEFORE UPDATE ON order_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_match_expirations_block_index_idx ON order_match_expirations (block_index) + ; +CREATE INDEX order_match_expirations_tx0_address_idx ON order_match_expirations (tx0_address) + ; +CREATE INDEX order_match_expirations_tx1_address_idx ON order_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_matches +DROP TABLE IF EXISTS order_matches; +CREATE TABLE order_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + forward_asset TEXT, + forward_quantity INTEGER, + backward_asset TEXT, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_paid INTEGER, + status TEXT); +INSERT INTO order_matches VALUES('74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498_1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81',492,'74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',493,'1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'BTC',800000,310491,310492,310492,2000,2000,310512,7200,'pending'); +-- Triggers and indices on order_matches +CREATE TRIGGER block_update_order_matches + BEFORE UPDATE ON order_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_matches_backward_asset_idx ON order_matches (backward_asset) + ; +CREATE INDEX order_matches_block_index_idx ON order_matches (block_index) + ; +CREATE INDEX order_matches_forward_asset_idx ON order_matches (forward_asset) + ; +CREATE INDEX order_matches_id_idx ON order_matches (id) + ; +CREATE INDEX order_matches_match_expire_index_idx ON order_matches (match_expire_index) + ; +CREATE INDEX order_matches_status_idx ON order_matches (status) + ; +CREATE INDEX order_matches_tx0_address_forward_asset_idx ON order_matches (tx0_address, forward_asset) + ; +CREATE INDEX order_matches_tx0_hash_idx ON order_matches (tx0_hash) + ; +CREATE INDEX order_matches_tx1_address_backward_asset_idx ON order_matches (tx1_address, backward_asset) + ; +CREATE INDEX order_matches_tx1_hash_idx ON order_matches (tx1_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_expirations +DROP TABLE IF EXISTS order_expirations; +CREATE TABLE order_expirations( + order_hash TEXT PRIMARY KEY, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on order_expirations +CREATE TRIGGER block_update_order_expirations + BEFORE UPDATE ON order_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_expirations_block_index_idx ON order_expirations (block_index) + ; +CREATE INDEX order_expirations_source_idx ON order_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table orders +DROP TABLE IF EXISTS orders; +CREATE TABLE orders( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + give_asset TEXT, + give_quantity INTEGER, + give_remaining INTEGER, + get_asset TEXT, + get_quantity INTEGER, + get_remaining INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_required INTEGER, + fee_required_remaining INTEGER, + fee_provided INTEGER, + fee_provided_remaining INTEGER, + status TEXT); +INSERT INTO orders VALUES(7,'4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8',310006,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'DIVISIBLE',100000000,100000000,2000,312006,0,0,6800,6800,'open'); +INSERT INTO orders VALUES(10,'21460d5c07284f9be9baf824927d0d4e4eb790e297f3162305841607b672349b',310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'DIVISIBLE',100000000,100000000,2000,312009,0,0,6800,6800,'open'); +INSERT INTO orders VALUES(11,'1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a',310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'BTC',1000000,1000000,2000,312010,900000,900000,6800,6800,'open'); +INSERT INTO orders VALUES(12,'a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6',310011,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BTC',666667,666667,'XCP',100000000,100000000,2000,312011,0,0,1000000,1000000,'open'); +INSERT INTO orders VALUES(492,'74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498',310491,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'BTC',800000,800000,2000,312491,900000,900000,6800,6800,'open'); +INSERT INTO orders VALUES(493,'1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81',310492,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BTC',800000,800000,'XCP',100000000,100000000,2000,312492,0,0,1000000,1000000,'open'); +INSERT INTO orders VALUES(492,'74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498',310492,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,0,'BTC',800000,0,2000,312491,900000,892800,6800,6800,'open'); +INSERT INTO orders VALUES(493,'1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81',310492,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BTC',800000,0,'XCP',100000000,0,2000,312492,0,0,1000000,992800,'open'); +-- Triggers and indices on orders +CREATE TRIGGER block_update_orders + BEFORE UPDATE ON orders BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX orders_block_index_idx ON orders (block_index) + ; +CREATE INDEX orders_expire_index_idx ON orders (expire_index) + ; +CREATE INDEX orders_get_asset_give_asset_idx ON orders (get_asset, give_asset) + ; +CREATE INDEX orders_give_asset_idx ON orders (give_asset) + ; +CREATE INDEX orders_source_give_asset_idx ON orders (source, give_asset) + ; +CREATE INDEX orders_status_idx ON orders (status) + ; +CREATE INDEX orders_tx_hash_idx ON orders (tx_hash) + ; +CREATE INDEX orders_tx_index_tx_hash_idx ON orders (tx_index, tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_expirations +DROP TABLE IF EXISTS bet_match_expirations; +CREATE TABLE bet_match_expirations( + bet_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on bet_match_expirations +CREATE INDEX bet_match_expirations_block_index_idx ON bet_match_expirations (block_index) + ; +CREATE INDEX bet_match_expirations_tx0_address_idx ON bet_match_expirations (tx0_address) + ; +CREATE INDEX bet_match_expirations_tx1_address_idx ON bet_match_expirations (tx1_address) + ; +CREATE TRIGGER block_update_bet_match_expirations + BEFORE UPDATE ON bet_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_matches +DROP TABLE IF EXISTS bet_matches; +CREATE TABLE bet_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_bet_type INTEGER, + tx1_bet_type INTEGER, + feed_address TEXT, + initial_value INTEGER, + deadline INTEGER, + target_value REAL, + leverage INTEGER, + forward_quantity INTEGER, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bet_matches VALUES('2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',20,'2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',21,'5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',1,0,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000001,0.0,5040,9,9,310019,310020,310019,100,100,310119,5000000,'pending'); +INSERT INTO bet_matches VALUES('2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',20,'2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',21,'5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',1,0,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000001,0.0,5040,9,9,310019,310020,310102,100,100,310119,5000000,'settled'); +-- Triggers and indices on bet_matches +CREATE INDEX bet_matches_block_index_idx ON bet_matches (block_index) + ; +CREATE INDEX bet_matches_deadline_idx ON bet_matches (deadline) + ; +CREATE INDEX bet_matches_id_idx ON bet_matches (id) + ; +CREATE INDEX bet_matches_status_idx ON bet_matches (status) + ; +CREATE INDEX bet_matches_tx0_address_idx ON bet_matches (tx0_address) + ; +CREATE INDEX bet_matches_tx1_address_idx ON bet_matches (tx1_address) + ; +CREATE TRIGGER block_update_bet_matches + BEFORE UPDATE ON bet_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_resolutions +DROP TABLE IF EXISTS bet_match_resolutions; +CREATE TABLE bet_match_resolutions( + bet_match_id TEXT PRIMARY KEY, + bet_match_type_id INTEGER, + block_index INTEGER, + winner TEXT, + settled BOOL, + bull_credit INTEGER, + bear_credit INTEGER, + escrow_less_fee INTEGER, + fee INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_match_resolutions VALUES('2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',1,310102,'1',9,9,NULL,NULL,0); +-- Triggers and indices on bet_match_resolutions +CREATE TRIGGER block_update_bet_match_resolutions + BEFORE UPDATE ON bet_match_resolutions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_expirations +DROP TABLE IF EXISTS bet_expirations; +CREATE TABLE bet_expirations( + bet_index INTEGER PRIMARY KEY, + bet_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on bet_expirations +CREATE INDEX bet_expirations_block_index_idx ON bet_expirations (block_index) + ; +CREATE INDEX bet_expirations_source_idx ON bet_expirations (source) + ; +CREATE TRIGGER block_update_bet_expirations + BEFORE UPDATE ON bet_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bets +DROP TABLE IF EXISTS bets; +CREATE TABLE bets( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + feed_address TEXT, + bet_type INTEGER, + deadline INTEGER, + wager_quantity INTEGER, + wager_remaining INTEGER, + counterwager_quantity INTEGER, + counterwager_remaining INTEGER, + target_value REAL, + leverage INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bets VALUES(20,'2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1',310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000001,9,9,9,9,0.0,5040,100,310119,5000000,'open'); +INSERT INTO bets VALUES(21,'5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1388000001,9,9,9,9,0.0,5040,100,310120,5000000,'open'); +INSERT INTO bets VALUES(20,'2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1',310020,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000001,9,0,9,0,0.0,5040,100,310119,5000000,'filled'); +INSERT INTO bets VALUES(21,'5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1388000001,9,0,9,0,0.0,5040,100,310120,5000000,'filled'); +INSERT INTO bets VALUES(102,'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e',310101,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',3,1388000200,10,10,10,10,0.0,5040,1000,311101,5000000,'open'); +INSERT INTO bets VALUES(113,'d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048',310112,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',3,1388000200,10,10,10,10,0.0,5040,1000,311112,5000000,'open'); +INSERT INTO bets VALUES(488,'41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef',310487,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',1,1388000001,9,9,9,9,0.0,5040,100,310587,5000000,'open'); +-- Triggers and indices on bets +CREATE INDEX bets_block_index_idx ON bets (block_index) + ; +CREATE INDEX bets_expire_index_idx ON bets (expire_index) + ; +CREATE INDEX bets_feed_address_bet_type_idx ON bets (feed_address, bet_type) + ; +CREATE INDEX bets_feed_address_idx ON bets (feed_address) + ; +CREATE INDEX bets_status_idx ON bets (status) + ; +CREATE INDEX bets_tx_hash_idx ON bets (tx_hash) + ; +CREATE INDEX bets_tx_index_tx_hash_idx ON bets (tx_index, tx_hash) + ; +CREATE TRIGGER block_update_bets + BEFORE UPDATE ON bets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table broadcasts +DROP TABLE IF EXISTS broadcasts; +CREATE TABLE broadcasts( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + timestamp INTEGER, + value REAL, + fee_fraction_int INTEGER, + text TEXT, + locked BOOL, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO broadcasts VALUES(18,'d14388b74b63d93e4477b1fe8426028bb8ab20656703e3ce8deeb23c2fe0b8af',310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000000,1.0,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(19,'f9e0527c85a9084d7eda91fc30a49993370d029efea031a8ccccdf846146a660',310018,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH',0,NULL,NULL,NULL,1,'valid'); +INSERT INTO broadcasts VALUES(103,'16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae',310102,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000002,1.0,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(112,'510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186',310111,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',1388000002,1.0,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(487,'3b95e07a2194174ac020de27e8b2b6ee24d5fc120f118df516ba28495657cf14',310486,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',1388000000,1.0,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(489,'870fb08b373705423f31ccd91fdbcabe135ad92d74e709a959dfa2e12f9a6638',310488,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',1388000002,1.0,0,'options 0',0,'valid'); +INSERT INTO broadcasts VALUES(490,'685d7f99fa76a05201c3239a4e0d9060ea53307b171f6ad7d482a26c73e9c0d1',310489,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',0,NULL,NULL,NULL,1,'valid'); +INSERT INTO broadcasts VALUES(491,'7c437705c315212315c85c0b8ba09d358679c91be20b54f30929c5a6052426af',310490,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',1388000004,1.0,0,'options 1',0,'valid'); +-- Triggers and indices on broadcasts +CREATE TRIGGER block_update_broadcasts + BEFORE UPDATE ON broadcasts BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX broadcasts_block_index_idx ON broadcasts (block_index) + ; +CREATE INDEX broadcasts_status_source_idx ON broadcasts (status, source) + ; +CREATE INDEX broadcasts_status_source_tx_index_idx ON broadcasts (status, source, tx_index) + ; +CREATE INDEX broadcasts_timestamp_idx ON broadcasts (timestamp) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table btcpays +DROP TABLE IF EXISTS btcpays; +CREATE TABLE btcpays( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + order_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on btcpays +CREATE TRIGGER block_update_btcpays + BEFORE UPDATE ON btcpays BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX btcpays_block_index_idx ON btcpays (block_index) + ; +CREATE INDEX btcpays_destination_idx ON btcpays (destination) + ; +CREATE INDEX btcpays_source_idx ON btcpays (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table burns +DROP TABLE IF EXISTS burns; +CREATE TABLE burns( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + burned INTEGER, + earned INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO burns VALUES(1,'6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',310000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',62000000,93000000000,'valid'); +INSERT INTO burns VALUES(104,'65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b',310103,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',62000000,92999138821,'valid'); +INSERT INTO burns VALUES(105,'95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff',310104,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b',62000000,92999130460,'valid'); +INSERT INTO burns VALUES(106,'e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa',310105,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',62000000,92999122099,'valid'); +INSERT INTO burns VALUES(107,'bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3',310106,'mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK',10000,14999857,'valid'); +INSERT INTO burns VALUES(109,'93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73',310108,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',31000000,46499548508,'valid'); +INSERT INTO burns VALUES(117,'27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9',310116,'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx',62000000,92999030129,'valid'); +INSERT INTO burns VALUES(494,'c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a',310493,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH',62000000,92995878046,'valid'); +-- Triggers and indices on burns +CREATE TRIGGER block_update_burns + BEFORE UPDATE ON burns BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX burns_source_idx ON burns (source) + ; +CREATE INDEX burns_status_idx ON burns (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table cancels +DROP TABLE IF EXISTS cancels; +CREATE TABLE cancels( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + offer_hash TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on cancels +CREATE TRIGGER block_update_cancels + BEFORE UPDATE ON cancels BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX cancels_block_index_idx ON cancels (block_index) + ; +CREATE INDEX cancels_source_idx ON cancels (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dividends +DROP TABLE IF EXISTS dividends; +CREATE TABLE dividends( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset TEXT, + dividend_asset TEXT, + quantity_per_unit INTEGER, + fee_paid INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dividends +CREATE TRIGGER block_update_dividends + BEFORE UPDATE ON dividends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dividends_asset_idx ON dividends (asset) + ; +CREATE INDEX dividends_block_index_idx ON dividends (block_index) + ; +CREATE INDEX dividends_source_idx ON dividends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table issuances +DROP TABLE IF EXISTS issuances; +CREATE TABLE "issuances"( + tx_index INTEGER, + tx_hash TEXT, + msg_index INTEGER DEFAULT 0, + block_index INTEGER, + asset TEXT, + quantity INTEGER, + divisible BOOL, + source TEXT, + issuer TEXT, + transfer BOOL, + callable BOOL, + call_date INTEGER, + call_price REAL, + description TEXT, + fee_paid INTEGER, + locked BOOL, + status TEXT, + asset_longname TEXT, + reset BOOL, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index)); +INSERT INTO issuances VALUES(2,'1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1',0,310001,'DIVISIBLE',100000000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Divisible asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(3,'7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584',0,310002,'NODIVISIBLE',1000,0,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'No divisible asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(4,'c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140',0,310003,'CALLABLE',1000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Callable asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(5,'90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da',0,310004,'LOCKED',1000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Locked asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(6,'344dcc8909ca3a137630726d0071dfd2df4f7c855bac150c7d3a8367835c90bc',0,310005,'LOCKED',0,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Locked asset',0,1,'valid',NULL,0); +INSERT INTO issuances VALUES(17,'bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39',0,310016,'MAXI',9223372036854775807,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Maximum quantity',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(110,'e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e',0,310109,'PAYTOSCRIPT',1000,0,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',0,0,0,0.0,'PSH issued asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(114,'34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63',0,310113,'LOCKEDPREV',1000,1,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',0,0,0,0.0,'Locked asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(115,'025b810fce7735c5869b90846007e5f604f60c1beda4c1695f1c7fbec3d44bc2',0,310114,'LOCKEDPREV',0,1,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',0,0,0,0.0,'Locked asset',0,1,'valid',NULL,0); +INSERT INTO issuances VALUES(116,'4ab1a24283c1dbfc710be7b215d64e8a4510ee97af019e210049c25773b50beb',0,310115,'LOCKEDPREV',0,1,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',0,0,0,0.0,'changed',0,0,'valid',NULL,0); +INSERT INTO issuances VALUES(495,'321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503',0,310494,'DIVIDEND',100,1,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH',0,0,0,0.0,'',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(498,'076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f',0,310497,'PARENT',100000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Parent asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(499,'0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf',0,310498,'A95428956661682277',100000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Child of parent',25000000,0,'valid','PARENT.already.issued',0); +-- Triggers and indices on issuances +CREATE TRIGGER block_update_issuances + BEFORE UPDATE ON issuances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX issuances_asset_longname_idx ON issuances (asset_longname) + ; +CREATE INDEX issuances_asset_status_idx ON issuances (asset, status) + ; +CREATE INDEX issuances_block_index_idx ON issuances (block_index) + ; +CREATE INDEX issuances_source_idx ON issuances (source) + ; +CREATE INDEX issuances_status_asset_tx_index_idx ON issuances (status, asset, tx_index DESC) + ; +CREATE INDEX issuances_status_idx ON issuances (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sends +DROP TABLE IF EXISTS sends; +CREATE TABLE "sends"( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + quantity INTEGER, + status TEXT, + msg_index INTEGER DEFAULT 0, memo BLOB, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); +INSERT INTO sends VALUES(8,'6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753',310007,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000,'valid',0,NULL); +INSERT INTO sends VALUES(9,'4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43',310008,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'valid',0,NULL); +INSERT INTO sends VALUES(13,'698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6',310012,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000,'valid',0,NULL); +INSERT INTO sends VALUES(14,'0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132',310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000,'valid',0,NULL); +INSERT INTO sends VALUES(15,'1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a',310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5,'valid',0,NULL); +INSERT INTO sends VALUES(16,'e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c',310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10,'valid',0,NULL); +INSERT INTO sends VALUES(111,'f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7',310110,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000,'valid',0,NULL); +INSERT INTO sends VALUES(482,'b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5',310481,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'valid',0,X'68656C6C6F'); +INSERT INTO sends VALUES(483,'c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34',310482,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'valid',0,X'FADE0001'); +INSERT INTO sends VALUES(496,'02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e',310495,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10,'valid',0,NULL); +INSERT INTO sends VALUES(497,'a35ab1736565aceddbd1d71f92fc7f39d1361006aa9099f731e54e762964d5ba',310496,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046,'valid',0,NULL); +-- Triggers and indices on sends +CREATE TRIGGER block_update_sends + BEFORE UPDATE ON sends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sends_asset_idx ON sends (asset) + ; +CREATE INDEX sends_block_index_idx ON sends (block_index) + ; +CREATE INDEX sends_destination_idx ON sends (destination) + ; +CREATE INDEX sends_memo_idx ON sends (memo) + ; +CREATE INDEX sends_source_idx ON sends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_match_expirations +DROP TABLE IF EXISTS rps_match_expirations; +CREATE TABLE rps_match_expirations( + rps_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_match_expirations +CREATE TRIGGER block_update_rps_match_expirations + BEFORE UPDATE ON rps_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_match_expirations_block_index_idx ON rps_match_expirations (block_index) + ; +CREATE INDEX rps_match_expirations_tx0_address_idx ON rps_match_expirations (tx0_address) + ; +CREATE INDEX rps_match_expirations_tx1_address_idx ON rps_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_expirations +DROP TABLE IF EXISTS rps_expirations; +CREATE TABLE rps_expirations( + rps_index INTEGER PRIMARY KEY, + rps_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_expirations +CREATE TRIGGER block_update_rps_expirations + BEFORE UPDATE ON rps_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expirations_block_index_idx ON rps_expirations (block_index) + ; +CREATE INDEX rps_expirations_source_idx ON rps_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rpsresolves +DROP TABLE IF EXISTS rpsresolves; +CREATE TABLE rpsresolves( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + move INTEGER, + random TEXT, + rps_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on rpsresolves +CREATE TRIGGER block_update_rpsresolves + BEFORE UPDATE ON rpsresolves BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rpsresolves_block_index_idx ON rpsresolves (block_index) + ; +CREATE INDEX rpsresolves_rps_match_id_idx ON rpsresolves (rps_match_id) + ; +CREATE INDEX rpsresolves_source_idx ON rpsresolves (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_matches +DROP TABLE IF EXISTS rps_matches; +CREATE TABLE rps_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_move_random_hash TEXT, + tx1_move_random_hash TEXT, + wager INTEGER, + possible_moves INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps_matches +CREATE TRIGGER block_update_rps_matches + BEFORE UPDATE ON rps_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_matches_id_idx ON rps_matches (id) + ; +CREATE INDEX rps_matches_match_expire_index_idx ON rps_matches (match_expire_index) + ; +CREATE INDEX rps_matches_status_idx ON rps_matches (status) + ; +CREATE INDEX rps_matches_tx0_address_idx ON rps_matches (tx0_address) + ; +CREATE INDEX rps_matches_tx1_address_idx ON rps_matches (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps +DROP TABLE IF EXISTS rps; +CREATE TABLE rps( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + possible_moves INTEGER, + wager INTEGER, + move_random_hash TEXT, + expiration INTEGER, + expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps +CREATE TRIGGER block_update_rps + BEFORE UPDATE ON rps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expire_index_idx ON rps (expire_index) + ; +CREATE INDEX rps_source_idx ON rps (source) + ; +CREATE INDEX rps_status_idx ON rps (status) + ; +CREATE INDEX rps_tx_hash_idx ON rps (tx_hash) + ; +CREATE INDEX rps_tx_index_idx ON rps (tx_index) + ; +CREATE INDEX rps_tx_index_tx_hash_idx ON rps (tx_index, tx_hash) + ; +CREATE INDEX rps_wager_possible_moves_idx ON rps (wager, possible_moves) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table destructions +DROP TABLE IF EXISTS destructions; +CREATE TABLE destructions( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset INTEGER, + quantity INTEGER, + tag TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on destructions +CREATE TRIGGER block_update_destructions + BEFORE UPDATE ON destructions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX destructions_source_idx ON destructions (source) + ; +CREATE INDEX destructions_status_idx ON destructions (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table assets +DROP TABLE IF EXISTS assets; +CREATE TABLE assets( + asset_id TEXT UNIQUE, + asset_name TEXT UNIQUE, + block_index INTEGER, + asset_longname TEXT); +INSERT INTO assets VALUES('0','BTC',NULL,NULL); +INSERT INTO assets VALUES('1','XCP',NULL,NULL); +INSERT INTO assets VALUES('697326324582','DIVISIBLE',310001,NULL); +INSERT INTO assets VALUES('1911882621324134','NODIVISIBLE',310002,NULL); +INSERT INTO assets VALUES('16199343190','CALLABLE',310003,NULL); +INSERT INTO assets VALUES('137134819','LOCKED',310004,NULL); +INSERT INTO assets VALUES('211518','MAXI',310016,NULL); +INSERT INTO assets VALUES('2122675428648001','PAYTOSCRIPT',310109,NULL); +INSERT INTO assets VALUES('62667321322601','LOCKEDPREV',310113,NULL); +INSERT INTO assets VALUES('26819977213','DIVIDEND',310494,NULL); +INSERT INTO assets VALUES('178522493','PARENT',310497,NULL); +INSERT INTO assets VALUES('95428956661682277','A95428956661682277',310498,'PARENT.already.issued'); +-- Triggers and indices on assets +CREATE INDEX assets_asset_id_idx ON assets (asset_id) + ; +CREATE UNIQUE INDEX assets_asset_longname_idx ON assets (asset_longname) + ; +CREATE INDEX assets_asset_name_idx ON assets (asset_name) + ; +CREATE TRIGGER block_update_assets + BEFORE UPDATE ON assets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table addresses +DROP TABLE IF EXISTS addresses; +CREATE TABLE addresses( + address TEXT UNIQUE, + options INTEGER, + block_index INTEGER); +INSERT INTO addresses VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',0,310488); +INSERT INTO addresses VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',1,310490); +-- Triggers and indices on addresses +CREATE INDEX addresses_address_idx ON addresses (address) + ; +CREATE TRIGGER block_update_addresses + BEFORE UPDATE ON addresses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sweeps +DROP TABLE IF EXISTS sweeps; +CREATE TABLE sweeps( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + flags INTEGER, + status TEXT, + memo BLOB, + fee_paid INTEGER, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on sweeps +CREATE TRIGGER block_update_sweeps + BEFORE UPDATE ON sweeps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sweeps_block_index_idx ON sweeps (block_index) + ; +CREATE INDEX sweeps_destination_idx ON sweeps (destination) + ; +CREATE INDEX sweeps_memo_idx ON sweeps (memo) + ; +CREATE INDEX sweeps_source_idx ON sweeps (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispensers +DROP TABLE IF EXISTS dispensers; +CREATE TABLE dispensers( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + asset TEXT, + give_quantity INTEGER, + escrow_quantity INTEGER, + satoshirate INTEGER, + status INTEGER, + give_remaining INTEGER, + oracle_address TEXT, + last_status_tx_hash TEXT, + origin TEXT, + dispense_count INTEGER DEFAULT 0); +INSERT INTO dispensers VALUES(108,'9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec',310107,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',100,100,100,0,100,NULL,NULL,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b',0); +-- Triggers and indices on dispensers +CREATE TRIGGER block_update_dispensers + BEFORE UPDATE ON dispensers BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispensers_asset_idx ON dispensers (asset) + ; +CREATE INDEX dispensers_block_index_idx ON dispensers (block_index) + ; +CREATE INDEX dispensers_give_remaining_idx ON dispensers (give_remaining) + ; +CREATE INDEX dispensers_last_status_tx_hash_idx ON dispensers (last_status_tx_hash) + ; +CREATE INDEX dispensers_source_asset_origin_idx ON dispensers (source, asset, origin) + ; +CREATE INDEX dispensers_source_idx ON dispensers (source) + ; +CREATE INDEX dispensers_source_origin_idx ON dispensers (source, origin) + ; +CREATE INDEX dispensers_status_block_index_idx ON dispensers (status, block_index) + ; +CREATE INDEX dispensers_status_idx ON dispensers (status) + ; +CREATE INDEX dispensers_tx_hash_idx ON dispensers (tx_hash) + ; +CREATE INDEX dispensers_tx_index_idx ON dispensers (tx_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenses +DROP TABLE IF EXISTS dispenses; +CREATE TABLE dispenses ( + tx_index INTEGER, + dispense_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, dispense_index, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenses +CREATE TRIGGER block_update_dispenses + BEFORE UPDATE ON dispenses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenses_block_index_idx ON dispenses (block_index) + ; +CREATE INDEX dispenses_dispenser_tx_hash_idx ON dispenses (dispenser_tx_hash) + ; +CREATE INDEX dispenses_tx_hash_idx ON dispenses (tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenser_refills +DROP TABLE IF EXISTS dispenser_refills; +CREATE TABLE dispenser_refills( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, tx_hash, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) + REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenser_refills +CREATE TRIGGER block_update_dispenser_refills + BEFORE UPDATE ON dispenser_refills BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenser_refills_block_index_idx ON dispenser_refills (block_index) + ; +CREATE INDEX dispenser_refills_tx_hash_idx ON dispenser_refills (tx_hash) + ; + +COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/simplesig.json b/counterparty-lib/counterpartylib/test/fixtures/scenarios/simplesig.json similarity index 51% rename from counterpartylib/test/fixtures/scenarios/simplesig.json rename to counterparty-lib/counterpartylib/test/fixtures/scenarios/simplesig.json index 58a3692afc..be844562c4 100644 --- a/counterpartylib/test/fixtures/scenarios/simplesig.json +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/simplesig.json @@ -3,72 +3,72 @@ "burn": "0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac9b3d3808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "010000000197a5f31952387b14fab7862dab2ad3517930ae232dccf5e097424d3da3b0c56d010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb974529b7c2a7965ff221029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0bec3708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "010000000197a5f31952387b14fab7862dab2ad3517930ae232dccf5e097424d3da3b0c56d010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb974529b7c2a7965ff221029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9b063808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "order": "0100000001633d3b746d468e1543444d085d9aa560843f402dea5291cc956938d71e0535e5020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb974529b7c2a7965f0821029ea8cc75076c9fb9c5417f502a30fc28198b34982dbb629ec04b4f8b05a07177210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae538b2808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "order": "01000000018c8decbdb4b4846e4aee1cec656c8a765477dfd328aed2ccd48bed42a33b273b020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb974529b7c2a7965f0821029ea8cc75076c9fb9c5417f502a30fc28198b34982dbb629ec04b4f8b05a07177210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae73c02808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "order": "01000000017953bb9f3aadb2e6aa1266c18d7cd2aea98f424437fa77226473616dbada7f50010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452d0f1e67965fed21039ea8cc75076d9fb9c541785f3bb0fc28198b34982db6d93ec04b4f8b05a07158210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4b522808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "order": "0100000001594c443368e654795e1c12cb16a683c99d156cd2ce580f0604fce965f42edb6b010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452d0f1e67965fed21039ea8cc75076d9fb9c541785f3bb0fc28198b34982db6d93ec04b4f8b05a07158210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefba12808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "btcpay": "010000000124141890c76b3c0bed67e519a63d174843509b73589fa0a3961ff75cc44a8e17010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0480f0fa02000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e00000000000069512102e34ccc12f76f0562d2061e675c3eedb77d771ed094ee9c6d726f0fbd8e388d1f2102e2250d1315c7790b687be51e9849ebac534f686f322dc13e5f133c1055e33955210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae781e00000000000069512103c94ccc12f76f0562d21123c14e8bf580cc26146460d4ffb3452b4d3227965f2021029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae10ff2c05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "btcpay": "01000000013cf81f7a6a6a48a2e6ac5fa9d11011a7391c0b61640addc7ecc6a9358c0fd036010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0480f0fa02000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace80300000000000069512103e34ccc12f76f0562d2061e675c054943337f965ff4cae4cf8bf92127ba5fdc2f210338be07671b33e6ed232949e18769caf216070131eb57a543ca2f2e801999d6fa210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee80300000000000069512102c94ccc12f76f0562d2170eb6fe313e8b655215c98ad313ab452b4d3227965f1621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee0832d05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "0100000001824ef90de98f41c3833160caaa299de0231247e6e3dc38ddb5148826576e386a030000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102f94ccc12f76f0562d2061e67436e926dc71a7fe497cceb974510d7f827975ff821029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae08c62c05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "010000000199f00367ac968a9b013b33a7ebad0358ed4213ad261fa60b23db79f9f85d3c84030000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102f94ccc12f76f0562d2061e67436e926dc71a7fe497cceb974510d7f827975ff821029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae68652d05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "0100000001d67cea84371befcf39b54d381129992529f3eaf175a668c6e49eed9de484c222010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512103f34ccc12f76f0562d2061e67436e926dc71a7fe498cceb97452b4cb487965fa921039ea8cc75076d9fb9c32715caa9518e22198b34982dbb629ec04b4f8b05a07180210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae008d2c05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "0100000001df6a8572d091d9b6b635d308e11a5cf5637c87cd985cdcd56fcb34d0441d955d010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512103f34ccc12f76f0562d2061e67436e926dc71a7fe498cceb97452b4cb487965fa921039ea8cc75076d9fb9c32715caa9518e22198b34982dbb629ec04b4f8b05a07180210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef0462d05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "0100000001282ea3652b69d3aabbc2638542f788e92aa231527dfaba7c52e2de515c77fe21010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe497cceb97452b703b27965f0721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae703b2c05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "0100000001598cec7048928072dc96f2e33dcb0b3b4d4f2e5a26b10fb7b53a2a4290f5442b010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe497cceb97452b703b27965f0721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef00f2d05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "01000000014280d749156ab9c90ee74f27cb525043cd7495247308e08222ae7dfdd4d21b61020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d3029965f8621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee0e92b05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "0100000001b85d615e4440d242eeeb3aede4b343d9c622c6e3b81cb7b4ee94bbc223fb3658020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d3029965f8621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef0d82c05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "dividend": "01000000013dd475b4c4e95e5a4eceae921a42a4a2f2dc03a030fa94d15fc199c6b1b6402f020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512103fa4ccc12f76f0562d2061e67656e926dc71a7fa1a8cceb97452b4d7540965fde21029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed8b02b05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "dividend": "0100000001129406fe6b4a58f11eb9909279a2177c12d74b8ada2b50997084b712776f3e84020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512103fa4ccc12f76f0562d2061e67656e926dc71a7fa1a8cceb97452b4d7540965fde21029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae78ba2c05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "dividend": "01000000019ebdbebe73de91f0ac0e53b63b57e41583b0b94c28056744d20715fd43303c8d010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102fa4ccc12f76f0562d2061e67656e926dc71a7fa0d0cceb97452b4d754f965fb421029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed0772b05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "dividend": "01000000011855d757596988e797bf4d230bff6b9de78382a87ac34b33848fa1f3d72fae42010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102fa4ccc12f76f0562d2061e67656e926dc71a7fa0d0cceb97452b4d754f965fb421029ea8cc75076c9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07163210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae009c2c05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "broadcast": "01000000010b49a6dd18f5aafcf17e2a1e11d4aa5024e2a17f8dfbcb297b2a0f84bad63013010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ec75a26a3f0cceb97452eb8d2d89f0a7b2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aec83e2b05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "broadcast": "0100000001103c13011f99b74b35148726d49b0a77ca9fa24300ed4f95ab4dbcdde1231120010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ec75a26a3f0cceb97452eb8d2d89f0a7b2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae887d2c05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "bet": "010000000191c64c0a5579833f51794f238ef9bfa5f88a43441d686f3c311bc4c34994216b010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb95bfdbcd3227965f5421039fd5b435076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a07174210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae38ed2a05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "bet": "0100000001840a1e177fdcee4455ab5865232b9a10ebcf78e088c2672b3bf61e8ea24ffa1a010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb95bfdbcd3227965f5421039fd5b435076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a07174210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae88462c05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "bet": "0100000001643f3e8b634598aa5ee24f1e8d0b6b392a30da08778bd073727f3da59843d372020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb9638530d3227965f7721039cd1f115076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a071ee210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea89b2a05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "bet": "0100000001817ee0b771b1a9992c83104350e2f4b87327a0aac869be85122d41bad3de2570020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb9638530d3227965f7721039cd1f115076d9fb9c5417aa5cb30c732198b34922dbb629ec04b4f8b05a071ee210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae880f2c05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "bet": "0100000001da4bfab481a9c9d1e999a85ff17389d56837ef615fa66d2ca8599d420f3366d9020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb9fb5facd3227965f6b21028a745ff5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0717a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae184a2a05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "bet": "0100000001429e6f247625afceace7ff6d97801db3d2c53b64fc6f9d9b2c4d412d05ab66e5020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c291ba3f0cceb9fb5facd3227965f6b21028a745ff5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0717a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae88d82b05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "bet": "0100000001937f1779c451571398b5c1fa10c90fc4cb98d6dae609e556a23ed5dcf92467f9020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb8399b8cd3227965fdf210396581df5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a07111210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae88f82905000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "bet": "01000000016aa7d46099d619dfb6969af39305857a2b0634cee1e17a0b779138aa19e13a3d020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c291ba3f0cceb8399b8cd3227965fdf210396581df5076d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a07111210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae88a12b05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "bet": "0100000001f62e057dda950bdfb5ac8a2879f953f71de69707415ee78951d3a127e0b9a2c4020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e00000000000069512103ec4ccc12f76f0562d2061e677f6e903f7c29b7a3f0ccebbbf13ccd3227965fca2102b816faf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a071fc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef8a62905000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "bet": "0100000001c80bf449d10dd1e4b1e65589cd8a2c067106ed92aae345ba747619c9f14338a7020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace80300000000000069512103ec4ccc12f76f0562d2061e677f6e903f7c29b7a3f0ccebbbf13ccd3227965fca2102b816faf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a071fc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae886a2b05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "bet": "0100000001aba44bb5443703a8ebeb6ab3909bb17afcd32811d011b5cfad949e8b52b77da0020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e00000000000069512102ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0ccebb1fb1dcd3227965f282102b21cdbf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0712a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae68552905000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "bet": "0100000001f541eee5723784db08d17f26006cc22606f1206f4b72b93bf4edec6ad5874a19020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace80300000000000069512102ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0ccebb1fb1dcd3227965f282102b21cdbf5389d9fb9c5417aa5cb30ef92198b34922dbb629ec04b4f8b05a0712a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae88332b05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "broadcast": "0100000001f3edae38ee0cb7444f3c5384aa4a76392d84628a97f2773e6308ef9a49312462020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ef55a2754d5a317861b2b0179679f0aff2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae601c2905000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "broadcast": "010000000107a2a684bf4951f419d65c5d3d57c7761084e5c8f6e28ec0afcb36e141a1ba72020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ef55a2754d5a317861b2b0179679f0aff2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae10152b05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "broadcast": "010000000148f544744f0985390af32c964c274b0fc519ab085a8bbd06e69bfb2a6d218441010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512103f84ccc12f76f0562d2061e67493c295ea25a26b6037aae368e2b0179679f0adc2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae58e32805000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "broadcast": "01000000012f99a5367a4af321c7186d5fa3b74376ca3d4aef303189efb3c087fd41e65d06010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512103f84ccc12f76f0562d2061e67493c295ea25a26b6037aae368e2b0179679f0adc2103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae98f62a05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "broadcast": "01000000017d062b90d640183e90f425a05a3620e9bc0f28548061956bcc0d06952435c181010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295e0e5a7fa3f0cceb97452b0179679f0ac02103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae50aa2805000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "broadcast": "01000000019ea6d4cd94bbb4de68977d4d9fcd0b3c77a15c019402e1a88696555c0015c07c010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295e0e5a7fa3f0cceb97452b0179679f0ac02103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae20d82a05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "order": "0100000001ad6799c8773827d89a58ceb450fd122cb53a6e7ea63da22182640fdd3a7b8e24010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fe497cceb974529b7c2a7965f9621029ea8cc75076c9fb9c541785f3bb0fc28198b34982dbb629ec04b4f8b05a07191210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae48712805000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "order": "0100000001c93f8dc4c3f44bb8688309ca5d845033ea0e55ec377dfd523240f3cebcb89908010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fe497cceb974529b7c2a7965f9621029ea8cc75076c9fb9c541785f3bb0fc28198b34982dbb629ec04b4f8b05a07191210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aea8b92a05000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "burn": "010000000258acc58c05899fdd229f20b53eb6a18784772c0d57e40102fc8bd7e21300896f010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff824ef90de98f41c3833160caaa299de0231247e6e3dc38ddb5148826576e386a000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0200e1f505000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac22592d02000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "burn": "01000000022a859b989df6611411f2fe20bec3e1b6114c04b21c74f40b0fc3dee1f45359eb010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff99f00367ac968a9b013b33a7ebad0358ed4213ad261fa60b23db79f9f85d3c84000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0200e1f505000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac82a12f02000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "0100000001bcf68f4dd25256b8a79e33f0ef1f35ceb1471fd9e644f02428cb30e6023df7c3010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d1537965fe121029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae92072d02000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "0100000001bcf68f4dd25256b8a79e33f0ef1f35ceb1471fd9e644f02428cb30e6023df7c3010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fe498cceb97452b4d1537965fe121029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae826a2f02000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" } ] \ No newline at end of file diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/simplesig.log b/counterparty-lib/counterpartylib/test/fixtures/scenarios/simplesig.log new file mode 100644 index 0000000000..25d552515a --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/simplesig.log @@ -0,0 +1,234 @@ +Creating connection to `:memory:`. +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.99909140; txid: ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1; vout: 0; confirmations: 75'] +Fee/KB 0.00025000 +New input: amount: 1.99909140; txid: ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1; vout: 0; confirmations: 75 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 1.37903515 BTC +Burn: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc burned BTC for XCP (6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37903515; txid: 6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37903515; txid: 6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.37889435 BTC +Send: XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (3b273ba342ed8bd4ccd2ae28d3df7754768a6c65ec1cee4a6e84b4b4bdec8d8c) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37889435; txid: 3b273ba342ed8bd4ccd2ae28d3df7754768a6c65ec1cee4a6e84b4b4bdec8d8c; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37889435; txid: 3b273ba342ed8bd4ccd2ae28d3df7754768a6c65ec1cee4a6e84b4b4bdec8d8c; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 1000000 +Size: 272 Fee: 0.01000000 Change quantity: 1.36888435 BTC +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59) [open] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36888435; txid: 6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36888435; txid: 6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.36880635 BTC +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c) [open] +Considering: 6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59 +Tx0 Price: 2.0; Tx1 Inverse Price: 2.1 +Potential forward quantities: 50000000, 52500000 +Forward Quantity: 50000000 +Backward Quantity: 100000000 +Tx0 fee provided remaining: 0.01; required fee: 0.00857142 +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59) [open] +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c) [open] +Order Match: BTC for XCP (6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59_36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c) [pending] +Order match has only -10 confirmation(s). +data_btc_out=2000 (data_value=1000 len(data_array)=2) +Sorted candidate UTXOs: ['amount: 1.36880635; txid: 36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36880635; txid: 36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 387 final_fee 9675 +Size: 387 Fee: 0.00009675 Change quantity: 0.86868960 BTC +Order Match: BTC for XCP (6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59_36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c) [completed] +Database: set status of order_match 6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59_36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c to completed. +BTC Payment: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc paid BTC to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc for order match 6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59_36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c (843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86868960; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 3; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.86868960; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 3; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.86861160 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 10.0 of divisible asset BBBB (5d951d44d034cb6fd5dc5c98cd877c63f55c1ae108d335b6b6d991d072856adf) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86861160; txid: 5d951d44d034cb6fd5dc5c98cd877c63f55c1ae108d335b6b6d991d072856adf; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 2'] +Fee/KB 0.00025000 +New input: amount: 0.86861160; txid: 5d951d44d034cb6fd5dc5c98cd877c63f55c1ae108d335b6b6d991d072856adf; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.86853360 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 100000 of indivisible asset BBBC (2b44f590422a3ab5b70fb1265a2e4f4d3b0bcb3de3f296dc7280924870ec8c59) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86853360; txid: 2b44f590422a3ab5b70fb1265a2e4f4d3b0bcb3de3f296dc7280924870ec8c59; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 3'] +Fee/KB 0.00025000 +New input: amount: 0.86853360; txid: 2b44f590422a3ab5b70fb1265a2e4f4d3b0bcb3de3f296dc7280924870ec8c59; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.86839280 BTC +Send: BBBB from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (5836fb23c2bb94eeb4b71cb8e3c622c6d943b3e4ed3aebee42d240445e615db8) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86839280; txid: 5836fb23c2bb94eeb4b71cb8e3c622c6d943b3e4ed3aebee42d240445e615db8; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 4'] +Fee/KB 0.00025000 +New input: amount: 0.86839280; txid: 5836fb23c2bb94eeb4b71cb8e3c622c6d943b3e4ed3aebee42d240445e615db8; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.86825200 BTC +Send: BBBC from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (843e6f7712b7847099502bda8a4bd7127c17a2799290b91ef1584a6bfe069412) [valid] +Total quantity to be distributed in dividends: 0.00000024 XCP +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86825200; txid: 843e6f7712b7847099502bda8a4bd7127c17a2799290b91ef1584a6bfe069412; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 5'] +Fee/KB 0.00025000 +New input: amount: 0.86825200; txid: 843e6f7712b7847099502bda8a4bd7127c17a2799290b91ef1584a6bfe069412; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.86817400 BTC +Dividend: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc paid XCP per unit of BBBB (42ae2fd7f3a18f84334bc37aa88283e79d6bff0b234dbf97e788695957d75518) [valid] +Total quantity to be distributed in dividends: 0.004208 XCP +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86817400; txid: 42ae2fd7f3a18f84334bc37aa88283e79d6bff0b234dbf97e788695957d75518; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 6'] +Fee/KB 0.00025000 +New input: amount: 0.86817400; txid: 42ae2fd7f3a18f84334bc37aa88283e79d6bff0b234dbf97e788695957d75518; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.86809600 BTC +Dividend: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc paid XCP per unit of BBBC (201123e1ddbc4dab954fed0043a29fca770a9bd4268714354bb7991f01133c10) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86809600; txid: 201123e1ddbc4dab954fed0043a29fca770a9bd4268714354bb7991f01133c10; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 7'] +Fee/KB 0.00025000 +New input: amount: 0.86809600; txid: 201123e1ddbc4dab954fed0043a29fca770a9bd4268714354bb7991f01133c10; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.86801800 BTC +Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:20 with a fee of 99.999999%% (1afa4fa28e1ef63b2b67c288e078cfeb109a2b236558ab5544eedc7f171e0a84) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86801800; txid: 1afa4fa28e1ef63b2b67c288e078cfeb109a2b236558ab5544eedc7f171e0a84; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 8'] +Fee/KB 0.00025000 +New input: amount: 0.86801800; txid: 1afa4fa28e1ef63b2b67c288e078cfeb109a2b236558ab5544eedc7f171e0a84; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.86787720 BTC +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86787720; txid: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 9', 'amount: 0.00005430; txid: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.86787720; txid: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.86773640 BTC +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered BTC for XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59) [expired] +Expired order: 6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59 +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Considering: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81 +Tx0 Inverse Odds: 0.5; Tx1 Odds: 0.6024096385542169 +Potential forward quantities: 50000000, 41500000 +Forward Quantity: 41500000 +Backward Quantity: 20750000 +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Bet Match: BullCFD for XCP against BearCFD for XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:35:00 that value, leveraged 3.0x (7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81_e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86773640; txid: e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 10', 'amount: 0.00005430; txid: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81; vout: 0; confirmations: 2', 'amount: 0.00005430; txid: e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.86773640; txid: e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.86759560 BTC +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered XCP for BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c) [expired] +Expired order: 36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86759560; txid: 3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 11', 'amount: 0.00005430; txid: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81; vout: 0; confirmations: 3', 'amount: 0.00005430; txid: e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42; vout: 0; confirmations: 2', 'amount: 0.00005430; txid: 3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.86759560; txid: 3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.86745480 BTC +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Considering: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81 +Skipping: leverages disagree. +Considering: 3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a +Tx0 Inverse Odds: 2.3333333333333335; Tx1 Odds: 2.3333333333333335 +Potential forward quantities: 150000000, 150000000 +Forward Quantity: 150000000 +Backward Quantity: 350000000 +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Bet Match: BullCFD for XCP against BearCFD for XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:35:00 that value, leveraged 1.0x (3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a_a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86745480; txid: a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 12', 'amount: 0.00005430; txid: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81; vout: 0; confirmations: 4', 'amount: 0.00005430; txid: e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42; vout: 0; confirmations: 3', 'amount: 0.00005430; txid: 3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a; vout: 0; confirmations: 2', 'amount: 0.00005430; txid: a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.86745480; txid: a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.86731400 BTC +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86731400; txid: 194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 13', 'amount: 0.00005430; txid: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81; vout: 0; confirmations: 5', 'amount: 0.00005430; txid: e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42; vout: 0; confirmations: 4', 'amount: 0.00005430; txid: 3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a; vout: 0; confirmations: 3', 'amount: 0.00005430; txid: a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8; vout: 0; confirmations: 2', 'amount: 0.00005430; txid: 194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.86731400; txid: 194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.86717320 BTC +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Considering: 194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5 +Tx0 Inverse Odds: 0.8666666666666667; Tx1 Odds: 0.8666666666666667 +Potential forward quantities: 750000000, 750000000 +Forward Quantity: 750000000 +Backward Quantity: 650000000 +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Bet Match: Equal for XCP against NotEqual for XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:36:40 that value, leveraged 1.0x (194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5_72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86717320; txid: 72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 14', 'amount: 0.00005430; txid: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81; vout: 0; confirmations: 6', 'amount: 0.00005430; txid: e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42; vout: 0; confirmations: 5', 'amount: 0.00005430; txid: 3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a; vout: 0; confirmations: 4', 'amount: 0.00005430; txid: a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8; vout: 0; confirmations: 3', 'amount: 0.00005430; txid: 194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5; vout: 0; confirmations: 2', 'amount: 0.00005430; txid: 72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.86717320; txid: 72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.86709520 BTC +Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:34:10 with a fee of 5.0%% (065de641fd87c0b3ef893130ef4a3dca7643b7a35f6d18c721f34a7a36a5992f) [valid] +Bet Match Force‐Liquidated: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81_e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42) +Bet Match: BullCFD for XCP against BearCFD for XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:35:00 that value, leveraged 3.0x (7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81_e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42) [settled: liquidated for bear] +Database: set status of bet_match 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81_e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42 to settled: liquidated for bear. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86709520; txid: 065de641fd87c0b3ef893130ef4a3dca7643b7a35f6d18c721f34a7a36a5992f; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 15', 'amount: 0.00005430; txid: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81; vout: 0; confirmations: 7', 'amount: 0.00005430; txid: e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42; vout: 0; confirmations: 6', 'amount: 0.00005430; txid: 3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a; vout: 0; confirmations: 5', 'amount: 0.00005430; txid: a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8; vout: 0; confirmations: 4', 'amount: 0.00005430; txid: 194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5; vout: 0; confirmations: 3', 'amount: 0.00005430; txid: 72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207; vout: 0; confirmations: 2'] +Fee/KB 0.00025000 +New input: amount: 0.86709520; txid: 065de641fd87c0b3ef893130ef4a3dca7643b7a35f6d18c721f34a7a36a5992f; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.86701720 BTC +Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:35:01 with a fee of 5.0%% (7cc015005c559686a8e10294015ca1773c0bcd9f4d7d9768deb4bb94cdd4a69e) [valid] +Bet Match Settled: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a_a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8) +Bet Match: BullCFD for XCP against BearCFD for XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:35:00 that value, leveraged 1.0x (3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a_a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8) [settled] +Database: set status of bet_match 3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a_a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8 to settled. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86701720; txid: 7cc015005c559686a8e10294015ca1773c0bcd9f4d7d9768deb4bb94cdd4a69e; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 16', 'amount: 0.00005430; txid: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81; vout: 0; confirmations: 8', 'amount: 0.00005430; txid: e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42; vout: 0; confirmations: 7', 'amount: 0.00005430; txid: 3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a; vout: 0; confirmations: 6', 'amount: 0.00005430; txid: a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8; vout: 0; confirmations: 5', 'amount: 0.00005430; txid: 194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5; vout: 0; confirmations: 4', 'amount: 0.00005430; txid: 72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207; vout: 0; confirmations: 3'] +Fee/KB 0.00025000 +New input: amount: 0.86701720; txid: 7cc015005c559686a8e10294015ca1773c0bcd9f4d7d9768deb4bb94cdd4a69e; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.86693920 BTC +Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:36:41 with a fee of 5.0%% (0899b8bccef3403252fd7d37ec550eea3350845dca098368b84bf4c3c48d3fc9) [valid] +Bet Match Settled: NotEqual won the pot of XCP; XCP credited to the feed address (194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5_72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207) +Bet Match: Equal for XCP against NotEqual for XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:36:40 that value, leveraged 1.0x (194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5_72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207) [settled: for notequal] +Database: set status of bet_match 194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5_72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207 to settled: for notequal. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.86693920; txid: 0899b8bccef3403252fd7d37ec550eea3350845dca098368b84bf4c3c48d3fc9; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 17', 'amount: 0.00005430; txid: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81; vout: 0; confirmations: 9', 'amount: 0.00005430; txid: e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42; vout: 0; confirmations: 8', 'amount: 0.00005430; txid: 3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a; vout: 0; confirmations: 7', 'amount: 0.00005430; txid: a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8; vout: 0; confirmations: 6', 'amount: 0.00005430; txid: 194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5; vout: 0; confirmations: 5', 'amount: 0.00005430; txid: 72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207; vout: 0; confirmations: 4'] +Fee/KB 0.00025000 +New input: amount: 0.86693920; txid: 0899b8bccef3403252fd7d37ec550eea3350845dca098368b84bf4c3c48d3fc9; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.86686120 BTC +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered BBBB for XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (eb5953f4e1dec30f0bf4741cb2044c11b6e1c3be20fef2111461f69d989b852a) [open] +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 0.86686120; txid: eb5953f4e1dec30f0bf4741cb2044c11b6e1c3be20fef2111461f69d989b852a; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 18', 'amount: 0.00005430; txid: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81; vout: 0; confirmations: 10', 'amount: 0.00005430; txid: e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42; vout: 0; confirmations: 9', 'amount: 0.00005430; txid: 3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a; vout: 0; confirmations: 8', 'amount: 0.00005430; txid: a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8; vout: 0; confirmations: 7', 'amount: 0.00005430; txid: 194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5; vout: 0; confirmations: 6', 'amount: 0.00005430; txid: 72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207; vout: 0; confirmations: 5'] +Fee/KB 0.00025000 +New input: amount: 0.86686120; txid: eb5953f4e1dec30f0bf4741cb2044c11b6e1c3be20fef2111461f69d989b852a; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: -0.13319505 BTC +New input: amount: 0.50000000; txid: 843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099; vout: 0; confirmations: 18 +final_fee inputs: 2 size: 406 final_fee 10150 +Size: 406 Fee: 0.00010150 Change quantity: 0.36675970 BTC +Burn: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc burned BTC for XCP (c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.36675970; txid: c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc; vout: 1; confirmations: 1', 'amount: 0.00005430; txid: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81; vout: 0; confirmations: 11', 'amount: 0.00005430; txid: e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42; vout: 0; confirmations: 10', 'amount: 0.00005430; txid: 3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a; vout: 0; confirmations: 9', 'amount: 0.00005430; txid: a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8; vout: 0; confirmations: 8', 'amount: 0.00005430; txid: 194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5; vout: 0; confirmations: 7', 'amount: 0.00005430; txid: 72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207; vout: 0; confirmations: 6'] +Fee/KB 0.00025000 +New input: amount: 0.36675970; txid: c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.36661890 BTC +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Expired bet: 7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81 +Send: BBBC from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (58b89d056b539d2cf9ddac4518ccca6744495127e0ce893eb71da2599cbf85ab) [valid] +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered BBBB for XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (eb5953f4e1dec30f0bf4741cb2044c11b6e1c3be20fef2111461f69d989b852a) [expired] +Expired order: eb5953f4e1dec30f0bf4741cb2044c11b6e1c3be20fef2111461f69d989b852a +Checking for conservation of assets. +XCP has been conserved (1498.99847262 XCP both issued and held) +BBBB has been conserved (10.0 BBBB both issued and held) +BBBC has been conserved (100000 BBBC both issued and held) +All assets have been conserved. diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/simplesig.sql b/counterparty-lib/counterpartylib/test/fixtures/scenarios/simplesig.sql new file mode 100644 index 0000000000..737d2bfc0d --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/simplesig.sql @@ -0,0 +1,1593 @@ +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table blocks +DROP TABLE IF EXISTS blocks; +CREATE TABLE blocks( + block_index INTEGER UNIQUE, + block_hash TEXT UNIQUE, + block_time INTEGER, + previous_block_hash TEXT UNIQUE, + difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, + PRIMARY KEY (block_index, block_hash)); +INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); +INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'cf0ea1d313e22ba5f413075b88e07dffc5c00e59f95eeb6d6dec935bd77f5ae4','f06c23e6040a063ed59693baa0d63492dce64e1debc7455b22f5535c9dfbdc67','e4eed12f6f05a0317da3041d28e5171bfb56b1cbeca7c3bc0e8b74d26123bfa4'); +INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'bdf1308701712d94da26f53fef4c440ea2fb7b0ef7361f424ba9263e747272bd','fac614e6f77f1b954c12523e9d0eeb4252f92f3640f7d067790a510a9e893811','4dcdfd74dd54fb930e2611549f49b2c95d164c65b870262b03280bb3a122e71b'); +INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'cf830f949715ebeac09d4441878f60ac04d691c09d6c25c62a0d30fb5886cba9','0c743d61c27efab7c83c1845f6b0446b67c9b59173318709d51363e75e7a0601','8ae6f3620a64dc024cdd54a7862e7d3dfe55ef75e175cc73bda9c5bf16c7b512'); +INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'e881a675a38c4649cd44e6406ddc494996c761671bc349dcdea1de430a84258d','9ae051d14f8d19db67a85c713eefc0a936f1bad818ae1138fcecb91506a46d88','c0813ad4647412e92c26b04f3f085aa8103b21df90efeb16eb9659ef51ee04f6'); +INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'13e0c6276f297ff1ca77705f1b18d807ca22f53735fba52f4f5c3766dc4b04e8','a865bc7b6e26b3c3868ae080ab927ce3f2dcdb7d3654ffbcd1b3a8111d0807b1','d001637478ab823411af88c27198258554d0653c133debf5dba45ff5893baad9'); +INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'765896f532b411af9f889687a750d44414296c20002f3e2abed9551a6822937d','59095fce5f573c2ff1b5eda5cd75c36227b0f9782601e7538215fea5317c505b','83bac12e9aea37d82a8ee95363dece5f40b1834f840aaa65e633a37272815691'); +INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'853e3a8d39c4e8bdb36a0ec01a8d20f12335fcc00a00ac271e9d83be471d394f','752821f935743579d04abcc94c104148b226cbc0777a6bb30bb7eceb29b85fca','4e1aee1aaa249feebe8f9af854a69ab3904c26baef6de66ea4429b50ab256ba0'); +INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'f2b2d250a94afa158f9ed84434c3ac7a0bfc97b4387e5e3c099afc95b8a6ad9c','405914410b5982b395f52f17ee4fc69dc0e4fb4c7a511009c700c0d1bdbfb563','cae8d0e7ceb29e367cae3b5e96c32a13c27312326a0c8784bcbf927d6caa038b'); +INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'8c44f15f5606b6fe984a9fa7df8d7d5381fe87a6c8b634469804328885668569','81714583a99f97b5cefc10510f507567e02f380bdb5741e2b5ef037816e8be17','f2739d2fc760288c588c3a921456a7ceafb6ba7751c5d3d1eca1c0869e09dda0'); +INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'ba378e9192f290d3f9d3dd1e46aeef3a185bd5aff1be809c8974fca8dc142987','9395234af8a78eb91afe7dd45a6701032af9926cba3e126e01f06547ffcb2e08','63820256fbe8d4476c5a56004362fc5821cc25987d8803d25339002fa89a5e5f'); +INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'64f78f9eedce2931aedfe413b4f4bdeb728752e1c897e0bd44c7db665976a723','09624bd24bdd3d945e0a75450915715fa9e9a077db33aa5bdb275b0c76e7f9e8','3cfcf658fb39da92c643ff247c302b97d15732d19735c41383acfaa9259b25c7'); +INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'671a1b4e1edd1f96dcfcc96d521fb2125ae5b9d2d01a76fc66686b7ed20c5662','aa59f74f7d3eeee95415b1bca4a090036cd9a2efb187880f7c72c69dc1bfc059','ae4c471be54fea1716f1d88a6e770c65366ef9403649af99db5f980e59e9acd7'); +INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'1f5b502c341699b5a59b87566c0fc02b7db5c657919f014e41a00303aa53efc8','ba55fd791587dad14742ad66d1515992a076eefbd54d1215806aa9db3811cf50','b2f17c4bf541cfe72ec12cf9689398afdc260ed7287276d8034697b80fe548ee'); +INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'cd0cfff6de5dd4381301929c740015d5910339ba915a83eb4229ecb91ae84c17','6c03bbdc682356647ad229247ed9d4000c2ffd03696695e0277c43b4e4d8fed8','8c7d662ec81c24f1cfbe044adebc8353e060924a7dbc0160285d1bba5fbeba86'); +INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'5012d84065c7a39b5563f4fadeaf30670b47df3856f43d40fda74de663753e4e','99b41cf441ebd1ad46c14b34a3da79586aee124ae643f196f23f0eadb9fbe50d','67aecf6ad8ddf0b89330ba6b2c333f05e25ecafdef8475ca388b01e785dcd610'); +INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'0356494d376b2b65b9f4b066b9d2baf2ae90d82369b87914bb58a67927ced5af','c6fff3cf22683f773cf2941f0eb9b5ed84647569c76d40cba61ca444852fceb6','7ce934aa8051372c20f60865d7c97b94aeadfc21ebc5347fb10ab956432cff90'); +INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'c90ff439bd04970ed9e6e25cbfce32160450925a37ba3360f40df8854529b52d','16e32aeb7155ac1b89e47925bb2367269d4fc81e9da0558266ad9722843202fd','5e0644e7313ace7238dfc4225c0e64b165be34bbd2359c26703d1ec8e6eca959'); +INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'19cf18f708dab6a983a2642802deb38d25b6fc205ea663059a0569fa38bdaf8d','94709d5f6bcb8df437947be80ac95e2e716a92645f3eec2d915cb7c088504f1c','0b164656037f73d19fd1373c0c446fd87e9d5a3a3ce31eab185efba63da16b80'); +INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'d9ac565fbe7bf18c1d899dab8e0c98e070880e36fa51710382017d46ddf837cf','e3e2ebfcee41e92d855051b2c2e4344600646ac3ac5b335084d5f5a23e872f3b','fa7cbfefd13bcc45868295e162746302076ec5116f8e1cc36748f4700fd476b8'); +INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'b66661deef419a50557d171cc1bcae04f5bc260ed1f5ff56cf08ef39158617a1','c89d7fa5df5eab9ac8a57f00c6cc2b9d75244ce412e12eb842c6a43297ee41a6','4927f3a9df694b11125e13c60f2305669ff5046cb83fea928c709b13167b73be'); +INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'57a6c53e41338011cb06cd60118961dcec0e800f62a2c4b1e9381c666319680f','5d8f062b1b5c6740eed53d90f4cd10a23f273237bda588f42fa35653a9fe5feb','b203f65ccc3d999d622e2d27424b88c3c471099d47d5568c6f7704eeed07dd0a'); +INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'66c16af10125f298796da828f1a6c2b43123cda38e3dfc57ccc25b00f3da17f8','94b751bb8af2f91fb1933dfae1edaa636836fe1f9100edc5c6b8bc793fea4b47','625b9e97013283ff3d941aa76d8694fff640ae46cfb86ca5b95d2278e3c05507'); +INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'43b6213cad601a389aed2a4e912be118dfab6cca5358d86bac03f4bee6765493','fcb847408d5ee30ef86a94a0495f53670b1157d4f33d627b62ebd84fb1321cf5','fba88f17053eb79901d350ee2b152143d6d50d0031cf24953ae08dc83b29c3b9'); +INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'8a9758963891bbfbdcb6515d8d3e49c941fedba7de82038776e9f8ed65e803c1','d21109a870f8542e8ef40f6d72e36fb0bb5ac4ad1e7b3232ba1b2bdcc735810e','fe0060edb883ad3be2d51b5e520a29f02a5dc51fc9955ee42ebdf658eeb6ee9a'); +INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'cb034ab4a3e252fdfe9973a672e208295741a52634c9332b1501d612e0012e19','52bcbfb439bfc9cf14e38d39a9d6c401a8798a20fe64238f070125e8e7905151','6988e2e0720f2feeed635f03d6cfc4258b26857039691baf65ceb08575c530c2'); +INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'5addc8253469d5c729cdffc1c637b75d9e8886a633d4406dedf2b1c16ba5b92a','e2d8891737534dde276dd1f7f51d42558b9ad60d88baada83f75951905e6f174','936d7f5dec141b3ea3ab0a8cce0dc009a74bfb851525ae5ad9ebebb0d88492de'); +INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'8620bd0283c320330631185d1b2351718f174732bd099324a0880719cdfc18c7','e7b6699c8b2b5857b60004dec9aa8aeda30ef42483ca16bc79e4ecdc1c0b4ce7','87ba4bab65b89ce7f1e2051a58192f9778d83ed826f7551a21e5a84c94212366'); +INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'96960e09478184f4f0ad38d1fc03f0c0240e58715a0a29745a6dc58c40003249','a7e32b5f0b6568eff793a1d12d32ab594f3886b417a6491b6ec641d15e906e9e','a69df36ffc8913ff5b161ddfdb1f27012e56fad073be9ca16eed481be5d7ec13'); +INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'2f556d2528abe1c4e9d31f6ed70d400d94633d4dfb54c9a4f250e1b054f9a384','8b22bfc6153a2e742e843a5263194ffcf3ab985d934e212266ca400ed568e710','440ac2c768e6d91e70797543a4e4a0e5aa635a6d7faabe00f256181f3cbdb9bc'); +INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'be195b1f7b7b55dcefb83907d954736d4bf059a9e32055131efd16602d7761d6','ad8654356f0a1ffb669528bf4c3625e9d43ce08d9dda7f1adc2e962b65d20b55','eec3b96a20518b1086ee43e3357117e348a66b37edf8e2250897f007e0f3484f'); +INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'d3a25656dbb63eecf1c89820581fcab193d750f3a09ca8ab34a5008c8d89051d','f9a6fb698ab5cf74c1d334f2bc3fc258738c330a5bf3614b8951c6f2d90263a1','c8a3c841fe23aa74abc5fd52980f41e49aa9186ad2ddce637ae072a143bc6cf2'); +INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'0edb535f8c6a40062a86e4ea327cf7fb70310b6d55a6654d5a23e54498aa3159','52c64812c82695720461525033471afc39749f788156239b06f72c7887206fa4','9a6abf22693a11d76dbf4b90e179af4449de1293f7b7ab1a47f0e5396a383920'); +INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'a9208a1b7f782852d652e5089c6485744031176b4d285ea985bbc1df0ccf49c0','4089c5ee6e83c7fdb9d8f0df917268b807801e7f0fb477b6a7fb4b9f931601f0','b16a74be4785070b45df5dd5040f40ba7eee1f8039e2b1ab215fca752a5b202d'); +INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'c8a973eb6bdd28dcab4f1b2a5e29e104944745e57a54e6d87b370aafb2e589f6','28e9816084711e62a27a7d33af7a023d9c375d67c6d7dd4fbe840d511d114fbb','c4ff876dd8b76c22181e2a98d9e7f90a221746dc797fd749c5ca0d7b9f1eb821'); +INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'0d7b5809b7a5aa5ff854cfe141490a78c9b33e16f8102a8e804dbf0a0a8c0842','37532a1b8cba78b522775b2feabd9dc786b259b49ae54af0279fd84061fcaf90','db3f598c14abb0db4670afbdcf7dc433fb9aa8e75f85e47c7d78d943054b6bfb'); +INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'6b4c99289086445a7bf575110172a661c1cd37c418b70afd8ef3be0982041f5e','6d74b1faad84274944078e3fa21083b3776e37da614acfc8d61987a1a48db51e','010cb612fedec8f2c6dae3e1047b3bd13f562bed6f2b7cb8f6d5f4d7ac50440a'); +INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'f20b81389b2f4c9c9be4442b3c68f87da881406f1490637c7d93d63539155a7e','246e6cb136a8e79ad87ccc6a2318361c689d4720a9000c1a404f3556dced1bfb','88eb3a0b60cf865331bf3e41aafd9bc4f8cdf80681c83a0a01c6a8b8b96b5beb'); +INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'52d554e6b53b853066a3a8f931fc37779f3596c4388e277a9f66a95e001a09eb','c4474243bf31bccb8aa11963c477e3d40bbdbf6c604edd86429c37b59d83b427','e02d95e796d87e81550002ed939fa1e74deacd2a558e8fee194873ec11cabd87'); +INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'08a949af614ff73a79313a5a949908b368efe1f8c131eeeb51ed610baf65ac46','791f23628ed99486b93754ee4e7a3717d2deee1ae60d4b80dd79c614e874c94a','a2ef00ecc758c8493d6870c166a74cbc4521c758fabef9211d8c5f986bf6dd9c'); +INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'7ff8b2408ee1124a5ee573d31023660aabcdb21599bdcfb4a3bc1895d7910094','019a41a08fe760b6ca07f10cdb763ebd41d76a7a458f81023dacd0bb000221d6','0513d37ad30e412a3e5e493888223bf14009ca1f6bcd066e2cbae6094a784129'); +INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'c687e753c01711e94cfcad1f16d2976a12ef5d6c3731c64db26f969c988fe7c3','81bf654cee844b048e68c07fdbb561865156f77769d686aba7666d51bfc529b0','26fa83e30b2836adfd72a39c00baf9b042c5ffa6c50137d55b073cad29b26336'); +INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'66f493ec8b5cf8140d1f627f008c50624d3069f56828df90286b53a2d6cbf47e','87461d03ba2d32213a73f526b81f1decb96b112a012ada6f9fc089032720798c','a19315a4e3f3710bb1f50e566bc87a69f6e6423455ad97d31c6e10e2e41c3c23'); +INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'33acd319bde452aa81b589435a31ee3add742870a928ef2c15a7a447b4b4e0fa','c1fd057575646ab25fc055b10cb7cc9cc4d4d05f0ddbacfaa462fc9ac32d975e','e6986324c83036b67f12b2001ea3a1ec50d668ead0da82ce992950d501a65fa0'); +INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'83997825aa2597adb0292e265f01e937f621cc75d8cc18e23a4bd0c1fb0920c7','86e036eb2032af487a2c3ccd6a6d8b3073c155164cda4bead96f92da996fd4be','227f0ac1b383416c31602264408d4f3d1a19d3aefe0027b67e383d7104cc961e'); +INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'9890bca86442f329b2abf1b3bbf4d94e8ab54d10dfa7823a53f02fcfef030d88','a839b90852909b1e21b4461debe100d578abe34e3a46837b444a92db3eab8d97','a116a8bdadd1cc31e2e0ec7f10418be57427b490401cc8827bc7cb8644cd1319'); +INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'a909f658a8f405ef1f5cd8bbab03cbd865235544ae1c2f4dc20e2a4393181efc','a55dd67a02d97f49eb1ce9cbdf94b201a0320065e63aaccca1d14fc856a167b1','ae37d1f01f2d2df0e1b25981a88c5899126917f77fd06feed8b81cb75ac42071'); +INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'713d2ccc66a1aa7797ea9b6af18b04245478c7582a8aee76cf2c7f3f3060df3a','c7bdbef0fecf54c6d2f1dde171123487c95ccea2cb80743633a8bbdb3c3b9d35','4a615444761ef4e6606803e485b6100be58673f0460277a6f99325cfadf6eba3'); +INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'534500ae61a04841771193d57384d27b54fa2bb92c0698beaa46509b3d39eb1c','8c7d8f1273c82696c80fa325a3dde05ee4ad5f719f6890b3d93907c91302cf7d','d7021ffb49e32c8e6bcffd8a2b210d83d0ca7fbbbd8bb7336d50584dc37582d7'); +INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'48c8e5d9ab1887f092731ba2881a330d22d4f03f601dccc096fa5147042a3d55','4c724447d400c30336cda4523a84f5cfe86849086f98367e5821a0bdddf68f7b','9bd1da75ee7c3ef0f796e84305e6ab39b6c9ea88fbbbd7fbab05dbf88d1c2daf'); +INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'6c5ec3d2b7d8a724175559db977cb9ab78eecd39b9239688b30d6d3350cb01fe','8f0ee591c9f8165289f106091ac0cc19dbaf813bf1134c3ad2cf302bdba0e8c7','277ab992e094e451808df26b7024aa11d5df25206a5dd54dfa987b814ed317dd'); +INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'817dc86594b3820de76f1d2bc2400d702475d558d6ee5bef4313fc154bbdaca2','9ff934d29741af663537dc45d552b6c01cc8ba577af1fc2ddbbcb7259477bab8','1b7a100e9f87657e903c1e26dffdf508a97a99992175f893e56f92b9494c0b45'); +INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'00916e6bac2f648f953c8d6dff21438a6ec53ad198b33f90667e8d4564e00e78','3074814e0ba9b6e99b6af70ecee2f1cd072d760d921d13f04a5064342636da4e','805b89dd1068cb8c10c38ff9dd2a7b9e961f696720d5c6a3f8510a1cd4977da8'); +INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'959df962b9bc7ef215f1530b886613404adaf81552d6eeb4b1401ea265ad5f4f','c792d99e376babe180a99ebe9c20a7925a74fb919ccab28a600d200caad6c0e3','43e8baa51bcf85ee0841af84b02e795aa5fe518ba96412c45c11280ea7144137'); +INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'d76b639ebddd434e5269de084de0b502e7f0eaff71b4e99de2d4ebdd1fc61380','ca53cd5d8d4e90481a6099af39825f25e7b5325fd586693362d9e7302e72fc3a','4a0c99ee75393f4349868eada8e6aa3816dcb0782f9137f92339ca655c65fe38'); +INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'525e8cabfc993080d128faf38a5e5c9e9afa61423a5f20a90d68cdcacc96b59b','1bfbc68852f429756bdfb76508d3f044ecc24704e437259c23107470f1edec74','025d02173ce99490e25328c20621d29f5c1364dc296789af502844ff8a22ce68'); +INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'155ffdc74a2077a3da7d5c068833468c7d0758dfb525a799f910cdb1543beadb','86186f38b173c755554117ee448b6935fd6ec6ca9f464438d659ad6be767d481','ad0adda9d0833fead28df6b910bb6dbdd3b7acedccd809b3ff7d549f30690481'); +INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'4f6fe786e34af90927bcd888b4b2a8fc69d3ccdfe4c4bb37edb2007901ce234a','822b518b20b4f136877f2dfb4f4a9299a4ef7c26441791e986677396405ee03f','ed6a9c9adf48ec584b7676eb664a04545445e38c80d1bc7733cd3edfdf16c29b'); +INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'30978d87fd8e32d9d27c92a0d4ca19d179b515ed95410fa96bf496b4cd8aa5e2','79032221c81d77f7dd7e35d46a314b21b17df32357b606ecb7402e5976473b19','c6433a50693f8da2b1a81cc4855fd970b7dbeafd8e415ad72f9e7c5c2f4479cc'); +INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'a0760bc5d2f04b381cc46aca84aa3788e8e3fbc833379a26ae812807d3a04fc5','8f56034a75de70a679a8bd2515b5982dcebc5b2a6c468203ee8922f7e12aca4f','4b82b87a0ff74007a3a81cdcfd8ccc13d022fd605e79b5c3a94661ecf14bbcb3'); +INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'26dcef9e54b1a34b6024f8402ddebb6e9449cd90c270e3db75354a001484b1a1','d645719f82c5029a7fe5eba356e16c17eb676e0848ac2e03b4d98df0106ae95c','54bb8b80c657c6674c4f0ae49c796c216a60bdc351ab08f06e7c151b3b497fb2'); +INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'810ebcdb63a08af5a26d1fd4e7a3604afd03bd06ff620d6a86c665e1c81116d2','de75a174069eec13deaa318cf1429ed15d775816b7ffe6f46c7db0e252584271','a7130f292ee8b1769502a70c4f36da815ba35220a2af805f83de42cdaf06e96e'); +INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'1edfc24d186c7e7267b11c03b0a29e57926e9ab25f668231a18a499cbd08c702','4f5fb29442a7bfe7928dfd0a30bc730b2ee0a0bfee963e20f8da2eeb0bc3d6d6','b3bc5269eb106e0ccbc2e774273da021cbde79a01e7483e09cf896cf94cb6a5c'); +INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'b0de9503f019c9548a97bd198e6b1b58b57d6a7c231ace2d72adb0421b29e9b7','99f2cacd3f24f7f8cf40d0c6a3c50413a243d886a381f432dc4398b06dd0003e','1c638da35e08886791ee7f8052eb9c6d79ff7e0ea7d1f6a92dfba90c52eed926'); +INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'62e41caff168eb4b15eb67ab2130510ba3f17ac186f8516cf5b5c6f168988345','6436ea453d46084d34e4af17b844a1312a3a3f0d95234921dffa50c3bb86a8da','c37798761fca33efc3e1fe338f0022aebbc766f77af623d44988836ded3612a8'); +INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'a444b1535d27bb2917478019c4c59abf9474e87128f9ec1e44c20eea1f014f3c','4a7b7ac0f91d282190236dd238b33f7b76b40c1f5151c25117d7fffe014a1995','cf9790456ddf74f2d19254833b4595a3d5516e7b9d82e3f3f8d134c15ae86fd9'); +INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'0ad978671f587f99e5e1c1b6f68ac3d18bb03a3bd7ea9afb63590bcef25160c8','a7373340d9f43d4256f8a9063b32c415ca44e5964abc500cb3daa631ab92a311','d387cb6286a1486efe278929a1ec9155ce5a07cc0acfaa9493be411184590950'); +INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'a6bb36829770b24fa0b960b85566a0138360a60b52cec62d94d7df8cb0b8f8b4','3f137eaa77970ba242a8bd0709970f7045ae79ca9f3cc172882577ee3ed34e9d','e86e47e84c97e9fc3faad5a4aa1ccca126caf3bd499d4b77e2f0fb8341490636'); +INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'9b8ceda9b170429d8b9ed517f0db95487b3058397e20d7e786577c8e46b389b8','a8c54e9c41e6d694d38a6cb9bb9cea881609c013ef9bf4909fbcb0090168e263','f55013d29ad69ff364fd3bdacbb3ae4e05f126ee59a61835d6894d0c0d1ca207'); +INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'cee2e41baf86f1af24d555e9ab4a0c023b5f1ab2b054707d4434b4f60d31862a','bc2a5bfc7f1a8181b7b04970a8287b498f096bc08acf106f6a8e0a0ac5ca3723','067053dc6dc22ddad32fa2eedc5b7860efc32e264912e052ab323adabc51349c'); +INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'cbfd7ff728f05ba3f1db5972f1449618a79d3fd0d76bf7fe990aed2eb2316a38','73e3b8838f74134d3db985de53446f88c3bb86a8cec53bf773c10dd89fc2d709','7422fda71f760d1ecc56a3a17c7b122c57007964af4ffdc437b638dcb3a9e9cc'); +INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'9af85cd995c83b5a5f0cac66351cabdf9dc9faecfee080638fc76019663faaa6','5e951c9dc5201f32b7e8b9e72702984a2ff13c011cec35ef4ddbcf5b1e7e3111','c3c557b98517e29dd64fa6e6d67c96cd9f4c7194b4cef0709bfa949ef77b4641'); +INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'a3c547e84db6b29630b87fa566e37796e0632ba616dd6d521d558632c3b55370','c72261d02c311085af66e2c66b8bcef2833d05716f067de2327442b92d219adf','79582a4e69f71451adaade2e915ef4d4bfd4b5cca84085fffd83bc19db25be3f'); +INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'a0170d8a72a0f8642c0863899bf034e754596e3fd8ddffefa91e7e9a7addf944','df4f5afac7aa5bdd2e580979d13c750f4990c5f7e8dacaec6d751f4b1e3c690e','b94277749135e08be59f671553b2bb789a9c7774e06a714b70d9e68a38a1df42'); +INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'e0179a21342fcf35fa169567f1ef35bd6b0b1b048a98e90c049fdf3ee58e9da4','c5cc010dd34b520a733ad2e109b4b2b8cc84b48e412c43ac688a57f99147c164','a10b3f726646b2f8843f14f1636aba4a3cd4f560ceaa60fb1e39a670f146aa9c'); +INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'8855ace296b0b078d90aa24fcd30ca9f9cccf9d3961f3dba4985a3ff187a02ac','eac5c44840751fb1009274a20657bc544e855ff1a49533c9fc43c0b6e66b7402','0d804500ba7400c2472a71b18b0d3099f3d8b26c9a4e51fb4b2acb86c2cecf7e'); +INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'bde3a6c6cc31b96d58f466d3ce0361cc6366c8c239778f21b696d4063cf6d89e','40cde00e42632bcc0477dc071b9acfa0745283dc2a9d2d28e230f939832abbac','a65311468cffc94de03e6a347c69cec47d84706cdbe0234884848b5aeb5f0d23'); +INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'f562851b32a7005ee02b9e2491c0195dddce451e8fecb428209d087e69345303','dc3ab137a2d7430196ec3d25456e09e8e63d815c8e4b246e95e7e63d4e3a9c75','dc01c482e4ecdf6756019a60c3028a857f426e6937035393574633827a3fa3b6'); +INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'996cda7b65e623747deef936d61491cedd0159f44faa1e3536de1b6d6c474097','a957a0c28f2a0beb967ef0ac9519e9207e37415af3018f1a5cb998169f3b6005','b8bc390f97a04ee59a0e61a960b59ff5ef2986c202e45cecc3bb630c87b5d716'); +INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'c8286f73cc3a070f4251b7c59bb485e611437a1916fd39ffac831dc78df54ecd','3cf1b57600853e04513ad74089e344f9e5af742e1d4aaad0c9e51c0ebc6e77d5','93606a323cd90a161c85490e931c1e774434b2e7e864db94104bfca95da84009'); +INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'ef9dab42700918027fac849f2088d2248a6291dc7bc24be583b556f37739631b','6cf1d5147d5c6523c275384d404b4f7a750dab987def5846979bc5d14233a44b','86c88e8a3a40f3aaea609c7414343bd9bb9a0b42d41539589630c1a02099424e'); +INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'c6bbc52f1e8f907b2d66378f4352f41ae3d354985aaab5f16d737d75a7e6b1d8','091641bdce3f527a8a3da393068fca3534e8209fba337b7b79bf22f2a6bc5dec','f43121b5d6cbd23a6f6122594f4d9eb929e78dae9eca5b6423b4adc823e7fc92'); +INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'66f7b7ff8f0217ed62938a5931d4a6a232546e5d58e09dfd3ba5a792c35fa560','8a955c5c1a5c9f8c82553803172cc961e61b2e2e19b9c87cad6dec24512ee351','48e7cbba13a616afa1eda23943414d65e2a9a34b119a475839c56bfd22352b38'); +INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'2b26c6d901ca9790987331432372046d9620d10ea163f4824208d6b23e8e7a35','482bf498868976d12ae17fc38bc847d8c7398c96fad5df9f1d2719197fa038e6','5995cc992f24ee95a5e7c1ed6b8ae2f7e240120090308f712cc1162f2e0acb6d'); +INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'0d6d774dce93e94e870835005b0e8b04f010fb25158aa69a0fa0321d1577e987','ed1021dde8c16263483f3a50091a2df2105977a7aab9217b78af58833433853c','b1dcf80b5aa4e21a1e6864872946eb262d9d4f34b78cb1b60cf09877352fbc97'); +INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'9dbd171e3606b1662f6b576339b1e9aaa3da8a9f8a246bab905af255add4a762','e5ea123c86cd7147d8cd8d9866006e1da8528bb32c8005a998ca9f6ee917c2ba','64c194d0bea7e6c1966ad717170fc6eec9e6d622e76198da2b841295b7d504df'); +INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'db67b5dc6b0c0ddec22d0e716b72aa8cb6fa9702316f2a8e12659ee229094c16','a25387e650e60dbb003c5ef16c46a8d8464013d81bdb49508c2935368d4ae9c0','c8bb886ccc738848d4d496325da8f6ec24b0de67ebf18569265b776ca18de7a4'); +INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'7cf70b5298dbb36efbec2fb880b76e2514e3bad9d5200875fa3eb3ceb7719ee8','f5028a37d6395b533cf60e6ce9f0bf574a0a7beb2cebd2f545b5183e5362aaf3','834083e1ad975e61e830000298409f94b2f00413b97e6884c55d18c845050f73'); +INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'27106f400fe1ee93bde42f3bf3cf39737fb856bbf0df3f90fe0838cf7d38798c','f336b56eb2aab91aaacef9df8159627bafc67b497482abcec9ad6786710da7ec','1eca1750b1684d154519c60c3826541314b194c39611d2816e1b1d401727a24f'); +INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'28c9833eded6d68967f206e5884616f83bb9ad16b9d7a507031b96480aecc799','c51f9cf9cd60f836bf4ae7ee0cd982829f6f7cbb2503eafef3bb167a285cf9a9','23b713e8e662d2c16b30305278e3cef149eabb229c83dbedb1e6adfa197b5dc3'); +INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'cdac6435934ea6e67a311495325c85237158ef30c009ea44c562c2127d79e696','b6749729423101ee337b7fbf0362191ba34102f01db03b225ac0d6c52de2a6fb','239d941bafda228e068f1a863d651b069b328f3cad964667abd9f8500d289c3a'); +INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'cb33e420348e7969a2310445a6c17c79e647d3c6f3106d4fd0c0a1249e11ed6f','544bc0db1dbb1d22a05e5f81de7520ef990df5b897b9f9e60d98f102fef86568','e6c07e8d12e7bba46227723157166e006df6eb23f6dd4bc7269af505a299fcc4'); +INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'dda2531cf7db78a3f27c1ce70189b3f6efb69ddd24b61639f9deff42566bba2a','217908d5688f0d9797f04ee9c3cd03ae93c20f4e5801fd809d3c37154e55b7b6','e4e4055fd910a0cd395e20f498f3f316272333f39b9c4684dfdc84313c90c5bd'); +INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'9ca7d9e1da0c6e4465d9e1c76990b6c48e62ee3a0b3b83189dc7a0f2c03a3006','6e31995ac19f2ff3fdfe5d2ba7a49f4b018b132d2aae92a4c664a97d6a6b3b6b','a8c6cb012fe916e9d84d202209f170a0075564475763347841992886ca1e14ce'); +INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'c6fc005e874909cf0393ac1bee7267f66cc5355c549d8657234a0ed6b429c869','d7d3f23d0014f40f3ac6a00fbb59e95653d22e11360783fe4116be9ecf360149','770ef27962f644e217f562a6a83cd81607106cad3251739e54544b428af58b89'); +INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'14dacaec0b37ca20f271e500d0ec1837a63006eb464728c067107738ad3167c6','7a1a9bf5515019b99c1c35abaa4a2003c6291018e090c26ec03c5c951f853f82','9b63fd76ee0ac8c29a085129510a3a917cb8de56d4a0904fae7d65c7ba343c24'); +INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'05bd680c082185147e83785e7464d8890908d1550359b4fac79018b510475e01','40b9134941fbe6312e3a7dca4b1f5114c3b7ab73f6ab84ba96aa101097111168','1f119f53bb0ba8fd8af2dc7f6ac1d7e89866839608065c4853f55641f909a0c9'); +INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'b50805d750ebd26f8dbced919948118f1f97ce7d117aa1760e7a3c4895f51e13','4e1fd0382baffd66852d64c667941808ebeb08a17309ccfe91be8e16046ad266','bce8e822147cc9d7504dbef26cdaa8f739f56385145fda717ca7952e892f1e33'); +INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'dde96405c241e1d57334670e4eff7ed8db92056e6867cae10475a9bc30ba4619','8e635d69a6a40df5c3849e1811ee551c32a57a3496fe8e4b97846b9592a9ebde','a52792158d747167e1548c15facb26b127c5f52cd852d0edcbd2c38b5f5ac0d6'); +INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'613d78fbabba246a4d1cd9d50317e732795a59812df8395472347e15cec1ee9b','c96db41449a579ffc6b459375569230e88bdfd51c10578c60f8d252eff630fd3','201a9b3a5cc0969c64e767ffe93be9d3d5ca0c2a1b2a7e8de183bfe911b46149'); +INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'e535ca5960d2ce7508bd2157dd0cac3ea1f9ab14532a40884d522b4bba0d4979','710369d2e677643b7ab8f2bbcebf0f13017052ff7fd9adfd6ffac4e6fff83f8c','e2403a38ca05128486dc480b2da8283dc66f265cb34cbc1395a8d89e1afebc74'); +INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'970865291b7a6d8173d6ad2ae97335cb2e89d80cbbb7a79bb2328cf6c67fa6cd','9deae420c2b87043e6e18db077634a1d65ae60b38f604ce56f0899ed3a561347','525514da06118777f4f415ffb1e53e55c0d9404f87480469010eca7f60ec62e2'); +INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'0741e57ad88cdada65134c9f131ff5bfd9498cb054378d829e34715e8db2aa6d','4bd0054addc71915293b8f040ed3c6c64d0aaf8ad27647d1887e16d55604523c','03d2a64a740e20df587f91f84c2d30825ca3c2b8b70a0fd4120126be82092d56'); +-- Triggers and indices on blocks +CREATE INDEX blocks_block_index_block_hash_idx ON blocks (block_index, block_hash) + ; +CREATE INDEX blocks_block_index_idx ON blocks (block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transactions +DROP TABLE IF EXISTS transactions; +CREATE TABLE transactions( + tx_index INTEGER UNIQUE, + tx_hash TEXT UNIQUE, + block_index INTEGER, + block_hash TEXT, + block_time INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + fee INTEGER, + data BLOB, + supported BOOL DEFAULT 1, + FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), + PRIMARY KEY (tx_index, tx_hash, block_index)); +INSERT INTO transactions VALUES(1,'6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); +INSERT INTO transactions VALUES(2,'3b273ba342ed8bd4ccd2ae28d3df7754768a6c65ec1cee4a6e84b4b4bdec8d8c',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'0000000000000000000000010000000002FAF080',1); +INSERT INTO transactions VALUES(3,'6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,1000000,X'0000000A00000000000000000000000002FAF08000000000000000010000000005F5E100000A0000000000000000',1); +INSERT INTO transactions VALUES(4,'36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000006422C4000000000000000000000000002FAF080000A00000000000DBBA0',1); +INSERT INTO transactions VALUES(5,'843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',50000000,9675,X'0000000B6BDB2EF465E9FC04060F58CED26C159DC983A616CB121C5E7954E66833444C5936D00F8C35A9C6ECC7DD0A64610B1C39A71110D1A95FACE6A2486A6A7A1FF83C',1); +INSERT INTO transactions VALUES(6,'5d951d44d034cb6fd5dc5c98cd877c63f55c1ae108d335b6b6d991d072856adf',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'000000140000000000004767000000003B9ACA000100000000000000000000',1); +INSERT INTO transactions VALUES(7,'2b44f590422a3ab5b70fb1265a2e4f4d3b0bcb3de3f296dc7280924870ec8c59',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'00000014000000000000476800000000000186A00000000000000000000006666F6F626172',1); +INSERT INTO transactions VALUES(8,'5836fb23c2bb94eeb4b71cb8e3c622c6d943b3e4ed3aebee42d240445e615db8',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'00000000000000000000476700000000003D0900',1); +INSERT INTO transactions VALUES(9,'843e6f7712b7847099502bda8a4bd7127c17a2799290b91ef1584a6bfe069412',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'000000000000000000004768000000000000020E',1); +INSERT INTO transactions VALUES(10,'42ae2fd7f3a18f84334bc37aa88283e79d6bff0b234dbf97e788695957d75518',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'00000032000000000000025800000000000047670000000000000001',1); +INSERT INTO transactions VALUES(11,'201123e1ddbc4dab954fed0043a29fca770a9bd4268714354bb7991f01133c10',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'00000032000000000000032000000000000047680000000000000001',1); +INSERT INTO transactions VALUES(12,'1afa4fa28e1ef63b2b67c288e078cfeb109a2b236558ab5544eedc7f171e0a84',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB3300405900000000000005F5E0FF09556E69742054657374',1); +INSERT INTO transactions VALUES(13,'7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000052BB33640000000002FAF08000000000017D7840000000000000000000003B100000000A',1); +INSERT INTO transactions VALUES(14,'e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000152BB336400000000017D78400000000002793D60000000000000000000003B100000000A',1); +INSERT INTO transactions VALUES(15,'3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000052BB33640000000008F0D1800000000014DC93800000000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(16,'a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000152BB33640000000014DC93800000000008F0D1800000000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(17,'194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000252BB33C8000000002CB417800000000026BE36803FF0000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(18,'72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000352BB33C80000000026BE3680000000002CB417803FF0000000000000000013B00000000A',1); +INSERT INTO transactions VALUES(19,'065de641fd87c0b3ef893130ef4a3dca7643b7a35f6d18c721f34a7a36a5992f',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB33324058F7256FFC115E004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(20,'7cc015005c559686a8e10294015ca1773c0bcd9f4d7d9768deb4bb94cdd4a69e',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB3365405915F3B645A1CB004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(21,'0899b8bccef3403252fd7d37ec550eea3350845dca098368b84bf4c3c48d3fc9',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB33C94000000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(22,'eb5953f4e1dec30f0bf4741cb2044c11b6e1c3be20fef2111461f69d989b852a',310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000047670000000002FAF08000000000000000010000000002FAF080000A0000000000000000',1); +INSERT INTO transactions VALUES(23,'c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc',310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mvCounterpartyXXXXXXXXXXXXXXW24Hef',100000000,10150,X'',1); +INSERT INTO transactions VALUES(24,'58b89d056b539d2cf9ddac4518ccca6744495127e0ce893eb71da2599cbf85ab',310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'0000000000000000000047680000000000002710',1); +-- Triggers and indices on transactions +CREATE INDEX transactions_block_index_idx ON transactions (block_index) + ; +CREATE INDEX transactions_block_index_tx_index_idx ON transactions (block_index, tx_index) + ; +CREATE INDEX transactions_tx_hash_idx ON transactions (tx_hash) + ; +CREATE INDEX transactions_tx_index_idx ON transactions (tx_index) + ; +CREATE INDEX transactions_tx_index_tx_hash_block_index_idx ON transactions (tx_index, tx_hash, block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transaction_outputs +DROP TABLE IF EXISTS transaction_outputs; +CREATE TABLE transaction_outputs( + tx_index, + tx_hash TEXT, + block_index INTEGER, + out_index INTEGER, + destination TEXT, + btc_amount INTEGER, + PRIMARY KEY (tx_hash, out_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',50000000,310001,2); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92845000000,310003,4); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92945000000,310004,5); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92895000000,310005,6); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',1000000000,310005,6); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92845000000,310006,7); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC',100000,310006,7); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',996000000,310007,8); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBB',4000000,310007,8); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC',99474,310008,9); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBC',526,310008,9); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92844999976,310009,10); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92844979976,310009,10); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',50000024,310009,10); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92844559176,310010,11); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92844539176,310010,11); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',50420824,310010,11); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92794539176,310012,13); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92769539176,310013,14); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92773789176,310013,14); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92778789176,310014,0); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92628789176,310014,15); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91528789176,310016,17); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',90937926676,310018,19); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',90941039176,310018,19); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91100339176,310019,20); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91416039176,310019,20); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91441039176,310019,20); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92771039176,310020,21); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92841039176,310020,21); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',946000000,310021,22); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',149840926438,310022,23); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',149849426438,310023,0); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC',89474,310023,24); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBC',10526,310023,24); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',996000000,310032,0); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',50000000,310001,2); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92845000000,310003,4); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92945000000,310004,5); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92895000000,310005,6); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',1000000000,310005,6); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92845000000,310006,7); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC',100000,310006,7); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',996000000,310007,8); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBB',4000000,310007,8); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC',99474,310008,9); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBC',526,310008,9); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92844999976,310009,10); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92844979976,310009,10); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',50000024,310009,10); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92844559176,310010,11); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92844539176,310010,11); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',50420824,310010,11); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92794539176,310012,13); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92769539176,310013,14); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92773789176,310013,14); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92778789176,310014,0); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92628789176,310014,15); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92278789176,310015,16); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91528789176,310016,17); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',90878789176,310017,18); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',90937926676,310018,19); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',90941039176,310018,19); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91100339176,310019,20); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91416039176,310019,20); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91441039176,310019,20); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92771039176,310020,21); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92841039176,310020,21); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',946000000,310021,22); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',149840926438,310022,23); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',149849426438,310023,0); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC',89474,310023,24); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBC',10526,310023,24); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',996000000,310032,0); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table credits +DROP TABLE IF EXISTS credits; +CREATE TABLE credits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + calling_function TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO credits VALUES(310000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',93000000000,'burn','6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',1); +INSERT INTO credits VALUES(310001,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',50000000,'send','3b273ba342ed8bd4ccd2ae28d3df7754768a6c65ec1cee4a6e84b4b4bdec8d8c',2); +INSERT INTO credits VALUES(310004,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'btcpay','843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099',5); +INSERT INTO credits VALUES(310005,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',1000000000,'issuance','5d951d44d034cb6fd5dc5c98cd877c63f55c1ae108d335b6b6d991d072856adf',6); +INSERT INTO credits VALUES(310006,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC',100000,'issuance','2b44f590422a3ab5b70fb1265a2e4f4d3b0bcb3de3f296dc7280924870ec8c59',7); +INSERT INTO credits VALUES(310007,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBB',4000000,'send','5836fb23c2bb94eeb4b71cb8e3c622c6d943b3e4ed3aebee42d240445e615db8',8); +INSERT INTO credits VALUES(310008,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBC',526,'send','843e6f7712b7847099502bda8a4bd7127c17a2799290b91ef1584a6bfe069412',9); +INSERT INTO credits VALUES(310009,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',24,'dividend','42ae2fd7f3a18f84334bc37aa88283e79d6bff0b234dbf97e788695957d75518',10); +INSERT INTO credits VALUES(310010,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',420800,'dividend','201123e1ddbc4dab954fed0043a29fca770a9bd4268714354bb7991f01133c10',11); +INSERT INTO credits VALUES(310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',4250000,'filled','e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42',14); +INSERT INTO credits VALUES(310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',5000000,'cancel order','36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c',0); +INSERT INTO credits VALUES(310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'filled','a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8',16); +INSERT INTO credits VALUES(310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'filled','a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8',16); +INSERT INTO credits VALUES(310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'filled','72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207',18); +INSERT INTO credits VALUES(310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'filled','72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207',18); +INSERT INTO credits VALUES(310018,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',59137500,'bet settled: liquidated for bear','065de641fd87c0b3ef893130ef4a3dca7643b7a35f6d18c721f34a7a36a5992f',19); +INSERT INTO credits VALUES(310018,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',3112500,'feed fee','065de641fd87c0b3ef893130ef4a3dca7643b7a35f6d18c721f34a7a36a5992f',19); +INSERT INTO credits VALUES(310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',159300000,'bet settled','7cc015005c559686a8e10294015ca1773c0bcd9f4d7d9768deb4bb94cdd4a69e',20); +INSERT INTO credits VALUES(310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',315700000,'bet settled','7cc015005c559686a8e10294015ca1773c0bcd9f4d7d9768deb4bb94cdd4a69e',20); +INSERT INTO credits VALUES(310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',25000000,'feed fee','7cc015005c559686a8e10294015ca1773c0bcd9f4d7d9768deb4bb94cdd4a69e',20); +INSERT INTO credits VALUES(310020,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',1330000000,'bet settled: for notequal','0899b8bccef3403252fd7d37ec550eea3350845dca098368b84bf4c3c48d3fc9',21); +INSERT INTO credits VALUES(310020,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',70000000,'feed fee','0899b8bccef3403252fd7d37ec550eea3350845dca098368b84bf4c3c48d3fc9',21); +INSERT INTO credits VALUES(310022,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',56999887262,'burn','c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc',23); +INSERT INTO credits VALUES(310023,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',8500000,'recredit wager remaining','7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81',0); +INSERT INTO credits VALUES(310023,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBC',10000,'send','58b89d056b539d2cf9ddac4518ccca6744495127e0ce893eb71da2599cbf85ab',24); +INSERT INTO credits VALUES(310032,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',50000000,'cancel order','eb5953f4e1dec30f0bf4741cb2044c11b6e1c3be20fef2111461f69d989b852a',0); +-- Triggers and indices on credits +CREATE TRIGGER block_update_credits + BEFORE UPDATE ON credits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX credits_address_idx ON credits (address) + ; +CREATE INDEX credits_asset_idx ON credits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table debits +DROP TABLE IF EXISTS debits; +CREATE TABLE debits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + action TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO debits VALUES(310001,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'send','3b273ba342ed8bd4ccd2ae28d3df7754768a6c65ec1cee4a6e84b4b4bdec8d8c',2); +INSERT INTO debits VALUES(310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',105000000,'open order','36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c',4); +INSERT INTO debits VALUES(310005,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','5d951d44d034cb6fd5dc5c98cd877c63f55c1ae108d335b6b6d991d072856adf',6); +INSERT INTO debits VALUES(310006,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','2b44f590422a3ab5b70fb1265a2e4f4d3b0bcb3de3f296dc7280924870ec8c59',7); +INSERT INTO debits VALUES(310007,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',4000000,'send','5836fb23c2bb94eeb4b71cb8e3c622c6d943b3e4ed3aebee42d240445e615db8',8); +INSERT INTO debits VALUES(310008,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC',526,'send','843e6f7712b7847099502bda8a4bd7127c17a2799290b91ef1584a6bfe069412',9); +INSERT INTO debits VALUES(310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',24,'dividend','42ae2fd7f3a18f84334bc37aa88283e79d6bff0b234dbf97e788695957d75518',10); +INSERT INTO debits VALUES(310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',20000,'dividend fee','42ae2fd7f3a18f84334bc37aa88283e79d6bff0b234dbf97e788695957d75518',10); +INSERT INTO debits VALUES(310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',420800,'dividend','201123e1ddbc4dab954fed0043a29fca770a9bd4268714354bb7991f01133c10',11); +INSERT INTO debits VALUES(310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',20000,'dividend fee','201123e1ddbc4dab954fed0043a29fca770a9bd4268714354bb7991f01133c10',11); +INSERT INTO debits VALUES(310012,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'bet','7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81',13); +INSERT INTO debits VALUES(310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',25000000,'bet','e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42',14); +INSERT INTO debits VALUES(310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',150000000,'bet','3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a',15); +INSERT INTO debits VALUES(310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',350000000,'bet','a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8',16); +INSERT INTO debits VALUES(310016,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',750000000,'bet','194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5',17); +INSERT INTO debits VALUES(310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',650000000,'bet','72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207',18); +INSERT INTO debits VALUES(310021,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',50000000,'open order','eb5953f4e1dec30f0bf4741cb2044c11b6e1c3be20fef2111461f69d989b852a',22); +INSERT INTO debits VALUES(310023,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC',10000,'send','58b89d056b539d2cf9ddac4518ccca6744495127e0ce893eb71da2599cbf85ab',24); +-- Triggers and indices on debits +CREATE TRIGGER block_update_debits + BEFORE UPDATE ON debits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX debits_address_idx ON debits (address) + ; +CREATE INDEX debits_asset_idx ON debits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table messages +DROP TABLE IF EXISTS messages; +CREATE TABLE messages( + message_index INTEGER PRIMARY KEY, + block_index INTEGER, + command TEXT, + category TEXT, + bindings TEXT, + timestamp INTEGER); +INSERT INTO messages VALUES(0,310000,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(1,310001,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(2,310002,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(3,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(4,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(5,310003,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(6,310003,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(7,310003,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(8,310003,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(9,310004,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(10,310004,'update','order_matches','[''order_match_id'', ''status'']',0); +INSERT INTO messages VALUES(11,310004,'insert','btcpays','[''block_index'', ''btc_amount'', ''destination'', ''order_match_id'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(12,310005,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(13,310006,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(14,310007,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(15,310008,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(16,310009,'insert','dividends','[''asset'', ''block_index'', ''dividend_asset'', ''fee_paid'', ''quantity_per_unit'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(17,310010,'insert','dividends','[''asset'', ''block_index'', ''dividend_asset'', ''fee_paid'', ''quantity_per_unit'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(18,310011,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(19,310012,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(20,310013,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(21,310013,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(22,310013,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +INSERT INTO messages VALUES(23,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(24,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(25,310013,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(26,310013,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(27,310013,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(28,310012,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(29,310014,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(30,310014,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(31,310014,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +INSERT INTO messages VALUES(32,310014,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(33,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(34,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(35,310015,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(36,310015,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(37,310015,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(38,310014,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(39,310016,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(40,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(41,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(42,310017,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(43,310017,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(44,310017,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(45,310016,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(46,310018,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(47,310018,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(48,310018,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(49,310018,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(50,310019,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(51,310019,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(52,310019,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(53,310019,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(54,310020,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(55,310020,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(56,310020,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(57,310020,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(58,310021,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(59,310022,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(60,310023,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(61,310023,'update','bets','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(62,310023,'insert','bet_expirations','[''bet_hash'', ''bet_index'', ''block_index'', ''source'']',0); +INSERT INTO messages VALUES(63,310023,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(64,310032,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(65,310032,'update','orders','[''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(66,310032,'insert','order_expirations','[''block_index'', ''order_hash'', ''source'']',0); +-- Triggers and indices on messages +CREATE TRIGGER block_update_messages + BEFORE UPDATE ON messages BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX messages_block_index_idx ON messages (block_index) + ; +CREATE INDEX messages_block_index_message_index_idx ON messages (block_index, message_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_match_expirations +DROP TABLE IF EXISTS order_match_expirations; +CREATE TABLE order_match_expirations( + order_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on order_match_expirations +CREATE TRIGGER block_update_order_match_expirations + BEFORE UPDATE ON order_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_match_expirations_block_index_idx ON order_match_expirations (block_index) + ; +CREATE INDEX order_match_expirations_tx0_address_idx ON order_match_expirations (tx0_address) + ; +CREATE INDEX order_match_expirations_tx1_address_idx ON order_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_matches +DROP TABLE IF EXISTS order_matches; +CREATE TABLE order_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + forward_asset TEXT, + forward_quantity INTEGER, + backward_asset TEXT, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_paid INTEGER, + status TEXT); +INSERT INTO order_matches VALUES('6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59_36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c',3,'6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',4,'36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BTC',50000000,'XCP',100000000,310002,310003,310003,10,10,310023,857142,'pending'); +INSERT INTO order_matches VALUES('6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59_36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c',3,'6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',4,'36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BTC',50000000,'XCP',100000000,310002,310003,310004,10,10,310023,857142,'completed'); +-- Triggers and indices on order_matches +CREATE TRIGGER block_update_order_matches + BEFORE UPDATE ON order_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_matches_backward_asset_idx ON order_matches (backward_asset) + ; +CREATE INDEX order_matches_block_index_idx ON order_matches (block_index) + ; +CREATE INDEX order_matches_forward_asset_idx ON order_matches (forward_asset) + ; +CREATE INDEX order_matches_id_idx ON order_matches (id) + ; +CREATE INDEX order_matches_match_expire_index_idx ON order_matches (match_expire_index) + ; +CREATE INDEX order_matches_status_idx ON order_matches (status) + ; +CREATE INDEX order_matches_tx0_address_forward_asset_idx ON order_matches (tx0_address, forward_asset) + ; +CREATE INDEX order_matches_tx0_hash_idx ON order_matches (tx0_hash) + ; +CREATE INDEX order_matches_tx1_address_backward_asset_idx ON order_matches (tx1_address, backward_asset) + ; +CREATE INDEX order_matches_tx1_hash_idx ON order_matches (tx1_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_expirations +DROP TABLE IF EXISTS order_expirations; +CREATE TABLE order_expirations( + order_hash TEXT PRIMARY KEY, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO order_expirations VALUES('6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',310013); +INSERT INTO order_expirations VALUES('36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',310014); +INSERT INTO order_expirations VALUES('eb5953f4e1dec30f0bf4741cb2044c11b6e1c3be20fef2111461f69d989b852a','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',310032); +-- Triggers and indices on order_expirations +CREATE TRIGGER block_update_order_expirations + BEFORE UPDATE ON order_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_expirations_block_index_idx ON order_expirations (block_index) + ; +CREATE INDEX order_expirations_source_idx ON order_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table orders +DROP TABLE IF EXISTS orders; +CREATE TABLE orders( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + give_asset TEXT, + give_quantity INTEGER, + give_remaining INTEGER, + get_asset TEXT, + get_quantity INTEGER, + get_remaining INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_required INTEGER, + fee_required_remaining INTEGER, + fee_provided INTEGER, + fee_provided_remaining INTEGER, + status TEXT); +INSERT INTO orders VALUES(3,'6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59',310002,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BTC',50000000,50000000,'XCP',100000000,100000000,10,310012,0,0,1000000,1000000,'open'); +INSERT INTO orders VALUES(4,'36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c',310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',105000000,105000000,'BTC',50000000,50000000,10,310013,900000,900000,6800,6800,'open'); +INSERT INTO orders VALUES(3,'6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59',310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'open'); +INSERT INTO orders VALUES(4,'36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c',310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'open'); +INSERT INTO orders VALUES(3,'6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59',310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'expired'); +INSERT INTO orders VALUES(4,'36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c',310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'expired'); +INSERT INTO orders VALUES(22,'eb5953f4e1dec30f0bf4741cb2044c11b6e1c3be20fef2111461f69d989b852a',310021,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'open'); +INSERT INTO orders VALUES(22,'eb5953f4e1dec30f0bf4741cb2044c11b6e1c3be20fef2111461f69d989b852a',310032,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'expired'); +-- Triggers and indices on orders +CREATE TRIGGER block_update_orders + BEFORE UPDATE ON orders BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX orders_block_index_idx ON orders (block_index) + ; +CREATE INDEX orders_expire_index_idx ON orders (expire_index) + ; +CREATE INDEX orders_get_asset_give_asset_idx ON orders (get_asset, give_asset) + ; +CREATE INDEX orders_give_asset_idx ON orders (give_asset) + ; +CREATE INDEX orders_source_give_asset_idx ON orders (source, give_asset) + ; +CREATE INDEX orders_status_idx ON orders (status) + ; +CREATE INDEX orders_tx_hash_idx ON orders (tx_hash) + ; +CREATE INDEX orders_tx_index_tx_hash_idx ON orders (tx_index, tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_expirations +DROP TABLE IF EXISTS bet_match_expirations; +CREATE TABLE bet_match_expirations( + bet_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on bet_match_expirations +CREATE INDEX bet_match_expirations_block_index_idx ON bet_match_expirations (block_index) + ; +CREATE INDEX bet_match_expirations_tx0_address_idx ON bet_match_expirations (tx0_address) + ; +CREATE INDEX bet_match_expirations_tx1_address_idx ON bet_match_expirations (tx1_address) + ; +CREATE TRIGGER block_update_bet_match_expirations + BEFORE UPDATE ON bet_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_matches +DROP TABLE IF EXISTS bet_matches; +CREATE TABLE bet_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_bet_type INTEGER, + tx1_bet_type INTEGER, + feed_address TEXT, + initial_value INTEGER, + deadline INTEGER, + target_value REAL, + leverage INTEGER, + forward_quantity INTEGER, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bet_matches VALUES('7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81_e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42',13,'7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',14,'e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310012,10,10,310022,99999999,'pending'); +INSERT INTO bet_matches VALUES('3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a_a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8',15,'3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',16,'a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310014,10,10,310024,99999999,'pending'); +INSERT INTO bet_matches VALUES('194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5_72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207',17,'194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',18,'72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',2,3,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310016,10,10,310026,99999999,'pending'); +INSERT INTO bet_matches VALUES('7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81_e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42',13,'7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',14,'e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310018,10,10,310022,99999999,'settled: liquidated for bear'); +INSERT INTO bet_matches VALUES('3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a_a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8',15,'3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',16,'a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310019,10,10,310024,99999999,'settled'); +INSERT INTO bet_matches VALUES('194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5_72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207',17,'194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',18,'72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',2,3,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310020,10,10,310026,99999999,'settled: for notequal'); +-- Triggers and indices on bet_matches +CREATE INDEX bet_matches_block_index_idx ON bet_matches (block_index) + ; +CREATE INDEX bet_matches_deadline_idx ON bet_matches (deadline) + ; +CREATE INDEX bet_matches_id_idx ON bet_matches (id) + ; +CREATE INDEX bet_matches_status_idx ON bet_matches (status) + ; +CREATE INDEX bet_matches_tx0_address_idx ON bet_matches (tx0_address) + ; +CREATE INDEX bet_matches_tx1_address_idx ON bet_matches (tx1_address) + ; +CREATE TRIGGER block_update_bet_matches + BEFORE UPDATE ON bet_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_resolutions +DROP TABLE IF EXISTS bet_match_resolutions; +CREATE TABLE bet_match_resolutions( + bet_match_id TEXT PRIMARY KEY, + bet_match_type_id INTEGER, + block_index INTEGER, + winner TEXT, + settled BOOL, + bull_credit INTEGER, + bear_credit INTEGER, + escrow_less_fee INTEGER, + fee INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_match_resolutions VALUES('7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81_e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42',1,310018,'0',0,59137500,NULL,NULL,3112500); +INSERT INTO bet_match_resolutions VALUES('3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a_a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8',1,310019,'1',159300000,315700000,NULL,NULL,25000000); +INSERT INTO bet_match_resolutions VALUES('194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5_72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207',5,310020,NULL,NULL,NULL,'NotEqual',1330000000,70000000); +-- Triggers and indices on bet_match_resolutions +CREATE TRIGGER block_update_bet_match_resolutions + BEFORE UPDATE ON bet_match_resolutions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_expirations +DROP TABLE IF EXISTS bet_expirations; +CREATE TABLE bet_expirations( + bet_index INTEGER PRIMARY KEY, + bet_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_expirations VALUES(13,'7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',310023); +-- Triggers and indices on bet_expirations +CREATE INDEX bet_expirations_block_index_idx ON bet_expirations (block_index) + ; +CREATE INDEX bet_expirations_source_idx ON bet_expirations (source) + ; +CREATE TRIGGER block_update_bet_expirations + BEFORE UPDATE ON bet_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bets +DROP TABLE IF EXISTS bets; +CREATE TABLE bets( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + feed_address TEXT, + bet_type INTEGER, + deadline INTEGER, + wager_quantity INTEGER, + wager_remaining INTEGER, + counterwager_quantity INTEGER, + counterwager_remaining INTEGER, + target_value REAL, + leverage INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bets VALUES(13,'7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81',310012,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1388000100,50000000,50000000,25000000,25000000,0.0,15120,10,310022,99999999,'open'); +INSERT INTO bets VALUES(14,'e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42',310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000100,25000000,25000000,41500000,41500000,0.0,15120,10,310023,99999999,'open'); +INSERT INTO bets VALUES(13,'7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81',310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'open'); +INSERT INTO bets VALUES(14,'e566ab052d414d2c9b9d6ffc643bc5d2b31d80976dffe7acceaf2576246f9e42',310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000100,25000000,4250000,41500000,0,0.0,15120,10,310023,99999999,'filled'); +INSERT INTO bets VALUES(15,'3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a',310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1388000100,150000000,150000000,350000000,350000000,0.0,5040,10,310024,99999999,'open'); +INSERT INTO bets VALUES(16,'a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8',310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000100,350000000,350000000,150000000,150000000,0.0,5040,10,310025,99999999,'open'); +INSERT INTO bets VALUES(15,'3d3ae119aa3891770b7ae1e1ce34062b7a850593f39a96b6df19d69960d4a76a',310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1388000100,150000000,0,350000000,0,0.0,5040,10,310024,99999999,'filled'); +INSERT INTO bets VALUES(16,'a73843f1c9197674ba45e3aa92ed0671062c8acd8955e6b1e4d10dd149f40bc8',310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000100,350000000,0,150000000,0,0.0,5040,10,310025,99999999,'filled'); +INSERT INTO bets VALUES(17,'194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5',310016,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',2,1388000200,750000000,750000000,650000000,650000000,1.0,5040,10,310026,99999999,'open'); +INSERT INTO bets VALUES(18,'72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207',310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',3,1388000200,650000000,650000000,750000000,750000000,1.0,5040,10,310027,99999999,'open'); +INSERT INTO bets VALUES(17,'194a87d56aecedf43bb9724b6f20f10626c26c00267fd108db843772e5ee41f5',310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',2,1388000200,750000000,0,650000000,0,1.0,5040,10,310026,99999999,'filled'); +INSERT INTO bets VALUES(18,'72baa141e136cbafc08ee2f6c8e5841076c7573d5d5cd619f45149bf84a6a207',310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',3,1388000200,650000000,0,750000000,0,1.0,5040,10,310027,99999999,'filled'); +INSERT INTO bets VALUES(13,'7025ded3ba412d1285be69c8aaa02773b8f4e2504310832c99a9b171b7e07e81',310023,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'expired'); +-- Triggers and indices on bets +CREATE INDEX bets_block_index_idx ON bets (block_index) + ; +CREATE INDEX bets_expire_index_idx ON bets (expire_index) + ; +CREATE INDEX bets_feed_address_bet_type_idx ON bets (feed_address, bet_type) + ; +CREATE INDEX bets_feed_address_idx ON bets (feed_address) + ; +CREATE INDEX bets_status_idx ON bets (status) + ; +CREATE INDEX bets_tx_hash_idx ON bets (tx_hash) + ; +CREATE INDEX bets_tx_index_tx_hash_idx ON bets (tx_index, tx_hash) + ; +CREATE TRIGGER block_update_bets + BEFORE UPDATE ON bets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table broadcasts +DROP TABLE IF EXISTS broadcasts; +CREATE TABLE broadcasts( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + timestamp INTEGER, + value REAL, + fee_fraction_int INTEGER, + text TEXT, + locked BOOL, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO broadcasts VALUES(12,'1afa4fa28e1ef63b2b67c288e078cfeb109a2b236558ab5544eedc7f171e0a84',310011,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000000,100.0,99999999,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(19,'065de641fd87c0b3ef893130ef4a3dca7643b7a35f6d18c721f34a7a36a5992f',310018,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000050,99.86166,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(20,'7cc015005c559686a8e10294015ca1773c0bcd9f4d7d9768deb4bb94cdd4a69e',310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000101,100.343,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(21,'0899b8bccef3403252fd7d37ec550eea3350845dca098368b84bf4c3c48d3fc9',310020,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000201,2.0,5000000,'Unit Test',0,'valid'); +-- Triggers and indices on broadcasts +CREATE TRIGGER block_update_broadcasts + BEFORE UPDATE ON broadcasts BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX broadcasts_block_index_idx ON broadcasts (block_index) + ; +CREATE INDEX broadcasts_status_source_idx ON broadcasts (status, source) + ; +CREATE INDEX broadcasts_status_source_tx_index_idx ON broadcasts (status, source, tx_index) + ; +CREATE INDEX broadcasts_timestamp_idx ON broadcasts (timestamp) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table btcpays +DROP TABLE IF EXISTS btcpays; +CREATE TABLE btcpays( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + order_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO btcpays VALUES(5,'843c5df8f979db230ba61f26ad1342ed5803adeba7333b019b8a96ac6703f099',310004,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',50000000,'6bdb2ef465e9fc04060f58ced26c159dc983a616cb121c5e7954e66833444c59_36d00f8c35a9c6ecc7dd0a64610b1c39a71110d1a95face6a2486a6a7a1ff83c','valid'); +-- Triggers and indices on btcpays +CREATE TRIGGER block_update_btcpays + BEFORE UPDATE ON btcpays BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX btcpays_block_index_idx ON btcpays (block_index) + ; +CREATE INDEX btcpays_destination_idx ON btcpays (destination) + ; +CREATE INDEX btcpays_source_idx ON btcpays (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table burns +DROP TABLE IF EXISTS burns; +CREATE TABLE burns( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + burned INTEGER, + earned INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO burns VALUES(1,'6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',310000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',62000000,93000000000,'valid'); +INSERT INTO burns VALUES(23,'c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc',310022,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',38000000,56999887262,'valid'); +-- Triggers and indices on burns +CREATE TRIGGER block_update_burns + BEFORE UPDATE ON burns BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX burns_source_idx ON burns (source) + ; +CREATE INDEX burns_status_idx ON burns (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table cancels +DROP TABLE IF EXISTS cancels; +CREATE TABLE cancels( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + offer_hash TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on cancels +CREATE TRIGGER block_update_cancels + BEFORE UPDATE ON cancels BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX cancels_block_index_idx ON cancels (block_index) + ; +CREATE INDEX cancels_source_idx ON cancels (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dividends +DROP TABLE IF EXISTS dividends; +CREATE TABLE dividends( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset TEXT, + dividend_asset TEXT, + quantity_per_unit INTEGER, + fee_paid INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO dividends VALUES(10,'42ae2fd7f3a18f84334bc37aa88283e79d6bff0b234dbf97e788695957d75518',310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB','XCP',600,20000,'valid'); +INSERT INTO dividends VALUES(11,'201123e1ddbc4dab954fed0043a29fca770a9bd4268714354bb7991f01133c10',310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC','XCP',800,20000,'valid'); +-- Triggers and indices on dividends +CREATE TRIGGER block_update_dividends + BEFORE UPDATE ON dividends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dividends_asset_idx ON dividends (asset) + ; +CREATE INDEX dividends_block_index_idx ON dividends (block_index) + ; +CREATE INDEX dividends_source_idx ON dividends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table issuances +DROP TABLE IF EXISTS issuances; +CREATE TABLE "issuances"( + tx_index INTEGER, + tx_hash TEXT, + msg_index INTEGER DEFAULT 0, + block_index INTEGER, + asset TEXT, + quantity INTEGER, + divisible BOOL, + source TEXT, + issuer TEXT, + transfer BOOL, + callable BOOL, + call_date INTEGER, + call_price REAL, + description TEXT, + fee_paid INTEGER, + locked BOOL, + status TEXT, + asset_longname TEXT, + reset BOOL, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index)); +INSERT INTO issuances VALUES(6,'5d951d44d034cb6fd5dc5c98cd877c63f55c1ae108d335b6b6d991d072856adf',0,310005,'BBBB',1000000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(7,'2b44f590422a3ab5b70fb1265a2e4f4d3b0bcb3de3f296dc7280924870ec8c59',0,310006,'BBBC',100000,0,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'foobar',50000000,0,'valid',NULL,0); +-- Triggers and indices on issuances +CREATE TRIGGER block_update_issuances + BEFORE UPDATE ON issuances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX issuances_asset_longname_idx ON issuances (asset_longname) + ; +CREATE INDEX issuances_asset_status_idx ON issuances (asset, status) + ; +CREATE INDEX issuances_block_index_idx ON issuances (block_index) + ; +CREATE INDEX issuances_source_idx ON issuances (source) + ; +CREATE INDEX issuances_status_asset_tx_index_idx ON issuances (status, asset, tx_index DESC) + ; +CREATE INDEX issuances_status_idx ON issuances (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sends +DROP TABLE IF EXISTS sends; +CREATE TABLE "sends"( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + quantity INTEGER, + status TEXT, + msg_index INTEGER DEFAULT 0, memo BLOB, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); +INSERT INTO sends VALUES(2,'3b273ba342ed8bd4ccd2ae28d3df7754768a6c65ec1cee4a6e84b4b4bdec8d8c',310001,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',50000000,'valid',0,NULL); +INSERT INTO sends VALUES(8,'5836fb23c2bb94eeb4b71cb8e3c622c6d943b3e4ed3aebee42d240445e615db8',310007,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBB',4000000,'valid',0,NULL); +INSERT INTO sends VALUES(9,'843e6f7712b7847099502bda8a4bd7127c17a2799290b91ef1584a6bfe069412',310008,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBC',526,'valid',0,NULL); +INSERT INTO sends VALUES(24,'58b89d056b539d2cf9ddac4518ccca6744495127e0ce893eb71da2599cbf85ab',310023,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBC',10000,'valid',0,NULL); +-- Triggers and indices on sends +CREATE TRIGGER block_update_sends + BEFORE UPDATE ON sends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sends_asset_idx ON sends (asset) + ; +CREATE INDEX sends_block_index_idx ON sends (block_index) + ; +CREATE INDEX sends_destination_idx ON sends (destination) + ; +CREATE INDEX sends_memo_idx ON sends (memo) + ; +CREATE INDEX sends_source_idx ON sends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_match_expirations +DROP TABLE IF EXISTS rps_match_expirations; +CREATE TABLE rps_match_expirations( + rps_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_match_expirations +CREATE TRIGGER block_update_rps_match_expirations + BEFORE UPDATE ON rps_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_match_expirations_block_index_idx ON rps_match_expirations (block_index) + ; +CREATE INDEX rps_match_expirations_tx0_address_idx ON rps_match_expirations (tx0_address) + ; +CREATE INDEX rps_match_expirations_tx1_address_idx ON rps_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_expirations +DROP TABLE IF EXISTS rps_expirations; +CREATE TABLE rps_expirations( + rps_index INTEGER PRIMARY KEY, + rps_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_expirations +CREATE TRIGGER block_update_rps_expirations + BEFORE UPDATE ON rps_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expirations_block_index_idx ON rps_expirations (block_index) + ; +CREATE INDEX rps_expirations_source_idx ON rps_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rpsresolves +DROP TABLE IF EXISTS rpsresolves; +CREATE TABLE rpsresolves( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + move INTEGER, + random TEXT, + rps_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on rpsresolves +CREATE TRIGGER block_update_rpsresolves + BEFORE UPDATE ON rpsresolves BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rpsresolves_block_index_idx ON rpsresolves (block_index) + ; +CREATE INDEX rpsresolves_rps_match_id_idx ON rpsresolves (rps_match_id) + ; +CREATE INDEX rpsresolves_source_idx ON rpsresolves (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_matches +DROP TABLE IF EXISTS rps_matches; +CREATE TABLE rps_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_move_random_hash TEXT, + tx1_move_random_hash TEXT, + wager INTEGER, + possible_moves INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps_matches +CREATE TRIGGER block_update_rps_matches + BEFORE UPDATE ON rps_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_matches_id_idx ON rps_matches (id) + ; +CREATE INDEX rps_matches_match_expire_index_idx ON rps_matches (match_expire_index) + ; +CREATE INDEX rps_matches_status_idx ON rps_matches (status) + ; +CREATE INDEX rps_matches_tx0_address_idx ON rps_matches (tx0_address) + ; +CREATE INDEX rps_matches_tx1_address_idx ON rps_matches (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps +DROP TABLE IF EXISTS rps; +CREATE TABLE rps( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + possible_moves INTEGER, + wager INTEGER, + move_random_hash TEXT, + expiration INTEGER, + expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps +CREATE TRIGGER block_update_rps + BEFORE UPDATE ON rps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expire_index_idx ON rps (expire_index) + ; +CREATE INDEX rps_source_idx ON rps (source) + ; +CREATE INDEX rps_status_idx ON rps (status) + ; +CREATE INDEX rps_tx_hash_idx ON rps (tx_hash) + ; +CREATE INDEX rps_tx_index_idx ON rps (tx_index) + ; +CREATE INDEX rps_tx_index_tx_hash_idx ON rps (tx_index, tx_hash) + ; +CREATE INDEX rps_wager_possible_moves_idx ON rps (wager, possible_moves) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table destructions +DROP TABLE IF EXISTS destructions; +CREATE TABLE destructions( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset INTEGER, + quantity INTEGER, + tag TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on destructions +CREATE TRIGGER block_update_destructions + BEFORE UPDATE ON destructions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX destructions_source_idx ON destructions (source) + ; +CREATE INDEX destructions_status_idx ON destructions (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table assets +DROP TABLE IF EXISTS assets; +CREATE TABLE assets( + asset_id TEXT UNIQUE, + asset_name TEXT UNIQUE, + block_index INTEGER, + asset_longname TEXT); +INSERT INTO assets VALUES('0','BTC',NULL,NULL); +INSERT INTO assets VALUES('1','XCP',NULL,NULL); +INSERT INTO assets VALUES('18279','BBBB',310005,NULL); +INSERT INTO assets VALUES('18280','BBBC',310006,NULL); +-- Triggers and indices on assets +CREATE INDEX assets_asset_id_idx ON assets (asset_id) + ; +CREATE UNIQUE INDEX assets_asset_longname_idx ON assets (asset_longname) + ; +CREATE INDEX assets_asset_name_idx ON assets (asset_name) + ; +CREATE TRIGGER block_update_assets + BEFORE UPDATE ON assets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table addresses +DROP TABLE IF EXISTS addresses; +CREATE TABLE addresses( + address TEXT UNIQUE, + options INTEGER, + block_index INTEGER); +-- Triggers and indices on addresses +CREATE INDEX addresses_address_idx ON addresses (address) + ; +CREATE TRIGGER block_update_addresses + BEFORE UPDATE ON addresses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sweeps +DROP TABLE IF EXISTS sweeps; +CREATE TABLE sweeps( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + flags INTEGER, + status TEXT, + memo BLOB, + fee_paid INTEGER, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on sweeps +CREATE TRIGGER block_update_sweeps + BEFORE UPDATE ON sweeps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sweeps_block_index_idx ON sweeps (block_index) + ; +CREATE INDEX sweeps_destination_idx ON sweeps (destination) + ; +CREATE INDEX sweeps_memo_idx ON sweeps (memo) + ; +CREATE INDEX sweeps_source_idx ON sweeps (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispensers +DROP TABLE IF EXISTS dispensers; +CREATE TABLE dispensers( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + asset TEXT, + give_quantity INTEGER, + escrow_quantity INTEGER, + satoshirate INTEGER, + status INTEGER, + give_remaining INTEGER, + oracle_address TEXT, + last_status_tx_hash TEXT, + origin TEXT, + dispense_count INTEGER DEFAULT 0); +-- Triggers and indices on dispensers +CREATE TRIGGER block_update_dispensers + BEFORE UPDATE ON dispensers BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispensers_asset_idx ON dispensers (asset) + ; +CREATE INDEX dispensers_block_index_idx ON dispensers (block_index) + ; +CREATE INDEX dispensers_give_remaining_idx ON dispensers (give_remaining) + ; +CREATE INDEX dispensers_last_status_tx_hash_idx ON dispensers (last_status_tx_hash) + ; +CREATE INDEX dispensers_source_asset_origin_idx ON dispensers (source, asset, origin) + ; +CREATE INDEX dispensers_source_idx ON dispensers (source) + ; +CREATE INDEX dispensers_source_origin_idx ON dispensers (source, origin) + ; +CREATE INDEX dispensers_status_block_index_idx ON dispensers (status, block_index) + ; +CREATE INDEX dispensers_status_idx ON dispensers (status) + ; +CREATE INDEX dispensers_tx_hash_idx ON dispensers (tx_hash) + ; +CREATE INDEX dispensers_tx_index_idx ON dispensers (tx_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenses +DROP TABLE IF EXISTS dispenses; +CREATE TABLE dispenses ( + tx_index INTEGER, + dispense_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, dispense_index, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenses +CREATE TRIGGER block_update_dispenses + BEFORE UPDATE ON dispenses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenses_block_index_idx ON dispenses (block_index) + ; +CREATE INDEX dispenses_dispenser_tx_hash_idx ON dispenses (dispenser_tx_hash) + ; +CREATE INDEX dispenses_tx_hash_idx ON dispenses (tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenser_refills +DROP TABLE IF EXISTS dispenser_refills; +CREATE TABLE dispenser_refills( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, tx_hash, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) + REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenser_refills +CREATE TRIGGER block_update_dispenser_refills + BEFORE UPDATE ON dispenser_refills BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenser_refills_block_index_idx ON dispenser_refills (block_index) + ; +CREATE INDEX dispenser_refills_tx_hash_idx ON dispenser_refills (tx_hash) + ; + +COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/unittest_fixture.json b/counterparty-lib/counterpartylib/test/fixtures/scenarios/unittest_fixture.json similarity index 59% rename from counterpartylib/test/fixtures/scenarios/unittest_fixture.json rename to counterparty-lib/counterpartylib/test/fixtures/scenarios/unittest_fixture.json index ee5a3ceb5c..91ec87c3d0 100644 --- a/counterpartylib/test/fixtures/scenarios/unittest_fixture.json +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/unittest_fixture.json @@ -3,70 +3,70 @@ "burn": "0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac9b3d3808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "010000000197a5f31952387b14fab7862dab2ad3517930ae232dccf5e097424d3da3b0c56d010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512103e84ccc12f76f0562d2061e67436e926d65419ce896cceb9752633bda27975f8221039ea8cc75076d9fb9ca0513d3a243954075ee14f95ec807eac04b4f8b05a07149210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae93043808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "010000000197a5f31952387b14fab7862dab2ad3517930ae232dccf5e097424d3da3b0c56d010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512103e84ccc12f76f0562d2061e67436e926d65419ce896cceb9752633bda27975f8221039ea8cc75076d9fb9ca0513d3a243954075ee14f95ec807eac04b4f8b05a07149210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae231f3808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "01000000017ed525d789bc65273c459220d16fa649a113e5c257fcc6fb6d9260b3bc2fd19c010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e74ccc12f76f0562d2061e67436e94a71fc600a896cceb97452b4d31cf965f3621039ea8cc75076d9fb9d70f1585af598a4b6ae256f4489b03edb32e3b8b05a07110210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae8bcb3708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "0100000001b19dece37434a30e55c08c09d3d1ee033dc3756e6705dd2e2f4b587fa5e5c21f010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e74ccc12f76f0562d2061e67436e94a71fc600a896cceb97452b4d31cf965f3621039ea8cc75076d9fb9d70f1585af598a4b6ae256f4489b03edb32e3b8b05a07110210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeab003808000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "0100000001736b98c3ccd315a6601d53b02e99908a74a1e653724571e263596d4bf798fe2e010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512103eb4ccc12f76f0562d2061e67436e926dc4dff1ffa6cceb97452b4d31cf975f9721029ea8cc75076d9fb9cb021bc9a7519e4e7cab55eb5ede169ec04b4f8b05a071cc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae83923708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "01000000018445c5c6f9459351c1d67986fd27fe2482114f6678ffb1719227464314f51b7b010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512103eb4ccc12f76f0562d2061e67436e926dc4dff1ffa6cceb97452b4d31cf975f9721029ea8cc75076d9fb9cb021bc9a7519e4e7cab55eb5ede169ec04b4f8b05a071cc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae33e23708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "0100000001ebce53cdbe64e1867ccfcdabe8e52091ef13255e3d05c53c5f243c17efd06143010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512103ed4ccc12f76f0562d2061e67436e926dc712532113cceb97452b4d31cf975f1c21029ea8cc75076d9fb9c90d15c6a055980278f847fd59bb629ec04b4f8b05a07128210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae7b593708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "01000000014071408d7ca1843889f1a66d4cd3654d9d9a5ae9aa27ff1919e4574e0c3a6fc2010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512103ed4ccc12f76f0562d2061e67436e926dc712532113cceb97452b4d31cf975f1c21029ea8cc75076d9fb9c90d15c6a055980278f847fd59bb629ec04b4f8b05a07128210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aebbc33708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "0100000001e11fb44873b49ee785c29e0de9bc75893a6ea62d7f2dfe64229fdf73986a3de7010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102f54ccc12f76f0562d2061e67436e926dc712532113cceb97452b4d3227975fb221029ea8cc75076d9fb9c10d35e68030fc22198b34982dbb629ec04b4f8b05a071d7210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae73203708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "0100000001dab42354d0519923de0a89bb87e3e26833dbc869a2b6d40b2a0f8be94b73b590010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102f54ccc12f76f0562d2061e67436e926dc712532113cceb97452b4d3227975fb221029ea8cc75076d9fb9c10d35e68030fc22198b34982dbb629ec04b4f8b05a071d7210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae43a53708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "order": "01000000017915f02e6dbd5d1d2f4d39064481959e7a2694b7cc6006d0fbbae3f6fa6fa81a010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821029e0a97964c0b9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a07161210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae6be73608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "order": "0100000001bc905c8367833a7d0c15ac5b857c4fdfd2df71006d723076133aca0989cc4d34010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821029e0a97964c0b9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a07161210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aecb863708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "0100000001f366653f7ae066c884df5956d54b42f852819deae6d37baefc4de4e3840224b0010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e00000000000069512102c24ccc12f76f0562d2061e67576e926d65419ce896cceb97452eb8d327965fa421029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aedb953608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "0100000001b86813634cf9c85144dab0149b3035ca7bdd3059442863e1e2381084ba33044f010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace80300000000000069512102c24ccc12f76f0562d2061e67576e926d65419ce896cceb97452eb8d327965fa421029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aecb4f3708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "0100000001ef9511f3992f60702f011fb70bc1a93f81915852e484c4b714284d0344a5f195020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb97452eb8d327965f4621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4b443608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "01000000015327ead545ec1ad99dffbc66f6a192353312227122338ce2e33520de23ae916e020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb97452eb8d327965f4621029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aecb183708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "order": "0100000001bc4dbd0d4439f6516bf5b7447ef49288c5e1cd1df8115b6122752d2fb10f1e8d020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821029e0a97964c0b9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a07161210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae430b3608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "order": "0100000001432ad68bf2571b2ca62096174a99294a93ca9c743124da3b7ce7dbdfba5ad54f020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821029e0a97964c0b9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a07161210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae53fa3608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "order": "010000000191130542afe0eb64ea4e533e43196f690431339e1f7af9cf23c8c78a291931d8010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821039ea8cc75076d9fb9c5417aaa8970fbf2198b34982db6d93ec04b4f8b05a071bf210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae3bd23508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "order": "01000000019b3472b6071684052316f397e290b74e4e0d7d9224f8bae99b4f28075c0d4621010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821039ea8cc75076d9fb9c5417aaa8970fbf2198b34982db6d93ec04b4f8b05a071bf210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aedbdb3608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "order": "010000000145513657776ca65b5ac00f94a848b19c4d6b8dde6f1caa5ffd6a10ca2b5373c0010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb97452b471e0c965f0121029ea8cc75076c9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a071b7210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae83712608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "order": "01000000013a1b08d99e7da78391c8777c143a8cb0620a0b64e635d0c94bba36ece6b29918010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb97452b471e0c965f0121029ea8cc75076c9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a071b7210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb3952708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "01000000013e4f64cae534191014950d570671bd75cad856112ad2cc21496db4771ff81c60010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb97453aac9127965fc021029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeb1162608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "0100000001b694f3067c1ee880a684f65c1e5a53a8b9b44dc0f86db232973bdbb27d8d76a1010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512102c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb97453aac9127965fc021029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae01702708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "01000000016855fa33d3c3efd0c4e29710539c976072bd94cff335138b559662fa9e92cf1a020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512103c24ccc12f76f0562d2061e67576e926d65419ce896cceb974510d7f827965fb721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aedfbb2508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "0100000001d6e90e80f942bbaa74463bd9e07f8f3c4453187042ab38cf2386da07e5978e69020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512103c24ccc12f76f0562d2061e67576e926d65419ce896cceb974510d7f827965fb721029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4f4a2708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "0100000001dd152f0d7c20c5d85c5d8e9e1e2807b816d749cc98ec9a7b763d98eed0aedf62020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e00000000000069512103c24ccc12f76f0562d2061e67576e94a71fc600a896cceb97452b4d3222965f0921029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4f6a2508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "010000000132e138f55c366d3c2cdb0cb874b1483b216c6a37f07d5567d094d79e55ebfe0c020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace80300000000000069512103c24ccc12f76f0562d2061e67576e94a71fc600a896cceb97452b4d3222965f0921029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4f132708000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "0100000001ba75f8be59f50408661f07c98d9edcd9ae1cfb6403f5e8b701b64a2f2de4b29b020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e00000000000069512103c24ccc12f76f0562d2061e67576e94a71fc600a896cceb97452b4d322d965fb921029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae7d0f2508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "01000000015a5127472a777916900d41ffc70e8ff550b8829c85ea64cabdf6162f07b0ac1f020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee80300000000000069512103c24ccc12f76f0562d2061e67576e94a71fc600a896cceb97452b4d322d965fb921029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9ded2608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "0100000001a4ccad1fc6d93e532da470bae7b41ca093e5025163b42591239f31ab89291762020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e94ccc12f76f0562d2061e67436e926dc71a7c99ceb31468bad4b2cdd8975f8121029ea8cc75076d9fb9d50c1bdda25d894f39fa41f943cf0beab94b4f8b05a07152210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae75d62408000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "01000000018c81e7d7e2084b9be1786b23712362e7e31878bef2fca7485051aa7b7b66b6e3020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e94ccc12f76f0562d2061e67436e926dc71a7c99ceb31468bad4b2cdd8975f8121029ea8cc75076d9fb9d50c1bdda25d894f39fa41f943cf0beab94b4f8b05a07152210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae25cf2608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "broadcast": "0100000001935fd86ac1916b6ea43f77d1475049d7cf55bacb399c5866c7c1d72fd79fcf19010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295ec7258fa3f0cceb97452b0179679f0af22103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae6d9d2408000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "broadcast": "010000000139ea1c842de41f5d77a51ae3a45bc4895c312d2a1832cd93b82d9ce6bb9c4ebd010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295ec7258fa3f0cceb97452b0179679f0af22103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeadb02608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "broadcast": "01000000015ef833190e74ad47d8ae693f841a8b1b500ded7e23ee66b29898b72ec4914fdc010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff02781e00000000000069512102ff4ccc12f76f0562d2061e674922573fc7258fa3f0cceb97452b4d322792336b2103f1cba775076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07104210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae883f870b000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" + "broadcast": "01000000015ef833190e74ad47d8ae693f841a8b1b500ded7e23ee66b29898b72ec4914fdc010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff02e80300000000000069512102ff4ccc12f76f0562d2061e674922573fc7258fa3f0cceb97452b4d322792336b2103f1cba775076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07104210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae185a870b000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" }, { - "bet": "01000000017a3c651338194169382321a4c8886f8fee1f82c8cc084d9e6bcb75fd02c33033010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c297ea3f0cceb97452b443227965f4521039ea8cc7c076d9fb9c5417aa5cb30ef92198b34fc2dbb629ec04b4f8b05a071af210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aedd4b2408000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "bet": "0100000001afb8e02f3cb2ee8dcee303676520abb88b022684feb177443ed9634bb78843d1010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c297ea3f0cceb97452b443227965f4521039ea8cc7c076d9fb9c5417aa5cb30ef92198b34fc2dbb629ec04b4f8b05a071af210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aead792608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "bet": "0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e00000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c297ea3f0cceb97452b443227965ff321039ea8cc7c076d9fb9c5417aa5cb30ef92198b34fc2dbb629ec04b4f8b05a071af210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae708ff505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" + "bet": "0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace80300000000000069512102ec4ccc12f76f0562d2061e677f6e923f7c297ea3f0cceb97452b443227965ff321039ea8cc7c076d9fb9c5417aa5cb30ef92198b34fc2dbb629ec04b4f8b05a071af210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae00aaf505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" }, { - "bet": "0100000001e06e35244bb04c063cd3a730d1b6c804a746401f3e4bd38e04556ed2350eb2ac020000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e00000000000069512103ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0cceb97452b473227965f3721029ea8cc7f076d9fb9c5417aa5cb30ef92198b37702dbb629ec04b4f8b05a07168210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753aee03df505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" + "bet": "010000000193fcee171827d3f90c19cd9a7073d22c52653a8118edadfaa1c80baddd62655c020000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace80300000000000069512103ec4ccc12f76f0562d2061e677f6e913f7c29b7a3f0cceb97452b473227965f3721029ea8cc7f076d9fb9c5417aa5cb30ef92198b37702dbb629ec04b4f8b05a07168210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae0073f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" }, { - "broadcast": "01000000010d0e431950c8621a8a694c83dd97af3095bfeaefb21ff798d877a26d8a1498c6020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295ec5258fa3f0cceb97452b0179679f0a152103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed5122408000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "broadcast": "0100000001b10931cb11a8bb5cc3406f4604a26554d5fffea17e68ad6d6b0397159969212a020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295ec5258fa3f0cceb97452b0179679f0a152103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b8210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae355b2608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { "burn": "0100000001e80b32fd1670a1dc1c04ea50d944448fdd0f88b1bb1c127ee538d3b740d918c0000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac4124bb02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" @@ -87,72 +87,72 @@ "burn": "01000000015001af2c4c3bc2c43b6233261394910d10fb157a082d9b3038c65f2d01e4ff200000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff02c005d901000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac47c51c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" }, { - "issuance": "0100000001737a7238f916af16f7b8456c72d0fb5684fcc93fdba3771cc336059a49d2c6930100000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff02781e00000000000069512102e94ccc12f76f0562d2061e67436e95e748f89a47b1cceb97452b4d31cf965f8221029ea8cc75076d9fb9d51129edeb598f516cee50b84cc811fbb44b4f8b05a071bf2111111111111111111111111111111111111111111111111111111111111111111153ae3f8c1c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" + "issuance": "0100000001737a7238f916af16f7b8456c72d0fb5684fcc93fdba3771cc336059a49d2c6930100000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff02e80300000000000069512102e94ccc12f76f0562d2061e67436e95e748f89a47b1cceb97452b4d31cf965f8221029ea8cc75076d9fb9d51129edeb598f516cee50b84cc811fbb44b4f8b05a071bf2111111111111111111111111111111111111111111111111111111111111111111153aecfa61c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" }, { - "send": "0100000001d81a37c4e80f687a2f14ebe1d07881831df4a3e906f4326f608b855783a8a98d010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87781e00000000000069512102c24ccc12f76f0562d2061e67576e926d65419ce896cceb97452eb8d327965fa421029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae45c12308000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "0100000001ae5bd21881d286810402df7343e21ac6d8673806ee85596eea5c796cac2e4616010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87e80300000000000069512102c24ccc12f76f0562d2061e67576e926d65419ce896cceb97452eb8d327965fa421029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae35242608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "broadcast": "01000000017ed2539e3ec9b9c104fd80db1694de6a4ecd48011f854084578af6dca7d674ac0100000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff020000000000000000286a268a5dda15fb6f05628a061e7905d5a16ff8ea7fa3f0cceb97456706722ec331f7dcec21621eebe8741c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" + "broadcast": "01000000017ede78c16d566f54f06a50c60d16bb7aad9229b6fe0fad3c6a63e4b987f7bae80100000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff020000000000000000286a268a5dda15fb6f05628a061e7905d5a16ff8ea7fa3f0cceb97456706722ec331f7dcec21621eeb788f1c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" }, { - "bet": "010000000186015eaa13c30458af0ca269989888ec4f0a59ae4ef6832d62592190eb6f0f510100000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e870000000000000000346a328a5dda15fb6f05628a061e4f576dc0d6f4d27fa3f0cceb9745214d3227965f9ea8c675076d9fb9c5417aa5cb234c221988dcde431c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" + "bet": "010000000186015eaa13c30458af0ca269989888ec4f0a59ae4ef6832d62592190eb6f0f510100000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e870000000000000000346a328a5dda15fb6f05628a061e4f576dc0d6f4d27fa3f0cceb9745214d3227965f9ea8c675076d9fb9c5417aa5cb234c221988dc6e5e1c040000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000" }, { - "issuance": "0100000001facabf3a2b5b9487cf7c60a738080886526f959b940cd822bd71cbf4ebd162e0010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02781e00000000000069512103ed4ccc12f76f0562d2061e67436e925539c5128f99cceb97452b4d31cf975f1a21029ea8cc75076d9fb9c90d15c6a055980278f847fd59bb629ec04b4f8b05a071282103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553ae39ebba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" + "issuance": "0100000001facabf3a2b5b9487cf7c60a738080886526f959b940cd822bd71cbf4ebd162e0010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02e80300000000000069512103ed4ccc12f76f0562d2061e67436e925539c5128f99cceb97452b4d31cf975f1a21029ea8cc75076d9fb9c90d15c6a055980278f847fd59bb629ec04b4f8b05a071282103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553aec905bb02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" }, { - "issuance": "0100000001c90b6bd2f3f9f8bce51052dc3fdf0ff11aa6f0da214a27cf05460a8f2acb665f010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02781e00000000000069512102f54ccc12f76f0562d2061e67436e925539c5128f99cceb97452b4d3227975fe721029ea8cc75076d9fb9c10d35e68030fc22198b34982dbb629ec04b4f8b05a071d72103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553ae31b2ba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" + "issuance": "010000000163bc9d24c0ca751090d225104af4fdf17e279ba98232d16f3d8b7509f4e6bc34010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02e80300000000000069512102f54ccc12f76f0562d2061e67436e925539c5128f99cceb97452b4d3227975fe721029ea8cc75076d9fb9c10d35e68030fc22198b34982dbb629ec04b4f8b05a071d72103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553ae51e7ba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" }, { - "issuance": "0100000001fe66e627e5638d5b0ceef0dedadbcb2240cccbd06d11e06231b1b1cd7174aa74010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02781e00000000000069512103f04ccc12f76f0562d2061e67436e925539c5128f99cceb97452b4d3227975fe921029ea8cc75076d9fb9c22212c4a5579946198b34982dbb629ec04b4f8b05a071422103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553ae2979ba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" + "issuance": "0100000001c24bd4c3be7f1c5f69c1a4ed1b0cf604f6e5076084909b86c53577ce0f815b02010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02e80300000000000069512103f04ccc12f76f0562d2061e67436e925539c5128f99cceb97452b4d3227975fe921029ea8cc75076d9fb9c22212c4a5579946198b34982dbb629ec04b4f8b05a071422103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553aed9c8ba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" }, { "burn": "01000000015001af2c4c3bc2c43b6233261394910d10fb157a082d9b3038c65f2d01e4ef200000000000ffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac87bf430200000000160014751e76e8199196d454941c45d1b3a323f1433bd600000000" }, { - "send": "010000000181646c6e4632e890caa5f696d4e9509a134338c326f1900d3ba1d8a7f8e5d9f0020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff020000000000000000386a368a5dda15fb6f05628a061e65576e926dc71a7fa2f0cceb9740deac32481b35760b7ff4615c870d24ae8e6a0ce0696fcf675cfd41d70d5ea82308000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "send": "0100000001e7768e395b1df3d547aafbab9938af0289d5f3efb407facb07b499e819f8a0f6020000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff020000000000000000386a368a5dda15fb6f05628a061e65576e926dc71a7fa2f0cceb9740deac32481b35760b7ff4615c870d24ae8e6a0ce0696fcf675cfd41d70d4e0b2608000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "send": "010000000105a37095f7d4ce96bca38d413dc32d137b5f758605d718e42b23b44eaa45c8aa020000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff020000000000000000376a358a5dda15fb6f05628a061e65576e926dc71a7fa2f0cceb9740deac3248de67461b94f94b163878152efccb5007c5e429bcce462dba1225f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" + "send": "01000000011ec533f4235316a6fad9d6f4b45202909bdb63c86e5f1e3d6e03a6be92a04edb020000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff020000000000000000376a358a5dda15fb6f05628a061e65576e926dc71a7fa2f0cceb9740deac3248de67461b94f94b163878152efccb5007c5e429bcce462dba325af505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" }, { - "broadcast": "01000000015bc35833f494d9960f92431f6a507f49b869663ce91b323fe08afb008704d465010000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295ec7258fa3f0cceb97452b0179679f0af22103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b82102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453ae39ebba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" + "broadcast": "01000000015bc35833f494d9960f92431f6a507f49b869663ce91b323fe08afb008704d465010000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295ec7258fa3f0cceb97452b0179679f0af22103f0c1b8555308eccdc5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071b82102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453aec905bb02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" }, { - "bet": "0100000001627041e1660f69b1ce7a66231e4f82256e5502473f10a4d37773a842e1836809010000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff0336150000000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac781e00000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c297ea3f0cceb97452b443227965f4521039ea8cc7c076d9fb9c5417aa5cb30ef92198b34fc2dbb629ec04b4f8b05a071af2102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453aea999ba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" + "bet": "010000000114cf57564928ba16f58d110f12fcd524eeb6b2e827de20c04a1794217ae0953b010000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff0336150000000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ace80300000000000069512103ec4ccc12f76f0562d2061e677f6e933f7c297ea3f0cceb97452b443227965f4521039ea8cc7c076d9fb9c5417aa5cb30ef92198b34fc2dbb629ec04b4f8b05a071af2102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453aec9ceba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" }, { - "broadcast": "010000000175328042783f7b26e21dd0b95bd89f47c73fb7df98450bc441ac334097f64724020000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295ec5258fa3f0cceb97452b4d32279f30392102eedca51a691ebf89c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071c72102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453aea160ba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" + "broadcast": "0100000001ef9ceda3656e9ca5d2d90627d6c5aeffe9e7b207a8d5a50f3d556b1cae21e841020000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295ec5258fa3f0cceb97452b4d32279f30392102eedca51a691ebf89c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071c72102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453ae51b0ba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" }, { - "broadcast": "010000000106e9939169b83d4de00ea185ef1080433c6950d5c99cb3c263c4977c82ad1c9b010000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02781e00000000000069512103ff4ccc12f76f0562d2061e67493c295ec4258fa3f0cceb97452b4d322792331a2103f1cba775076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071042102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453ae9927ba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" + "broadcast": "010000000138669a2fe1a2df59a909e7742dd95a13becadb1fd9cc313f420537378bb00f87010000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788acffffffff02e80300000000000069512103ff4ccc12f76f0562d2061e67493c295ec4258fa3f0cceb97452b4d322792331a2103f1cba775076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071042102610f28a56e187f5cd133d7bfe107b159fa3b5129ba35e91fb915fe9a8efa43b453aed991ba02000000001976a914c1a6de504b9bc0d0d6987312b2e37564079791b788ac00000000" }, { - "broadcast": "01000000010d99d25da8b6113897c044c0484f065ffed3239f313c1e260e085a4539dd4e21010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02781e00000000000069512102f84ccc12f76f0562d2061e67493c295ec3258fa3f0cceb97452b4d32279f303a2102eedca51a691ebf88c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071f82103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553ae2140ba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" + "broadcast": "0100000001eb0bb57357c24900219e01af97ee10458a4ed615b2e70b71fcdbc18342a2b14a010000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388acffffffff02e80300000000000069512102f84ccc12f76f0562d2061e67493c295ec3258fa3f0cceb97452b4d32279f303a2102eedca51a691ebf88c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a071f82103c403a9364dcb223cc32df5a4afab6089e941590cecfd5ac823c4fcff46e8f6c553ae61aaba02000000001976a914b390187ef2854422ac5e4a2eb6ffe92496bef52388ac00000000" }, { - "order": "0100000001a522842be49fd48333658f68f96babf5cf90dfb0c4eadbcba2812d4003df0bb0010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e00000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821029ea8cc75076d9fb9c5417aa9fe30fbf2198b34982db6d93ec04b4f8b05a07128210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae566f2308000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "order": "0100000001a522842be49fd48333658f68f96babf5cf90dfb0c4eadbcba2812d4003df0bb0010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e80300000000000069512102e84ccc12f76f0562d2061e675d6e926dc71a7fa3f1cceb97452eb8d327965f3821029ea8cc75076d9fb9c5417aa9fe30fbf2198b34982db6d93ec04b4f8b05a07128210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed6ec2508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "order": "010000000134bc794f0e92abb21d4b09976446343bff9424e5f5d694afb94636f3246571c8010000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff02781e00000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb97452b410727965f4e21029ea8cc75076c9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a071b7210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae5ac4e505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" + "order": "010000000134bc794f0e92abb21d4b09976446343bff9424e5f5d694afb94636f3246571c8010000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff02e80300000000000069512103e84ccc12f76f0562d2061e675d6e926dc71a7fa3f0cceb97452b410727965f4e21029ea8cc75076c9fb9c5417f502a30fbf2198b34982dbb629ec04b4f8b05a071b7210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae0a14e605000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000" }, { - "burn": "0100000001eee7900553561ac7571eb800ca562d69fe880fe9f707f11b079b66f1c099d5a9010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac0f1ed507000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" + "burn": "010000000160a6466184dfcccca831a0fe9e020d379399a430fc91da7e4d08a9857c52e0f9010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac9f38d507000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" }, { - "issuance": "01000000011a1b0b1d2e668e031c8d3a2f36144fa84ec7b71dcdda2f3dbbb1af87123e73c0010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff02781e00000000000069512103ea4ccc12f76f0562d2061e67436e926dc124e7fc0dcceb97452b4d3243975fea21029ea8cc75076d9fb9c8151fd6bf10984b6fe250fd43df629ec04b4f8b05a07185210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae07e5d407000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" + "issuance": "01000000011a1b0b1d2e668e031c8d3a2f36144fa84ec7b71dcdda2f3dbbb1af87123e73c0010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff02e80300000000000069512102f94ccc12f76f0562d2061e67436e926dc124e7fc0dcceb97452b4d3243975fc521029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae271ad507000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" }, { - "send": "0100000001b5245186bfd16de872efd124edb7577c092f4c9dcd6d925f22faa0f32cddbd4b010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff0336150000000000001976a9146c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a15288ac781e00000000000069512102c24ccc12f76f0562d2061e67576e926dc124e7fc0dcceb97452b4d322d965ffc21029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae7793d407000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" + "send": "010000000103452028095b9cae91ea268e652a5900f8d128bf4d0acef234e0825439ed1b32010000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff0336150000000000001976a9146c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a15288ace80300000000000069512102c24ccc12f76f0562d2061e67576e926dc124e7fc0dcceb97452b4d322d965ffc21029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae27e3d407000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" }, { - "send": "0100000001bc209ea1682754f942f50c5f2b67993eb9a214a0a27e55055fb774d3d3059c12020000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff0336150000000000001976a9146c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a15288ac781e00000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb97508f4cbe39965fa521029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53aee741d407000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" + "send": "01000000012e2e5d5f13ddda538b2fdbede5bbabc82076a37462393083b43f641f9a6b1502020000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088acffffffff0336150000000000001976a9146c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a15288ace80300000000000069512103c24ccc12f76f0562d2061e67576e926dc71a7fa3f1cceb97508f4cbe39965fa521029ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629ec04b4f8b05a07134210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b53ae27acd407000000001976a9144e5638a01efbb2f292481797ae1dcfcdaeb98d0088ac00000000" }, { - "issuance": "0100000001096b0690a465a4cf1b972619286a10792ffbf19871324fabc1dace258eae2498010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff020000000000000000356a338a5dda15fb6f05628a061e73576e926dcdbe76def0cceb9740deac3226965f9ea8cc75076d9fb5952008c0a544dc436af851ecba562308000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "0100000001989473a1201b5a8431ef585bc3127dcd7fe9e9dccd3f9ea5d3a369465c17db74010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff020000000000000000356a338a5dda15fb6f05628a061e73576e926dcdbe76def0cceb9740deac3226965f9ea8cc75076d9fb5952008c0a544dc436af851ec3ad42508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" }, { - "issuance": "01000000018fc76d52b1adc5dab066678032986d747c1540236927aed240fbb7eed8e36a07010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0200000000000000003f6a3d8a5dda15fb6f05628a061e72563d9a4ca0016fc6f0cceb9740deac322686d10e0db1cf9e0a5b9b2d71fa57e43c946171e258fc0dd404beb02a3dee6bd4243d2308000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + "issuance": "01000000018fc76d52b1adc5dab066678032986d747c1540236927aed240fbb7eed8e36a07010000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0200000000000000003f6a3d8a5dda15fb6f05628a061e72563d9a4ca0016fc6f0cceb9740deac322686d10e0db1cf9e0a5b9b2d71fa57e43c946171e258fc0dd404beb02a3dee6bd4a4ba2508000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" } ] \ No newline at end of file diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/unittest_fixture.log b/counterparty-lib/counterpartylib/test/fixtures/scenarios/unittest_fixture.log new file mode 100644 index 0000000000..4a1cd9953b --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/unittest_fixture.log @@ -0,0 +1,406 @@ +Creating connection to `:memory:`. +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.99909140; txid: ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1; vout: 0; confirmations: 75'] +Fee/KB 0.00025000 +New input: amount: 1.99909140; txid: ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1; vout: 0; confirmations: 75 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 1.37903515 BTC +Burn: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc burned BTC for XCP (6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37903515; txid: 6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37903515; txid: 6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37895715 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1000.0 of divisible asset DIVISIBLE (1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37895715; txid: 1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37895715; txid: 1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37887915 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1000 of indivisible asset NODIVISIBLE (7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37887915; txid: 7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37887915; txid: 7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37880115 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 0.00001 of divisible asset CALLABLE (c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37880115; txid: c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37880115; txid: c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37872315 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 0.00001 of divisible asset LOCKED (90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37872315; txid: 90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37872315; txid: 90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37864515 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc locked asset LOCKED (344dcc8909ca3a137630726d0071dfd2df4f7c855bac150c7d3a8367835c90bc) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37864515; txid: 344dcc8909ca3a137630726d0071dfd2df4f7c855bac150c7d3a8367835c90bc; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37864515; txid: 344dcc8909ca3a137630726d0071dfd2df4f7c855bac150c7d3a8367835c90bc; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37856715 BTC +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered XCP for DIVISIBLE in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8) [open] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37856715; txid: 4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37856715; txid: 4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.37842635 BTC +Send: DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37842635; txid: 6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37842635; txid: 6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.37828555 BTC +Send: XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37828555; txid: 4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37828555; txid: 4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37820755 BTC +BUMP TXID 4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8 +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered XCP for DIVISIBLE in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (21460d5c07284f9be9baf824927d0d4e4eb790e297f3162305841607b672349b) [open] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37820755; txid: 21460d5c07284f9be9baf824927d0d4e4eb790e297f3162305841607b672349b; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37820755; txid: 21460d5c07284f9be9baf824927d0d4e4eb790e297f3162305841607b672349b; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.37812955 BTC +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered XCP for BTC in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a) [open] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.37812955; txid: 1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.37812955; txid: 1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 1000000 +Size: 272 Fee: 0.01000000 Change quantity: 1.36811955 BTC +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered BTC for XCP in 2000 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6) [open] +Considering: 1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a +Tx0 Price: 0.01; Tx1 Inverse Price: 0.00666667 +Skipping: price mismatch. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36811955; txid: a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36811955; txid: a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.36802305 BTC +Send: XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36802305; txid: 698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36802305; txid: 698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.36792655 BTC +Send: DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36792655; txid: 0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36792655; txid: 0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.36778575 BTC +Send: NODIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36778575; txid: 1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36778575; txid: 1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.36768925 BTC +Send: NODIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36768925; txid: e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36768925; txid: e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.36761125 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 92233720368.54775807 of divisible asset MAXI (bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36761125; txid: bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36761125; txid: bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.36753325 BTC +Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:20 with a fee of 5.0%% (d14388b74b63d93e4477b1fe8426028bb8ab20656703e3ce8deeb23c2fe0b8af) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.93427600; txid: dc4f91c42eb79898b266ee237eed0d501b8b1a843f69aed847ad740e1933f85e; vout: 1; confirmations: 25'] +Fee/KB 0.00025000 +New input: amount: 1.93427600; txid: dc4f91c42eb79898b266ee237eed0d501b8b1a843f69aed847ad740e1933f85e; vout: 1; confirmations: 25 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.93419800 BTC +Broadcast: mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH locked his feed (f9e0527c85a9084d7eda91fc30a49993370d029efea031a8ccccdf846146a660) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36753325; txid: d14388b74b63d93e4477b1fe8426028bb8ab20656703e3ce8deeb23c2fe0b8af; vout: 1; confirmations: 2'] +Fee/KB 0.00025000 +New input: amount: 1.36753325; txid: d14388b74b63d93e4477b1fe8426028bb8ab20656703e3ce8deeb23c2fe0b8af; vout: 1; confirmations: 2 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.36739245 BTC +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.00000000; txid: e43c357b78baf473fd21cbc1481ac450746b60cf1d2702ce3a73a8811811e3eb; vout: 0; confirmations: 23', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 95', 'amount: 0.00005430; txid: 6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753; vout: 0; confirmations: 13', 'amount: 0.00005430; txid: 4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43; vout: 0; confirmations: 12', 'amount: 0.00005430; txid: 1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a; vout: 0; confirmations: 6'] +Fee/KB 0.00025000 +New input: amount: 1.00000000; txid: e43c357b78baf473fd21cbc1481ac450746b60cf1d2702ce3a73a8811811e3eb; vout: 0; confirmations: 23 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.99985920 BTC +Bet: XCP against XCP, by mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Considering: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1 +Tx0 Inverse Odds: 1.0; Tx1 Odds: 1.0 +Potential forward quantities: 9, 9 +Forward Quantity: 9 +Backward Quantity: 9 +Bet: XCP against XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Bet: XCP against XCP, by mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +Bet Match: BearCFD for XCP against BullCFD for XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:21 that value, leveraged 1.0x (2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93) [pending] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.99985920; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 2; confirmations: 81', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 176', 'amount: 0.00005430; txid: 6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753; vout: 0; confirmations: 94', 'amount: 0.00005430; txid: 4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43; vout: 0; confirmations: 93', 'amount: 0.00005430; txid: 1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a; vout: 0; confirmations: 87'] +Fee/KB 0.00025000 +New input: amount: 0.99985920; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 2; confirmations: 81 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.99971840 BTC +Bet: XCP against XCP, by mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36739245; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 2; confirmations: 83', 'amount: 0.00005430; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 0; confirmations: 83', 'amount: 0.00005430; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 0; confirmations: 82', 'amount: 0.00005430; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.36739245; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 2; confirmations: 83 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.36731445 BTC +Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:22 with a fee of 5.0%% (16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae) [valid] +Bet Match Settled: XCP credited to the bull, XCP credited to the bear, and XCP credited to the feed address (2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93) +Bet Match: BearCFD for XCP against BullCFD for XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:21 that value, leveraged 1.0x (2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93) [settled] +Database: set status of bet_match 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93 to settled. +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.07824570; txid: c018d940b7d338e57e121cbbb1880fdd8f4444d950ea041cdca17016fd320be8; vout: 0; confirmations: 247'] +Fee/KB 0.00025000 +New input: amount: 1.07824570; txid: c018d940b7d338e57e121cbbb1880fdd8f4444d950ea041cdca17016fd320be8; vout: 0; confirmations: 247 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.45818945 BTC +Burn: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM burned BTC for XCP (65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b) [valid] +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.07824570; txid: 1befa135e687812ab8a60678ac17f982daf008cd7094dc95fc65a0b8e4bd955e; vout: 0; confirmations: 248'] +Fee/KB 0.00025000 +New input: amount: 1.07824570; txid: 1befa135e687812ab8a60678ac17f982daf008cd7094dc95fc65a0b8e4bd955e; vout: 0; confirmations: 248 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.45818945 BTC +Burn: munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b burned BTC for XCP (95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff) [valid] +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.07824570; txid: fea12706ef63c7ce57df3e1197b8b33e6a93ef2df07964ff654c14f1b900e17f; vout: 0; confirmations: 249'] +Fee/KB 0.00025000 +New input: amount: 1.07824570; txid: fea12706ef63c7ce57df3e1197b8b33e6a93ef2df07964ff654c14f1b900e17f; vout: 0; confirmations: 249 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.45818945 BTC +Burn: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 burned BTC for XCP (e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa) [valid] +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 0.05608646; txid: eac206b369d8130892c8be2d52f7bd9e3e0324870262daf3a19264246068ed2b; vout: 0; confirmations: 113'] +Fee/KB 0.00025000 +New input: amount: 0.05608646; txid: eac206b369d8130892c8be2d52f7bd9e3e0324870262daf3a19264246068ed2b; vout: 0; confirmations: 113 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.05593021 BTC +Burn: mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK burned BTC for XCP (bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45818945; txid: 95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff; vout: 1; confirmations: 3'] +Fee/KB 0.00025000 +New input: amount: 0.45818945; txid: 95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff; vout: 1; confirmations: 3 +final_fee inputs: 1 size: 246 final_fee 6150 +Size: 246 Fee: 0.00006150 Change quantity: 0.45812795 BTC +Dispenser: munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b opened a dispenser for asset XCP with 0.00000100 balance, giving 0.00000100 XCP for each 0.00000100 BTC +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.00000000; txid: 20ffe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 115'] +Fee/KB 0.00025000 +New input: amount: 1.00000000; txid: 20ffe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 115 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.68994375 BTC +Burn: 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy burned BTC for XCP (93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.68994375; txid: 93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.68994375; txid: 93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.68986575 BTC +Issuance: 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy created 1000 of indivisible asset PAYTOSCRIPT (e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36731445; txid: 16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae; vout: 1; confirmations: 8', 'amount: 0.00005430; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 0; confirmations: 91', 'amount: 0.00005430; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 0; confirmations: 90', 'amount: 0.00005430; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 0; confirmations: 9'] +Fee/KB 0.00025000 +New input: amount: 1.36731445; txid: 16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae; vout: 1; confirmations: 8 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.36717365 BTC +Send: DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy (f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.68986575; txid: e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e; vout: 1; confirmations: 2', 'amount: 0.00005430; txid: f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.68986575; txid: e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e; vout: 1; confirmations: 2 +final_fee inputs: 1 size: 239 final_fee 5975 +Size: 239 Fee: 0.00005975 Change quantity: 0.68980600 BTC +Broadcast: 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy at 2013-12-25T19:33:22 with a fee of 5.0%% (510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.68980600; txid: 510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186; vout: 1; confirmations: 1', 'amount: 0.00005430; txid: f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7; vout: 0; confirmations: 2'] +Fee/KB 0.00025000 +New input: amount: 0.68980600; txid: 510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 285 final_fee 7124 +Size: 285 Fee: 0.00007124 Change quantity: 0.68968046 BTC +Bet: XCP against XCP, by 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy, on 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45818945; txid: e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa; vout: 1; confirmations: 8'] +Fee/KB 0.00025000 +New input: amount: 0.45818945; txid: e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa; vout: 1; confirmations: 8 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45811145 BTC +Issuance: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 created 0.00001 of divisible asset LOCKEDPREV (34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45811145; txid: 34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.45811145; txid: 34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45803345 BTC +Issuance: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 locked asset LOCKEDPREV (025b810fce7735c5869b90846007e5f604f60c1beda4c1695f1c7fbec3d44bc2) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45803345; txid: 025b810fce7735c5869b90846007e5f604f60c1beda4c1695f1c7fbec3d44bc2; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.45803345; txid: 025b810fce7735c5869b90846007e5f604f60c1beda4c1695f1c7fbec3d44bc2; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45795545 BTC +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.00000000; txid: 20efe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 123'] +Fee/KB 0.00025000 +New input: amount: 1.00000000; txid: 20efe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 123 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 0.37994375 BTC +Burn: tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx burned BTC for XCP (27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36717365; txid: f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7; vout: 2; confirmations: 371', 'amount: 0.00005430; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 0; confirmations: 462', 'amount: 0.00005430; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 0; confirmations: 461', 'amount: 0.00005430; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 0; confirmations: 380'] +Fee/KB 0.00025000 +New input: amount: 1.36717365; txid: f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7; vout: 2; confirmations: 371 +final_fee inputs: 1 size: 255 final_fee 6375 +Size: 255 Fee: 0.00006375 Change quantity: 1.36710990 BTC +Send: XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.99971840; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 2; confirmations: 381', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 557', 'amount: 0.00005430; txid: 6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753; vout: 0; confirmations: 475', 'amount: 0.00005430; txid: 4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43; vout: 0; confirmations: 474', 'amount: 0.00005430; txid: 1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a; vout: 0; confirmations: 468'] +Fee/KB 0.00025000 +New input: amount: 0.99971840; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 2; confirmations: 381 +final_fee inputs: 1 size: 254 final_fee 6350 +Size: 254 Fee: 0.00006350 Change quantity: 0.99965490 BTC +Send: XCP from mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc (c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45818945; txid: 65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b; vout: 1; confirmations: 383'] +Fee/KB 0.00025000 +New input: amount: 0.45818945; txid: 65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b; vout: 1; confirmations: 383 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45811145 BTC +Broadcast: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM at 2013-12-25T19:33:20 with a fee of 5.0%% (3b95e07a2194174ac020de27e8b2b6ee24d5fc120f118df516ba28495657cf14) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45811145; txid: 3b95e07a2194174ac020de27e8b2b6ee24d5fc120f118df516ba28495657cf14; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.45811145; txid: 3b95e07a2194174ac020de27e8b2b6ee24d5fc120f118df516ba28495657cf14; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 0.45797065 BTC +Bet: XCP against XCP, by myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM, on myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45797065; txid: 41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef; vout: 2; confirmations: 1', 'amount: 0.00005430; txid: 41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef; vout: 0; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 0.45797065; txid: 41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45789265 BTC +Broadcast: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM at 2013-12-25T19:33:22 with a fee of 0.0%% (870fb08b373705423f31ccd91fdbcabe135ad92d74e709a959dfa2e12f9a6638) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45789265; txid: 870fb08b373705423f31ccd91fdbcabe135ad92d74e709a959dfa2e12f9a6638; vout: 1; confirmations: 1', 'amount: 0.00005430; txid: 41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef; vout: 0; confirmations: 2'] +Fee/KB 0.00025000 +New input: amount: 0.45789265; txid: 870fb08b373705423f31ccd91fdbcabe135ad92d74e709a959dfa2e12f9a6638; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45781465 BTC +Broadcast: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM locked his feed (685d7f99fa76a05201c3239a4e0d9060ea53307b171f6ad7d482a26c73e9c0d1) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.45795545; txid: 4ab1a24283c1dbfc710be7b215d64e8a4510ee97af019e210049c25773b50beb; vout: 1; confirmations: 375'] +Fee/KB 0.00025000 +New input: amount: 0.45795545; txid: 4ab1a24283c1dbfc710be7b215d64e8a4510ee97af019e210049c25773b50beb; vout: 1; confirmations: 375 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 0.45787745 BTC +Broadcast: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 at 2013-12-25T19:33:24 with a fee of 0.0%% (7c437705c315212315c85c0b8ba09d358679c91be20b54f30929c5a6052426af) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36710990; txid: b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5; vout: 1; confirmations: 10', 'amount: 0.00005430; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 0; confirmations: 472', 'amount: 0.00005430; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 0; confirmations: 471', 'amount: 0.00005430; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 0; confirmations: 390'] +Fee/KB 0.00025000 +New input: amount: 1.36710990; txid: b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5; vout: 1; confirmations: 10 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.36703190 BTC +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered XCP for BTC in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498) [open] +Considering: a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6 +Tx0 Price: 149.9999250000375; Tx1 Inverse Price: 125.0 +Skipping: price mismatch. +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 0.99965490; txid: c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34; vout: 1; confirmations: 10', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 567', 'amount: 0.00005430; txid: 6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753; vout: 0; confirmations: 485', 'amount: 0.00005430; txid: 4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43; vout: 0; confirmations: 484', 'amount: 0.00005430; txid: 1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a; vout: 0; confirmations: 478'] +Fee/KB 0.00025000 +New input: amount: 0.99965490; txid: c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34; vout: 1; confirmations: 10 +final_fee inputs: 1 size: 272 final_fee 1000000 +Size: 272 Fee: 0.01000000 Change quantity: 0.98964490 BTC +Order: mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns ordered BTC for XCP in 2000 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81) [open] +Considering: 74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498 +Tx0 Price: 0.008; Tx1 Inverse Price: 0.008 +Potential forward quantities: 100000000, 100000000 +Forward Quantity: 100000000 +Backward Quantity: 800000 +Tx1 fee provided remaining: 0.01; required fee: 7.2e-05 +Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered XCP for BTC in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498) [open] +Order: mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns ordered BTC for XCP in 2000 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81) [open] +Order Match: XCP for BTC (74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498_1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81) [pending] +Considering: 1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a +Skipping: negative give quantity remaining +data_btc_out=0 (data_value=0 len(data_array)=0) +Sorted candidate UTXOs: ['amount: 1.93419800; txid: f9e0527c85a9084d7eda91fc30a49993370d029efea031a8ccccdf846146a660; vout: 1; confirmations: 475'] +Fee/KB 0.00025000 +New input: amount: 1.93419800; txid: f9e0527c85a9084d7eda91fc30a49993370d029efea031a8ccccdf846146a660; vout: 1; confirmations: 475 +final_fee inputs: 1 size: 225 final_fee 5625 +Size: 225 Fee: 0.00005625 Change quantity: 1.31414175 BTC +Burn: mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH burned BTC for XCP (c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.31414175; txid: c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.31414175; txid: c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 272 final_fee 6800 +Size: 272 Fee: 0.00006800 Change quantity: 1.31406375 BTC +Issuance: mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH created 0.000001 of divisible asset DIVIDEND (321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.31406375; txid: 321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503; vout: 1; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.31406375; txid: 321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.31392295 BTC +Send: DIVIDEND from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH to mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj (02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e) [valid] +data_btc_out=1000 (data_value=1000 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.31392295; txid: 02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e; vout: 2; confirmations: 1'] +Fee/KB 0.00025000 +New input: amount: 1.31392295; txid: 02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e; vout: 2; confirmations: 1 +final_fee inputs: 1 size: 306 final_fee 7650 +Size: 306 Fee: 0.00007650 Change quantity: 1.31378215 BTC +Send: XCP from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH to mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj (a35ab1736565aceddbd1d71f92fc7f39d1361006aa9099f731e54e762964d5ba) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36703190; txid: 74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498; vout: 1; confirmations: 6', 'amount: 0.00005430; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 0; confirmations: 478', 'amount: 0.00005430; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 0; confirmations: 477', 'amount: 0.00005430; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 0; confirmations: 396'] +Fee/KB 0.00025000 +New input: amount: 1.36703190; txid: 74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498; vout: 1; confirmations: 6 +final_fee inputs: 1 size: 252 final_fee 6300 +Size: 252 Fee: 0.00006300 Change quantity: 1.36696890 BTC +Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1.0 of divisible asset PARENT (076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f) [valid] +data_btc_out=0 (data_value=0 len(data_array)=1) +Sorted candidate UTXOs: ['amount: 1.36696890; txid: 076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f; vout: 1; confirmations: 1', 'amount: 0.00005430; txid: 2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1; vout: 0; confirmations: 479', 'amount: 0.00005430; txid: 5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93; vout: 0; confirmations: 478', 'amount: 0.00005430; txid: db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e; vout: 0; confirmations: 397'] +Fee/KB 0.00025000 +New input: amount: 1.36696890; txid: 076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f; vout: 1; confirmations: 1 +final_fee inputs: 1 size: 262 final_fee 6550 +Size: 262 Fee: 0.00006550 Change quantity: 1.36690340 BTC +Subasset Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1.0 of divisible subasset PARENT.already.issued as numeric asset A95428956661682277 (0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf) [valid] +Checking for conservation of assets. +XCP has been conserved (6040.3184792 XCP both issued and held) +A95428956661682277 has been conserved (1.0 A95428956661682277 both issued and held) +CALLABLE has been conserved (0.00001 CALLABLE both issued and held) +DIVIDEND has been conserved (0.000001 DIVIDEND both issued and held) +DIVISIBLE has been conserved (1000.0 DIVISIBLE both issued and held) +LOCKED has been conserved (0.00001 LOCKED both issued and held) +LOCKEDPREV has been conserved (0.00001 LOCKEDPREV both issued and held) +MAXI has been conserved (92233720368.54775807 MAXI both issued and held) +NODIVISIBLE has been conserved (1000 NODIVISIBLE both issued and held) +PARENT has been conserved (1.0 PARENT both issued and held) +PAYTOSCRIPT has been conserved (1000 PAYTOSCRIPT both issued and held) +All assets have been conserved. diff --git a/counterparty-lib/counterpartylib/test/fixtures/scenarios/unittest_fixture.sql b/counterparty-lib/counterpartylib/test/fixtures/scenarios/unittest_fixture.sql new file mode 100644 index 0000000000..9435ea4cf2 --- /dev/null +++ b/counterparty-lib/counterpartylib/test/fixtures/scenarios/unittest_fixture.sql @@ -0,0 +1,2111 @@ +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table blocks +DROP TABLE IF EXISTS blocks; +CREATE TABLE blocks( + block_index INTEGER UNIQUE, + block_hash TEXT UNIQUE, + block_time INTEGER, + previous_block_hash TEXT UNIQUE, + difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, + PRIMARY KEY (block_index, block_hash)); +INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); +INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'cf0ea1d313e22ba5f413075b88e07dffc5c00e59f95eeb6d6dec935bd77f5ae4','f06c23e6040a063ed59693baa0d63492dce64e1debc7455b22f5535c9dfbdc67','e4eed12f6f05a0317da3041d28e5171bfb56b1cbeca7c3bc0e8b74d26123bfa4'); +INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'11461f972c4cd85c87b5abfedb3cee589d09e945570d34564dcde6f4df9d2b57','ff8358e8c8b2cb9a1765deadb77bdfc6eae05a844831a0a8c8820d416d54446e','d7cb5efb1a17015371cfc33e3d9a8d524d5beb9255a72448effe7449eb780245'); +INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'355d92f841de89a1d97c3b2ea7623959ea4494bb62ea7e67ad359beb68caca8c','b17176b511fdea4cd899cfaf83f2e12193a4c92d1b199f18f590eb4fed90fa25','84125356eb3838bdfe64794363b71f399dc558944d70248455718d689f34966e'); +INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'edcd7e344fb5cca16999f025594890b8b54543555e61eb3807406bb4204677f2','b6dffe5b8c1f483c3c20832d23dddd7b530afe7ac1f3f57f433da59d83b48f06','3f0cb6e99c419913baab1e6920f53810e2bbb96beb46c013bca56529009771fc'); +INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'abd71a31bc1f8a072761b23a5bc2976731ebdf305d1d7d33922e93573f308129','3da72b0c813432f47a3a70887dfd29350d270e9ebaca9875ed6304c91888e387','bba0ba16f1f9fd9f153521a09d671d657abb8166171f1fecca727fa4b01adcaa'); +INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'0c3914f9676e506a96e6db793f15200ef33087cd47de4d27628849013a391daa','2d59f139907859f9108360f7fa4695101a6b5ef0b7dd0e56c2dd41641e58e9af','40b66251dc24ec9e3b6464f34ab9f1718d973f29a25a41be430e73b1cd4fcca4'); +INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'57ff5f34a9e418b179db9003414c5f3bdfa7feeb538f24071b23d024a3d05df0','a4a6fb433e6c49968fded16954502c472b0d21b74c6cce8d08c8c53c00f2781e','417a8cf3fc57209a14df0f48a0f84bb7c9aebaee206b8eb737e6b06e656a4327'); +INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'bfed530458339aab02ff75ad76738569dc6997c7a35d4452351678b04e022f68','ce20264c332892b0a5e0c3e2d4b63d02c901fa2c3f8c5171b2896b50c82ea0af','fda7e3c7a85544c0e02a60378afa21b59640fbb66398aed43d3c15f3723a8b9f'); +INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'d4feec997754d11a1502e5351ed62fcfbfcafb770e19a37da41d1d88b7b45ed4','d25c9f48fbbe2010a62cad729d45b658a2caf9a7c9abc65a30e2a7fc47bc83e5','c15b96e41b3a7b9b985da4252d54d0d9565d7797177d23c0db6336fedefdfc59'); +INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'4ab5ff9e71bbc83956557fb5abec98372fa38e5580838fb258b2d831bfc4d9ea','173e769e0b4fa951ef0267c7e218f3a473d9a5857b0880d654a2181f244c92e2','333d21a105b87b76bc929755d1c107cae8c0aba9d3ca2f77533358b3d3c51956'); +INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'1909ef40a24263776cb9e0d52a690048b50728855a0fe4b0e1ba3834a9e401c1','7d1ef03dad99c4bdf7a8e5af7209a136c8ac392922dd3afdbcc0446ea1f5f604','f0cb3da0289f41d7243661d2a593e3fc01232f530f91f5dbe8c6b89a06173bde'); +INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'c3d51a5f2df90c089844ba4de7d5541f6051490aa1389e5945a7bb91d49e3589','86ebe5be8b9443f411adcd49e7443a34941979c0c6bf40136a3b44193024abfc','4694107a10071532237d3862f12222e3b8f45af285ef4fd4020cf0b7d0118581'); +INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'a9dc31556d38b118eeb0bcbb3a374a0ed79adec4eb23e00c80c0599ba97c9a7a','5a729b250068fe7b175a540b66a30326344514e357023184540ef97bae5e16e7','85a9c4efedbc31faaf7fd528916b88b11595f638e74450ce072acdb3f167a7a2'); +INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'e72be5070d0a5853631d902d334e8b88eddf6e79616373311babc4a0a27dd3d8','1294e3d0871b0c2297d9980ed46bfa3563b33b202b426949dadeeba7075b4bc7','734ec9e1d765c8fbd6915f0fd8d5f5253b5b9c476e913d9c5e8c082ee5774209'); +INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'cb0962222af917dbac2a11465c22cd80770c0b3cdb8bdc0870c99a8116745c9e','d5431af170b331497d8967969820632880473d06dae0d06fa7ffc93a0cb90180','707c0ec4925bcd8fafe8f0a9cc46ec710a5b18265867b187104d025a6e3cc23c'); +INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'6ff899433f22546c41a15f20b4c66913c747931500fee10d58c4a17b9e2f0c88','b77c1d69b3ac7348e336cce9948f982efafa1cb56cbdde85fe9f49a73871ba3b','05fb427e00f3ddcc477e52b46e4fb6cc76152d71a1b72b2dda0a6ec8f2ffc470'); +INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'ec66a06cde401b66917c6d1d4e1ee8893405cfbf0474560d9997d6960c8af710','6d3d469ad1b72a67ee50d8a7c6c57069da3a0e2e9d12a23a30bbf4f2ccc64cb6','be36b72dce28a1122458562f2a20c3246d3edc9537b2bbc070cbecfe54ab35ad'); +INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'b2053109bff06dae1705fc32ab0712f38bf9d206fa3517fbf0a938d1b5f33bad','223e10a8e23e4435e635f1dda533a0662dff9f0e3fb86b72a22b2c191f731a80','9ac6e597f77bd5baa711b78fe55b7a8ed4611729ca80eac2b5fe4408a40c778c'); +INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'d7051de4d03fb31bfedf215b407b1edc12789c1f2748abb5a72257ad8f5113ce','9eb6f4683bebb675467829573cd2f7e3ab613d21398c5aef31ed389a40f3c48d','545902129a269d91b188e44f5974e464f6d0489d3265076816642c73e8eeedc7'); +INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'35c95a70193ded2f9ee18254a91ce5d4834bb162fc3cca85dd432339257539b8','88220e5f48660f8b9e339c3afb65ffbad83d632164f1df8e22af2ee6fc18826e','3d64f433de4e97ef1dbe2c2694133ac4b689ac091b72476208cf6f57e703be94'); +INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'8315de64ee1051c333687ba9fae6244287b85bcc1e3a4b67f3fe7d51b931378b','087de9b1715dfdac7372489fc615b597c9575c9520eb1ad5f7435a2641388621','f0b466e1c330040e27c10423de8a65078d9dad4fde81cd71c92cab1389a47be6'); +INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'c2d646bd3f54eec73cd9da6f5da4bc159d0c64e8fb9ad4095dfa58850e65c7b1','e5f36761a4755ebc133389b9bc01a085c585a24fa346c784123f3dd5a125ad27','59dce3750dba22c0aa61f03c678d6d79b7bf078065c69db866e28abdf60d2e3a'); +INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'619367fb7657e0fb4800acd385eb5593d085ce5cbfbfb098dafa98612d9fd445','e62992a5e4f80347f92c512e1bd47df4c2f4e9fa0c38b7ca73befd39fd181d54','32ee62c66f946494e40aaf1085080f5b5f5c8cfe3e2b282acd17c8b60e22c38d'); +INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'ba865dbc8263aaf153d7264dfc6a580bebe9391ca0551f15a1c822c6cbe2b8de','e62acd9368da6141ddf435bd919fe0e124bd77646207d69a2544790107ab88a5','7bb6d3f6ad6c7c94dd9e7c814465f5f4764e3e065196d3d8bc9b4ba64caa995f'); +INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'368e948cbf42de80aca51abe75d09ec78196924453719182ccc86419df5da2db','2c65dfdc0d371025c6d497e087b8548633238d6049242fa411383fcce72b096e','def0be1250feab13baf191358e2ea8bf810b51d0e5796a6472bca66e62ca4b8f'); +INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'9f7132c808936f580d4fb1dc5791541a5a3d23532d1093c20d434007f8dde54c','ca60850f73099aabc38d1521a94d611cc02f4539620a17488d1e9a445087104f','847c092da5c21e47884e3f06ee51ba4da7b5c8c1820b6c0c70d7eb194c3e6468'); +INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'074ea6f10a5290cff31f7b21483f7b2248723c8d1b5bc060c31219f66f37def7','21db77ad7cd241752184fa9fd61ab9cf670cd40105d7d9b887d8df62f25e5cfc','a5a29a6c76b763c34fc0f20dda31e3edc87d91984eddc329195e53dd72d0c43d'); +INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'a3ade2b2e5bc701996f511f3e85d596b60f882a3254fd975769c0f38b3b14cb3','9469f4c4b4f208f2a46569234006846d18ae108ca6a98600ab70bac1ef1ad633','1d56192ecc561b1903c4a4c8f0a0da31b1436efee943519bdf11a16d77b538e7'); +INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'3bf124a34825b5c487c94dd79b1ea4f25e657294966879f1c10b56b37a3d29b5','55de4927d0ba81d336f143b08224af9fe9a862bf0ed4d39fbe242e9c5946bcf4','a2c046f9d9cf573f99385ff8278c2f799e648710c312944dec6949b904e5ce2f'); +INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'e502eb7b282e0bd4940d8f75ef51d677a641f3d55304adcb015bc249c97892bf','3d879f96d783e70a75f71c2b44ae4c5601bc8f1192b828f1b35400b8c99aa0f2','ab87e5e611da59390427ad44b7307ee9105f58e4ef31600ea390a58cec857988'); +INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'d64b5eb04ddfb5600be40142b1fd27c308387a35942a6e8a6916407bbc1313b1','c859356c985f3c051d5b01424759e66e9ec7c2eac055eb9fc2b0ad7323253a6a','35e5466561f79acabc2fef6b228477aedd8aed6ae237b2866aee0eb5bfc09640'); +INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'e9c97dd7adb1b22d4ed0238607faeb2d14c090fbd7d685275ee802ab23b4b740','4cdafec839c7abdda11f10437d890c952b3416929ff6e715f44e8c57412437af','80cf4e1169db811f88eaeee4f99af2f2e02065fe57e5ef96cf955476bacd17f8'); +INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'2544ffced9af1aabd84ab51fb78c56c9beac03dcb286aebd4202938dfa0754ea','2fc6c250a775ac70976d371540df4a7af608ca1b106b7efb7bc5a820ff505bdb','fdd202abc8cebd4292441f89b8e992987c916a6f937a7f4ea5e34182007c1268'); +INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'4355d3ebb95187fec36b1847a4c3777d8e1d5541bd1d9ff8461b8ac5b9881261','d99b155e06fb50de6e7e6b646c641e3862d3d6df0ab9aec3e360fba0fcb54776','b5d9cd4731ba4aff56249320d3685cea9fd7bea36bb421343ca686f7d31774b8'); +INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'c7fcb5134bd8131c035d65b5eeef8a3cd214348822563232a992f3f703c6b0b9','826d7b750bb4ad8fabd67c825c81f840b7a7a264489a9263410a5cb204d3309f','92716bf6f743daa5e47b38db41e9ae3da709ed2ba6647ee11e8f9fae5638c483'); +INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'c41c280498ce05d6073fc6e89be2684dc68c345c1c43c00b9a3f9041954fce26','f96598e2169d42d81b91ba03e7403dbd25a61399290f358022a998e4375fe2b9','b68bc42d50db6a5449786fbbe8b35734fa6a68cea89ba894b824593f612bec58'); +INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'86c67fd234ca9d2406080018b2677386990fac477db8008c0092d40a398203ed','ae7fdf3e9388811e96d470070db9ac45b5b19754bb4ad424aade40fede3c9cf9','6d21bf4139cdbf7d3f04b4898894e236ae9f1874f78d1b92045ee9f84814c472'); +INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'3ae6272437eb0758a779d68785c41e119d1204dd5421c78e03b9d12eba64804b','aa9600ce32fd7c1d6e963a51648eaae043685d3369413785517172d1f94d551b','88e5b2e565df540585a8929e21b9e71808cde3efade9d6707830f2d0eadc7d70'); +INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'18f7552567b898f6c2cfe8c829903912445de5dbf05b56a13bf9b402a24fdc11','46ce886f050bf7a80355da9cb15b35f5d38809ef2ec1a25250f057b63f51cdfc','341eb2e142d949b00579bafe39d645329e6f5cedbc74a84cd4abf9a3ce437c3d'); +INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'85f2255f9256a5faf59ddec1c58b1d3bc12c91bc2c62ead61b48e1f94ea2888d','23a26edddf0c8662b055ed992c75c706221b59ce9a7aa45b757a3d5158772e8c','4d9632bd085c41718a78245225d04205be746c66755b69479827714b1e1a4000'); +INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'b799477db184351df5503f8d15d5461a0483ea35142c003b7e640429663ad943','163682e05a9a10f3e3240420c932a7f3f2172484de30dbcac0319ac23a4726f1','82ab554ab8d75ff186345df91323cde4aad2084813e5f68b74debb2b5cf6032b'); +INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'efa9cd46741b59e74263d6d348584f1a61e8ba32163c09fc3ff2e41a5431a483','a159868ce28207aa243e7ecc50f188e8e34e5ddb5d801b645b1c16a596e060ed','4a5456602368a44ca717ddcd25c2b54c733b101687bc15a0e7b7fa0b3b1f00e2'); +INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'f3159919f381d46a3e1341703e55192a02a36519e71fc2675285a3a14c4ee04d','52bca7ccb83bfe83d8693ebc4c5b1ce518b2ae472dfc81f2c2940dc2460eeeab','a794308d5c8f8a8cfd9b682b98a662fd5b485cb925705da14b3a8e9904547568'); +INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'961c79ea2b7dcc2d7489c423b568fb978631e71732d6b998bcc0657aa4d19194','1fa2eb6aa4c8b5efd093c6e484dddb85eabfa0de55edc929e04487ce65e73608','61b47ae0ab62a67ad9f2c962d4cbe70f97ebcff820a54f72a6001946af192870'); +INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'d674c39010fd4554efa487d97a3d9cae278ed9b4aff0ce57db33bd881beeb3e3','ddc2517e1efddbe56185e00d77333ef9f2f2ad6c59e042d65a8f4d8c2b323e5e','6d75b813b80b4fe4d04163f5f3946a05a0c6598656c99b8b1401ed0da3549103'); +INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'9ba70a032ae92672174421689c0845784f0cef7374e88b2f5258260191864bf1','3b1d5cd9cb8e7b753233ac0dac5e697226ae372bff3813852434d96996e78fac','3c490aa08c26230b5d1e9365322ae801b88faeae420abc396e44a56ce9428f94'); +INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'114a6ab930fbdf8531431620ed219db3756a634c5b99af6ce1ee66d527d277ff','becb4b0241accefb95aee137e58d406e15e87c28ed3f051938b4fc02e249b21c','2fdbdbe333c238fe3c0287cd2b7338c7a353090cd77200b9ea1f5e86649eefe0'); +INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'5356512c94ea2c77623d874a927aae8c3dce287a34dfd27a617abfa57142c7f3','6e06ce8a113de9e8b1a88516a512671aa2cdef60168a40d91742caa281417634','01f8971bed2a8db8fbe78987e58328e6974ea53627fa6cb09623df231faf0923'); +INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'0902ca0868560d05049c983bca3ab91cdd5eafc46ab0a948d702abcbc4010582','67a2fb81ebb42dc6781746a403d81b4e7603f82f02724074541d42380d7269fe','ef5c78abfa37020e7390cf5131462075fcc96644db1966e6c087d378422037b4'); +INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'978794628fc95756032cb7fb4e9d5ed286373d84fafbcfceec9af71d18c4c0be','ac68aa21454eb2a2ca973b5451523fc6d2a4df6906b9472891cf8e06087e130c','e646d0ec19247c22cecdd61acee916348c0e4f9b4acab5af3ec6b2a6167fd9bc'); +INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'ff16abeb1d35e0e422f165e206b0d69e0b9ff48b68fc6656c1af74801908b92d','720d553ed03860df12ab60af34cfec86b9d7ec80275f6d8815e3f61166e3af88','8d8d6f966b82b49ea8679f202bcf9393883e6ee3dbb1c350a907362e2b962366'); +INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'556ff900993e70cabefd05ddd5dbe3e8e10bb5c9ada7913b75d84af067004ed5','656a21084dc8f46455fd2a42ebbdb0efd5c879ccb16e9b1532a6ab5323debdb4','2024d238612af8400018c2b2428af5b8d83ae20f624c688bd984134e8be8a3ff'); +INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'15af3a616a2974aa70b7b58f88132051f335af299473db925b619fda8be1afc7','3f90b36b7ebc9a2daea1e498bb44100f12f35c9df04260448bd38b23375b16be','64a04fee17d4ee2710085ee8ee30305b902401973b7488929350a9774237bba9'); +INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'ed0ed3b480b38929a425c2b61c86582495764624e020cb86b3a95fc7d59c692c','67427731be09b73755cd460d142686c903b819b7b8af48297d460ab91fde3609','fd48b30995d370d5a3982b61f99b47a7187e01a1708f425aa9af803224a5cd98'); +INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'f012825d2d549910910ad6b7e4ac2373d095b53869f0793709684f0ff05bb108','c5e4ba3e2011e7fbf238285525a544de3cc0fe9360a3451392a4c03acd508690','01e6270dc66a290a1203a131b9e80d1c627bce38a8c0ef9f0d207615e64615cf'); +INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'90c08144277fe622573282349edaf9e59289b716b5b4e368d88ac25e67e788d1','5e4a8aee5f04d75d9ffcc85e8344c445b5facfc838f39a77b6b0d5acf6cd8213','af584636a3f7b5e8cb3ef1e2d7b45600f7072a44b271d1c6ca515923cf72264f'); +INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'c888ae590b64fa4514ed7f94ba785b12e881052185cc4702b598cf6e48cbb3ba','1cb780a12bb6040055fa694822a4f39c340a18a858f0b65a8b227a6fd6fb4f31','a8f95f56d115a514cec9802014c464f8d246749bde98f94d2fd975810c04ad05'); +INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'e68c9a569fda6f1e1e59502953c9735857a0ee158a76397722436466df24708e','2e175f240928edbbd5a5c6c5f3fbacd9516a36c7e99501703e9d1b19999b2029','6587206bd0ac6fe92be0d74033ca5a56d4a693ca2abff713295095bfc7c9c1f9'); +INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'9f6607682f4a6274c2a45895f849816aec83ff0820709ba781634b84518eb05d','cca92bb672e368c0c1e5b4674a48e150a870f56a67339cbd74926d541ae2a4e4','45b1b3a81da660335f976ee080e0bc2802eb5a97b03066f71348c5f4be02b58b'); +INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'49b10a5c390f603e7be0d405bf1fcae95fd15682ef2e41a3b2fcf713d271e541','12b8b50b634cb6843258f1c130df1cae60898c902d3e66ad00e1303fde4d8724','1cfb39ac881e61a2175f3ef8b9a7f9e564d70648d42b6d0a6d61d98fe5ba5b6c'); +INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'1d6cea34d6f7042ced3a5211da80de88fa77c900af5526f3033b715e4f68df17','40fa40a1a2c02ca514f309fe27268e9e493374bf3edfca8de66e3d46efa32ba6','9cee10070e1978f1a9cc3063926a261009e5b3969fe22beb9d2af8ff51588678'); +INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'0c43668fdc3d6cc6ec84fee99c68f0eff21650a618db35bc20e428550eae9b0c','4aa0becfc939793d7dccbb0b19881889a20c801e6c627be8ab8a2ffbd8cee8de','8846bb15a1479153d50d9339dfa66169148c0b6777298c8f5643ac884b0474d2'); +INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'cf03a34b29d3a8f8ea5fadb017426f2843c6ab2e785032b6dec70d7aba7bce4a','3317013c1e6464e0296f5aa7f50208ede42ff9051e4e3ce2da92584cb80a3079','be670dc8e9adf0a35c74d507336cae0f11d2eebd672463545b81b7014bffef9c'); +INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'e145dfc2c7f053a1ba4c8a41d042b40c0748eefcf9e56c5e906ad4b12f3653eb','b58f95d06b31f7bb5c6f6bd5c5c4460ef4e4ce0e1d154b8557a18cb73f36d432','d2a396fb7ce405fefcfa5e0939943204e244cd1187dc03fc0d9e313207f13079'); +INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'ebc34184623da16251782c82098c7fcfda42f95b155eadfacab2a53e3b34333e','e33ac70126559506de70ca420f152dcb639fd0e841d0d7259c0136d518fd4f39','30c64970998a9c2e489c24760a373cde7b211c27235398f5235e0f922d406acd'); +INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'db746a9e0ad8f37c14ef14180dd1bc562ae757a6d4d042a517bb8953f34c6958','9d52ca0b8859777bcbe84606017ec53961075699eff51b34b80e5a6ed33b137f','45ba8e59c78bcfaea921dccda7b1ac9586b88d13de51555929184ca64f6041e4'); +INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'cc71a63314b770e4e010bc7c66d8ab808451b6401e6df8558455a2bfc9bb4882','5122312265a8305639f6490bc51fb025626dbcd38c5735ce85cd652348f2e86e','836a4e9fef98470e7f52039eea794239995ea0966270883cd9d216e898afb1ce'); +INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'a5812c0f3a37b04d5105bca6b0c4819a41beeedf5b0f314f476ab55d6c31235d','764477c3a233cd407804695f42948d3017951e90b7474cfcc24ef81ee49fdad9','a49c602f4a65c38963a986c2336e4d87bd37729c5a32c76913135615859a1398'); +INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'14f065751896a2724251b6ca6d0297b344986980075fb72ad058ad0b5bedcd3c','866fceb74e8e97d663493f3546519b01f51e1a3cb25bde4b0f3c2e960d2eda85','0b243f24a6e72efa2f56b9b06229530ccbc9191507a4fdae7e26fb2bab736009'); +INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'a7dd17b4760fb65ac58be1b1653f7cb0e90574c47f70c61ff9f940ad15ad3658','9e0565827fcf295ae2149bfcf5e0db29237f447760832083baf94de145bdb531','47e578945a0b07b0a4f592efd5e9208d9f7d75e422687374fbe8ae9a63a108a7'); +INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'8068a6bcc5d1fc1a78562f0f3165423b45b4674e55f21c4c09948fb65ee632c0','03f84e0f0838204a53ce54e3cfecde00b2e5741ed08aab0c0d9ed99513ab4655','15a5a15921e6a2fe3d7e71512b6131a4e32f3b0b4bde50751eba622620797668'); +INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'af86ffad4b8dd68a0f18142935bbb18623cc5ce2e9e0c02f04c0e7a5dd974e17','9b3e1c7af0bb119e69813161c19aeac4dd5a594ece5f67f21ffb55b8edaa111f','bdee89131378f096c83c0337eebb637449ee74024ae297b6d1dacda21d3685d9'); +INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'36de48518d1446b33f2230c5eee7d18e040db543fe03dca001174f8382c209ee','33fccfbad1dd91d9102b82f11b7c97883bc5d5fdfd44584cca6c40fbd04ce2d8','df905b7f9e9a33f4b92882d02a4c8115be4fde0ba1f7d36ea62ccf1b1fa99922'); +INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'4374f567cbc460b73e74d6190db353c3ee86b92c3f99e392beae3caeb264eb5f','7544980dbaa8029ae36d883e3079bcc82f2d140072d4dd65cb3384510692ff45','2ad4acd384bb11d1801e36dfa460161393ce77702ca71f1f3711aecff118104c'); +INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'54fd95cdf7f9374d1687590f2860276afe67a265ddd9216e5b63fb06c5bd569e','1efba9ea6a8d2e7ee6ee2070b84b497feb66e3387e05c1e4f4989f086e5e02a2','d7b2d4e58c48a63910462ee86fa6eb6a969214815f29e2397122704d251cd1ac'); +INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'2b42e23b43d30f91fe7705a01f0c8ec86d6230815b587704bcc70b91b5ae87b8','a370830ef1758c18c88e6d9fcc5803fc15f1dbdad0f2d6a0773f902d86ad7c97','692fb6c34741aa77e0f05ad45e5ac1bf8783a2be82dbe5a287d7cfe837dee019'); +INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'577092728a4dc81cd9a06fcf6d2b058f0e4ce8bcb395819a704d6b4144f041dc','05ce95f07d03f4417a2fd15224418c8ba4ae196e9ec6f3192f5324c028363641','e8f07a9bddab6bffecb8d062e59ca165684743472de9f06cf66831e468364bcf'); +INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'d1ba60181f3061673c64ecd0b92abbc19b1a6e69a927dfefdfd8b8c74171ecd2','6c9e35feb56fb01c37fce04a1e6dc5f7747a6d26ee2f39ac584f11e8359dce71','6ecb25879d9fba5a35f604945134a2945e552ca1312a6f20d51b1a02dc36a382'); +INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'c0a9270d15793e68cfd1cf445315d737bed7052914da6def4f014c21f0c9e0c5','d59b48425061f0965947dd025cfa0fba8855e997f376572c585db72203b9a80a','f09d5ea78556e78757fd1e03c64f7f0169594a28e6f9fd3e2c880536ca2726fe'); +INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'74eaddecbf5ab6608c1e95c1c313c13f2af2b649512cc8c7016717d21e93f815','d3f32df02f0e7cd7c2163b47b3ff73d175046599ed626ab343647e1a04525e3c','201206a20dc036ebc764b7e784a7904997d7500f024b4778c80d3f717b55f6f0'); +INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'a759e3aac1b015e28b8b524106a74b943b215faac8d5079384ec7351b2239bde','f588a6cf255e710d9ee481d53f8bc0fc0e1567d58ee701f1b77f0848db881f5f','cca56381392f9013284527f3b0a34aba431b1bf898dfe7d79931a99588e7cc88'); +INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'71622e25e8497db6fa222e33c60ea582698e72ca5789a52c9252bf51191cadaa','9a2e169d5fa3721f9bb8852c93ca8ed5dfbcccef05cba99ed3f1c61c937f4366','0d2c37a240d837dddfdd8a1c061bdb40ed1afa91f805824d8c3e2da46c208816'); +INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'47e9d8fbcbafcee2b4c145ce651333ce49812533d13f7f9a0e9a448f51cfbacd','c2cd395566e0a7b16c76cc0ead2c2cc87a684d5a499c76b2370afffe4b408ad1','f31fa4e71235b71b5b06b9965cf80f9211ea86e7ff87bc6d592b9afee958d924'); +INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'e61148e7a8125f7225a6b6e1d77786f8b28b0b8a74e60fef3f75fa4de8f7d882','21fb4596655071cca486c2e6988ec980799a9827e2e5f169033a45d21b3c7a75','09e1c4fd20c95c7c016ee43176faebecad77bcc744ac0ab5f1b61bba6033f521'); +INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'20fb450589ddc6c904fbb61cca8588e85e865635c12402ce7ae72995ab884c14','feb3992f370b8465a732bc4d90691b99db691f44e1697ad2775a6df216d93b13','754c9a8353fa802d6d57d261bd944556923bdbe1311f4f234c909080261445c8'); +INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'9cea37d548308505f80dc438d5183bac6c6ca424ea4dd9c85d883b05d67cdc92','277205c28e54078d55ce1641fed64ff4b409b686fbe4aa3a018cead2f969c501','ed5ade79c1d0432a4c1b1818abe9ce7743dd91500bc8a9b858a969c692cbceeb'); +INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'e11bab5fba2d038086c65030b90ce1cbc988314d0c9846aa7ddac4fd357bd01a','ef3ac1de31e29795732b362218bd244945bea4183273512ff6974ecd0c0a7aef','607603c0a6e36e43c8ca2a868d35881286680febfab483648550b9ed08e5a2fb'); +INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'777873e7ebd0ec3052be65197ec0db8bd72e46d2053badb0f37be1f6e84ae0b3','3bec931f7207a5b03e5a7d390787cd737e598d04025a1514c7654ef34fd1aedc','1452e9b10898a67a99cb47a0f073c92533e8b489d0c4acca9b198c07ca95afe0'); +INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'85a5ea57af33dfddddbcbe1a1c87994efe5a21a645713aa164f19e19bfb23c64','4030ee911aec8ebfbbeecede9cfb977088fb591b20cf52d5340e5aa13e41c7f7','ecad22605d02b159734c305f3fbf4fed75a7291fc8594e77b3cf05e77b29cb52'); +INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'bdf3b6e7a14a3aa22d42a7d69f2f96b0993f1eef2952a7d74313c37e1b407523','255675a022762a349d44af6315173e05c685f351f2b3b770e0ec80e128969a4b','ba910a7a4f1e74e5bbcc0b67af454594a3c69a046554b6fd667d174a83cbfd24'); +INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'9b3ee688c5786ecc438ec9c843ba5f898fe1ab1a8bc3903ad7789aaf6b0c0bf0','7d658801ab6fbe73231469da5204c5e1c73d290b83449187ec5eec71b846616d','e4e6bcf7df1e2955185d1f4d45f45d485fd4b238f24d95ad55f29ec8f5654202'); +INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'25578ac389a77dbf9589b23c5470f3199016ac66a415540ae03efac29dfe7adc','1cb14bc9f998c85e670e2e291cde3a2debe9b4013840c0c060417f509c7210ea','5c9e958f008af59a21f1f1624232b0173e70eb6166441d973f184daba877571d'); +INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'bb9109ba299c99cb104ebf2ef6e75141c50264d701d27119525ab5d0a54c1a40','889afcda8b6e0848c7d43014beb0e181c78fa69d3aedec508f4bc0eb8a416029','0eb8de6947e367a174add5de220407847ea8359a9144865b1f72289292895da0'); +INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'cdb21362b3eb4fc10ba3c6bf3aba41bfc5bd0bf2475f742c1069cb4383be7b95','dec762d55ba88cb2c043f627b2a8b26c920cce9d4dc2746065c0bcf2795c2d99','9d122fd6faa6108bb6f5e4e7659c60b356205aa07e41863d56a1be3e21acb958'); +INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'b82568de09fe4ea06f3dca053dbcbcc61dbe5e44dd300a4301c995ba180f894d','625beebc3c34fa3276e022a37c79137c8f09af21454e8171cce7ab7a04453047','3d4c64f5c4f53b8f17dff43f65bfc548a3378abf7dadecc60586fbd6557aa39c'); +INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'513c4a041ee80ba72d1d8428605c682e3485fa45341460bc33fae6540dffb571','b7794e7c8dfe3947ab8d256b94af8bc43acb9ca11f696a81cf9ad98062372959','e2033ddaafcfaf6a8aeb2a21b589659fdae972db2f515e38a494ede938468963'); +INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'3e8ff43c8d671159355b2d40a995fb8f6d84f6216fa8326fa80ae39aa9d15d03','8117c5400c1cfdb97456cf3b79e8572aecf23c29d1c336d5543979d0e81cc158','a28a691bffba9521ae9111d315bf9dd5ce6d2c87366de86c5d70d975814a2613'); +INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'19d91de7be12136737d3f8990e7a4a793912c952e71e017d723d750118e849c6','1e2f99bf2c03b8c915bd23c94431002d3801a13caf40d9b42f22001c2faf305a','fef8f4c421942085c9f14edd5b81e47c78041878f152601035436600070c28e2'); +INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'be75df2e5aff3faaebfc0ce4ab5134790fa728f84500e6989739dddc058738de','7f692426eab57621527d12cc4a49aa85841de9856cd46ad6992a658ed5c15fb1','b80dca39adc801099e9785ae729f87b5b17df7750cf151ebf4385af3828ea31a'); +INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'9090b8a4a26ea7dff75658317ce2c6ab828b3b42684922e44debfd1bf8330b8d','c3b0869da7bd7abbda54895e6de81cffd2febe007e1f7085da8cc657512278e6','bd6c22a9ca884a5c38c62aa53d3ba45269cdad02263140fdb77ee53f11a2066e'); +INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'d48d30db433bcee44d87153fb3db17d37fbe3534f23eb16ac853b3420d86d80e','793627f8b7de24827faca4a19ce374f39c90b74e278b83a599cb637877bd6388','7de841b5d02aaeb78904070b77b1733a108b37eda3c756f5d529effafd81176a'); +INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'53c6f9247cd255c86a69c05c4463ab94f9a3277496c155398c38dc6f7121fe9b','7388dcdfb1f5a54a0d4a4d3e50d486b24a662cef04f054a582e2d5b0bcf3ca28','f30ed88d2d3951418caa10a7e93cb742b1d9a056509b95fe21d691a1e9c2f6ac'); +INSERT INTO blocks VALUES(310102,'11e25883fd0479b78ddb1953ef67e3c3d1ffc82bd1f9e918a75c2194f7137f99',310102000,NULL,NULL,'b225c48fb4c40b2e0695991251f6d69217df6e00c01613e0a20f6a3e34f50d5b','7d553f87ef9f2beea74631e2e6ec107522b9f4756f041e2ee40fa3946909b3dd','2d2074603e659fd4128988875320605001c19b0c8466a1f1ec237516471d9be6'); +INSERT INTO blocks VALUES(310103,'559a208afea6dd27b8bfeb031f1bd8f57182dcab6cf55c4089a6c49fb4744f17',310103000,NULL,NULL,'fc2a8ce8efc122e5cbd631998e611dc8707cfe0b8d3f6a531fe5bcc21c17feae','ece7991721b8e94950e2a9f41b9285b34be716340a7621b1c1528f8065e9ac28','5b65e62fb0e170f3b15fe829a336632b5d867bcc8795d38c2c982173dee79693'); +INSERT INTO blocks VALUES(310104,'55b82e631b61d22a8524981ff3b5e3ab4ad7b732b7d1a06191064334b8f2dfd2',310104000,NULL,NULL,'b1a7115902d371d13889008320e52473cd5b34591bd657e372c0048df020012e','66dacde33bddb633552c94d9107669297fe26ccdcf482f9098f1e6c05f3d01e6','d4daacd068f455ac76d9243468bbeb20881da53e521805bb9e9b274902bc965e'); +INSERT INTO blocks VALUES(310105,'1d72cdf6c4a02a5f973e6eaa53c28e9e13014b4f5bb13f91621a911b27fe936a',310105000,NULL,NULL,'b5fcda12415e713fc81278b95515fe86ecc6beb5810e4f80eb9645f09870dab0','656d27bdbf841c33dd3c11253159dc5d8a6d7885db3174f4f9c6a8382d6a7209','bd2d32c920db3767e9ea479f8d14c054d5769968dc8c95da8ddc9824cdab2c1f'); +INSERT INTO blocks VALUES(310106,'9d39cbe8c8a5357fc56e5c2f95bf132382ddad14cbc8abd54e549d58248140ff',310106000,NULL,NULL,'f3c98c954cf939951d8b24a257bc6b1bc152a6a0bcf6b580ac281c26bbf16499','6138a4e92289d72dab6e43906e545dcc3d1475102b7f33195118de74a53fe576','59e2874dcd056cda93c85f5d2d00bf53657296d1ddbef2d7e0e7f16295f46833'); +INSERT INTO blocks VALUES(310107,'51cc04005e49fa49e661946a0e147240b0e5aac174252c96481ab7ddd5487435',310107000,NULL,NULL,'a550df26b8dee075bee82fc59c44ce5cbf65fe9df10c60f3f3009faa2791c783','b30d22c6d7e8bf574e3b3e11d08bcb73c5853ba348e8688a25670a861d3f4e3a','26149306734670b4fcfc729642ebcb1e8db6aaaac9cab1b28ba0d002ab31116f'); +INSERT INTO blocks VALUES(310108,'8f2d3861aa42f8e75dc14a23d6046bd89feef0d81996b6e1adc2a2828fbc8b34',310108000,NULL,NULL,'e1d8c345c74760010223a823895471d3ad6a2db5c6a70b13850d5cd977414518','d03bdcdbb4980ea415ab73c8e91a7fca7099c8c176d6bb4c2fdf72b6873175ae','ac57a5041fe09eb41939c43a8a3b1e944e756218df4cf6f611f5bb7267e725ab'); +INSERT INTO blocks VALUES(310109,'d23aaaae55e6a912eaaa8d20fe2a9ad4819fe9dc1ed58977265af58fad89d8f9',310109000,NULL,NULL,'8fb63d8460a222163d15eab76a61e383ffa251a175c16f209648d6782c304059','cff81539539169771000a550581dbdf4d4d1fdabecfb9032342269ff5f100b61','86071db771e95b616bd09e2c9b5a5a3251e75161a8d10efadd117a1aaa64ec1d'); +INSERT INTO blocks VALUES(310110,'cecc8e4791bd3081995bd9fd67acb6b97415facfd2b68f926a70b22d9a258382',310110000,NULL,NULL,'250f7b5c6f00bf06c9cd4de8dea0b8166e2decf093910ea32eabd615b910e7e6','d6853c803a38efdd5190401e94244333cb4f46752a2868d4a03e6d7d6c8c2bad','2c217041187757fc22b512e616c6714edcdb8c6256bb9cd0c373e918aaebe948'); +INSERT INTO blocks VALUES(310111,'fde71b9756d5ba0b6d8b230ee885af01f9c4461a55dbde8678279166a21b20ae',310111000,NULL,NULL,'0c3c3d099bf08803f67c2a77d0d67779674d1063cc72d8794b8fe62a55049d75','9cab90baa72446a36a7c176e82eed32ce968f96b0f29067b240a10a71ed95808','c46a0de238e2b0daed74ac105f2f793f999dbca99fbb7aa8a94f0e85feb6e1c1'); +INSERT INTO blocks VALUES(310112,'5b06f69bfdde1083785cf68ebc2211b464839033c30a099d3227b490bf3ab251',310112000,NULL,NULL,'557fdd1240793f8607a2b4c638ce800d5260c2adb294aac95d6c5eab7e98c3a9','4fc0df4832258d430e645f1950407e19e72ea27d28b8ae1851333e8e8718086b','96770a57c6034478695d990aff7a6caaeeebd3a32c0430f3a00c6b710fc448ed'); +INSERT INTO blocks VALUES(310113,'63914cf376d3076b697b9234810dfc084ed5a885d5cd188dd5462560da25d5e7',310113000,NULL,NULL,'4ecad4a5c8e9b54101c4a037d6c86a7eb36d3cf0503e60a1bf13c5a4196c5989','baf1f86b3145fd8dc33aa2fcb2e882cf69ffadee81e8412ed2092c634934709c','7f77a07e55717af872f061f883b593aa96b031f014bfc58f2a4736d5161d9b00'); +INSERT INTO blocks VALUES(310114,'24fc2dded4f811eff58b32cda85d90fb5773e81b9267e9a03c359bc730d82283',310114000,NULL,NULL,'00380ec3118a5e8f9cab403d10870dd5bc339421297fcb6196a3112d70541ecd','22e3851c91f780c0152549b24228d0dab3542c2632b633995c0d8dcfd8e26601','53092a88f07953b0ac5132ff984e0bbb873cee4214db75d511c804b1e9c62f12'); +INSERT INTO blocks VALUES(310115,'a632d67ff5f832fe9c3c675f855f08a4969c6d78c0211e71b2a24fe04be5656a',310115000,NULL,NULL,'0acd3a07c5df54e883ff9871852c961b00771d3f4afccb3b1941d0b1c7b300cc','cf921f50b98df4ec37f2a9803315a798198507adcbfd8fd54e6a9bc539cc8f41','6c46d55d7b0e144200bbbdae7c274cbf3386673e453ccf56ede5a4bfbb34845a'); +INSERT INTO blocks VALUES(310116,'8495ba36b331473c4f3529681a118a4cc4fa4d51cd9b8dccb1f13e5ef841dd84',310116000,NULL,NULL,'6c6845d3be70cbe9a71c33227983f695c96877aac6d3a8d6a6839760b4691d25','a7e01a910cc919588be3b0c19c4bb7c36499b0a9b0347834d40fbb54fdf05fb6','89f29fa58084eadd6ac82a2fd471096989453db292e27dbb4feae4ca1032fba2'); +INSERT INTO blocks VALUES(310117,'978a3eac44917b82d009332797e2b6fe64c7ce313c0f15bfd9b7bb68e4f35a71',310117000,NULL,NULL,'0465a90ff545d58e69c07c204160360bcc6fba5cc60fb81d7e6e389d9ff8133e','1100b7084683079d36f9ec6e4cb1ec457ae4c45941cdbaa0f4d53bc458e2fa9f','17ed9214bf69b1b32638dfb9111b6fb7f9bec55ad6476055c46b263fd675cdc6'); +INSERT INTO blocks VALUES(310118,'02487d8bd4dadabd06a44fdeb67616e6830c3556ec10faad40a42416039f4723',310118000,NULL,NULL,'011ed3df8ae72a02b686e98aa8db07c973e1e12c2ac09891ba90d783ae63161f','7ed056a59c2b15a2d082f75c8728ee1e7f9b0eea6cb56b37f41319b115e39771','b9c554c3ae28aa5a5d8742671e9353e4947a308913f4aa8e3c99c8456cc92ac0'); +INSERT INTO blocks VALUES(310119,'6d6be3478c874c27f5d354c9375884089511b1aaaa3cc3421759d8e3aaeb5481',310119000,NULL,NULL,'a6620b1b6a5b1f54fe6a8076fc35f0f3ce15315e9f549f5ff3fa0f5b6094919f','1312871691c685ced39676d4d4bd8825d2109587d1ec36f2dadc50f68b4d9cca','8ec04f30058ec1dc0eb31d80693c2b7cae7d7638fa42079d2e3a0503db000465'); +INSERT INTO blocks VALUES(310120,'2bba7fd459ea76fe54d6d7faf437c31af8253438d5685e803c71484c53887deb',310120000,NULL,NULL,'e38e2aa0bf8831b90e69b40c78d4b7d41bc564527451b5f9b332bb0beb54c923','1901f4d80a526969a544b68b1a695f07aa078ad719b8803c0b7543fcb4a974d6','ab9787690f2c965a79e81f9814c770ff65a960a824cce8baf4325889d11527f5'); +INSERT INTO blocks VALUES(310121,'9b3ea991d6c2fe58906bdc75ba6a2095dcb7f00cfdd6108ac75c938f93c94ee7',310121000,NULL,NULL,'5b988c8ad133bb5ff5ac1ee4ad0a6a4fd431247db373e43c9be2a020520f438b','9921b651b8ca004602b16f95d76b2ea76f03456d9a978abb02bb340f360df7a7','7e95086dddf64fb5d60506e0fd39bc5e4d88548c87304299c9266f98fdda04fc'); +INSERT INTO blocks VALUES(310122,'d31b927c46e8f9ba2ccfb02f11a72179e08474bdd1b60dd3dcfd2e91a9ea2932',310122000,NULL,NULL,'70ddab8f1d6283ce5a054650dbcd02d7ad4ca9c35de7bed920c2f266bc092070','a45cd1eea6626efa3af3dcd3c89782c50cc3b683c1b22249dc67d288e56aeb17','e11eceaf1ff12dfb0ddc3d74e451302b38d1a7d49612ca73442ccf0f4f43a4a3'); +INSERT INTO blocks VALUES(310123,'be6d35019a923fcef1125a27387d27237755c136f4926c5eddbf150402ea2bbd',310123000,NULL,NULL,'3670feebcf979edce175ad5b296a4c88fd7fc6bdc251dda84d487b1b092e41dd','78c648296fcc7856757b990a92cf9512c61d180b08d451b63ed4e796d051d338','9f4ecff92dd613415377b0850becd1235c5a3607ad4c7ec2e8655524fcff3520'); +INSERT INTO blocks VALUES(310124,'0984b4a908f1a7dac9dcd94da1ee451e367cc6f3216ee8cdee15eae5d0700810',310124000,NULL,NULL,'9883fff318e7cf9021fb4cc39261840f682e8adabb934549dbae2a10d2a71de3','c58aaf910fe01fd9ba6a892ea421c0933f4cebec80c6d2d556accc81102428d3','216d0c14bcd2d2f145791d25642d4446377dd74f78247394886eb1ab8c8a768b'); +INSERT INTO blocks VALUES(310125,'cc28d39365904b2f91276d09fae040adb1bbbfd4d37d8c329fced276dc52c6a6',310125000,NULL,NULL,'1840685242f9090297d4b432e305e4a093f90faa0b673953b648fbed948f31b6','3d1e4c3a02456d7f79402a89f6a39dcb235fde15b275a762197b70e643d29e25','1cedea4c8e36bbcf03e7aa084e83b99204be9d8c36d0078d6345123017edd2d6'); +INSERT INTO blocks VALUES(310126,'c9d6c2bd3eeb87f3f1033a13de8255a56445341c920a6a0ee2fb030877106797',310126000,NULL,NULL,'1a83f417c18439cd3c6269626c44b480317290f0c27a9b9f883a01653de69272','7cde633cf5f7bc1176a3faa6ad03a449d3fb0d21dcce5885d2a37b81448a2ca5','60c4f193ede19724d3120788707a2c191a7c3dc86e4c0d1e5c002a4d458682ef'); +INSERT INTO blocks VALUES(310127,'c952f369e2b3317725b4b73ba1922b84af881bd59054be94406a5d9bbb106904',310127000,NULL,NULL,'094c53dfd00b5004d074987dba90a6c9c47841d01041d0aeb61923c48315d1bb','0ac0ddcc5c45d4d709d9070814832bfa2339eaf5edbed98232cda4b1731e5478','1881f5884b5c6408e3b5307544488cd8ce73e8c3d75e1586cfd0db6b914e06ae'); +INSERT INTO blocks VALUES(310128,'990b0d3575caf5909286b9701ece586338067fbd35357fec7d6a54c6a6120079',310128000,NULL,NULL,'28ad1365daaadc866e79b6b1a555fa31bd804a85827d958cebb9d29511f78e19','aa9a25819899fc8948c4906673cfc8128c0a98417db8fe659098d28ca12e3786','953272a929f5b359c3c93ee1efa123e6a9c8b8729c86b9a3a43caf053195c4ba'); +INSERT INTO blocks VALUES(310129,'fa8a7d674a9a3e4b40053cf3b819385a71831eec2f119a0f0640c6870ca1dddc',310129000,NULL,NULL,'61587f9b5d05f8f553f0a4f580f38a140edcf7d9facb13c542865f5ec586a32c','ca3752868d963f0c165166928139cb078aefd0ebcbd9ab8f182c631ff941a56b','faa2dfb989b405d295e3fccf27ff77a4220afa3781fd2c23896ed7c4b3357a8f'); +INSERT INTO blocks VALUES(310130,'d3046e8e8ab77a67bf0629a3bab0bea4975631d52099d2ddc9c9fa0860522721',310130000,NULL,NULL,'1ee8c39657890ac946e2aac5409147cdbf1b0004db1f00d997cf45452596f781','bb38c9be1ef6ce22f1f14319cb3e1385d70fc63f7d0b2d80789c9af018baaa71','deb9b49fe7438af13edbe97444ef4b4768b4c6f5e0b97cc43debabcd52625e0b'); +INSERT INTO blocks VALUES(310131,'d6b4357496bc2c42b58a7d1260a3615bfdb86e2ce68cd20914ef3dd3c0cdd34d',310131000,NULL,NULL,'aee45272e68725a2746582f1847582eb9808289d3deca144f8c6cb43bc4f42e6','69fba2b86abed1e740d45d33ec1bed7d2bf7de0f3bd9633959bfe77a21dd7aeb','76600100810eed8a047c7a2e97576817c8dc4f821949191c26ce8b7c0f481beb'); +INSERT INTO blocks VALUES(310132,'1b95a691bf4abf92f0dde901e1152cc5bd87a792d4b42613655e4046a57ab818',310132000,NULL,NULL,'a3fe51c1d168ed726a78b72db61175f2abb07ea6c614b2886f3054cdd1a858fe','352b00e4db389d411377c2302ecf272f97268e953c30d0976a5d12bffc5a17f7','4c27d80858729a24a9e21da3378e8fcc88ac8c4ddae8bab7d2e7301232371f73'); +INSERT INTO blocks VALUES(310133,'1029c14051faabf90641371a82f9e2352eaa3d6b1da66737fcf447568ca4ec51',310133000,NULL,NULL,'626743e51b462163f23f22079d672379def21382fd88f9155ddd453ca3d633ef','1a7a1af397c6619b629eba7fdef0f0ea2d737e673d182fe985421dee61d0c63a','9f3675cedad7bb474d33f82146a590244c1149f66fe5200a0532deba0fe72026'); +INSERT INTO blocks VALUES(310134,'1748478069b32162affa59105257d81ef9d78aee27c626e7b24d11beb2831398',310134000,NULL,NULL,'4b6e3202cae46fa80222e3ddec001213062ab76b8848eaaf4ab73f44bd84ac55','855a47de54b979a3d958a921c2679825084193b9f1eb0fa56393e0186fb1b440','8305a8e9b796848312cd5cf5739859d7bda6599f13b5471c265bcf8610537fa2'); +INSERT INTO blocks VALUES(310135,'d128d3469b1a5f8fb43e64b40f8a394945d1eb2f19ccbac2603f7044a4097e4f',310135000,NULL,NULL,'e32784cedeadac39bb292da2c5eaffc983f416e0bf387978691e4c0fa5b1715a','80e68a8a303975543781e760be8d8b151206fb0335d3e0f5c2821d3e482b0ef0','0568e947fe1d692676b4a9ebab7ff41c76903d83a10591d09e1c29ea559c80cd'); +INSERT INTO blocks VALUES(310136,'6ec490aaffe2c222a9d6876a18d1c3d385c742ff4c12d1334613a54042a543a5',310136000,NULL,NULL,'93c67fdabd991708d1e35dabbdf7acb4e928763eeb817b32a79cd0bdb414fd2a','5fd1f9311646bed047ec4ac1d5aa5c74d68d26ddf6bdec14f2f53f4cb9c1f6b1','3110f6f1c903a625ab6383bef2ef535c109d86d9ca9eda4a80785f2435d05a13'); +INSERT INTO blocks VALUES(310137,'7b44f07e233498303a57e5350f366b767809f1a3426d57b1b754dc16aba76900',310137000,NULL,NULL,'8a43d01155ba47b8b1311c41d5a57112198857701c2970d0fd373da04ef4e585','d1f1a4a5fb78621aa1be58d32795feef8ac82572c34a694bf6b0b8c3c73ba7d6','32828e7e0363c88c6abe3bd3b82a951dca97a8dd2bc6165a718ef87af66da19e'); +INSERT INTO blocks VALUES(310138,'d2d658ccbf9baa89c32659e8b6c25b640af4b9b2f28f9d40baae840206402ab5',310138000,NULL,NULL,'4acf0244f3188f60152acc8ca30dcaeadf12e6669b15377c81b7e6dc3c8892b6','645be1bed53d63c268cd21d99a914aa4268b5a357dafa57f706075a66e42f948','0188f9ba3bc6d558aa86c48cc8127a84c52b0c7ab306603d4fa3a990ada3a38d'); +INSERT INTO blocks VALUES(310139,'b2c6fb61f2ae0b9d75d18fce4c52a53b1d24772b1ad66c51ca51090210527d46',310139000,NULL,NULL,'2d77bdd47ed1b3be1c2edf41473bd5eb707d06dab33717b01c4a227f9855d73d','c1e0ab9fe21f807be3431a5d28c048b7f5c49ee5cfba7b9a0a837d1fa5c90f4c','f918311e1d9787451e129eb3d542d035333d7723c27b2a8cc5b47eaeae40895e'); +INSERT INTO blocks VALUES(310140,'edddddea90e07a466298219fd7f5a88975f1213289f7c434ed47152af6b68ebb',310140000,NULL,NULL,'277c0c6dd1c505dc6f9a222c737296396569d8e007c4b9a42582f108e90fa624','ab9a8224e0e3f8f728b56fd3ff40d960d9d336b2743932053b2419423223f2ac','b4679f5296eac6aa74e9dd021819eb35884e47dfe5a888232c4a3a77fcca852c'); +INSERT INTO blocks VALUES(310141,'b5b71d2a271bd638561c56f4ffbe94d6086debaaa86bfeb02ef0d71339310709',310141000,NULL,NULL,'f5d0edff3f22b2e025c884b7c738abe641bca9110a6b9a7b90de179fd6e5d2dc','d272db9ecd97edb037736fe46ab9585397f38a6d1c1d9455e64b8439811ebe4f','bd8f586ea70895e30e5f4f12b4ec271bf7848abd8fc18b6ec9060b059cfd07c6'); +INSERT INTO blocks VALUES(310142,'a98ae174c41ab8fc575d9c8d53d8e02d8e446b8c6c0d98a20ff234eba082b143',310142000,NULL,NULL,'a9f00ec826a30e66820ab2920cf9573244a24dacd63d48c080b9e80b1c5e05b7','0c2ddacd61856ee0743eca9125326981ab9f5711982f53874a0f8153089a8d97','07978ef8ccd9174d13a5d651ddbb1b6f7ffade20255c401413b0343c9bcda811'); +INSERT INTO blocks VALUES(310143,'8ba2f7feb302a5f9ec3e8c7fc718b02379df4698f6387d00858005b8f01e062f',310143000,NULL,NULL,'b5765899f770fdb6cf1120535d85826c6b0ae44b16b8d5a619c5cd12c98783ea','39ef998b6c6130f79df8dcb5abff84c18a485915f1088b36a10de30da8c6f9c6','d7df67852428167831b94bc4e109f5cbe4e272569eddff0c565769f6082289f8'); +INSERT INTO blocks VALUES(310144,'879ffa05ae6b24b236591c1f1537909179ed1245a27c5fdadd2218ab2193cdb9',310144000,NULL,NULL,'1a80f48136e5938b33f817a7cc1cb60aaf6d628b7811abd43e38cc807a18072a','0b547c8db7446cd3f26dd0d8b88d533c1361fa5dfae6127b85e87095b42ab66b','69539f93daf6c77ef317753c0804a8042300865732bdcafd4818a19e1786bfa9'); +INSERT INTO blocks VALUES(310145,'175449ef0aa4580593ad4a7d0c5a9b117e1549ea772af00caa4ccdc9b1bf7a6e',310145000,NULL,NULL,'fce2f084c1776fcb36b3ae3e0c952893934e24672ffa0d3dac72bb1278af8264','bcef3d9f5eb82fb2198d268e442edfca029d5aa3ccff5e5306f0a1a8cf43b30c','652acebede859ca14429728f00dd92c0546716549286ff925c82c8d742edfcd3'); +INSERT INTO blocks VALUES(310146,'e954ab6a110455d745503f7cc8df9d92c1a800fafdd151e7b1912830a9cb7184',310146000,NULL,NULL,'9a98eb971580a0a69fceafc5fd41f398f1908b626c47df57965d1863e9a24b84','036b1784841e65e5905b012f2b74c70e1d9c33b769603c01387d13e693343411','32cc09afe9d3e4db38ae621e707e30a3d7b18c5579fdacb8ea5e3196ba9c239c'); +INSERT INTO blocks VALUES(310147,'7650c95eba7bf1cad81575ed12f32a8cc36281a6f41bef13afe1dfc1b03a7e83',310147000,NULL,NULL,'336a89d3d137810d3220d2de432f72e3b3ccd2ada2b746da3859c77dbb89d6a3','184e1861a82afa97634e0ad72cff532220a37d75f8eb5e1265039188124f6ad6','e5f5286854e07b7550097f67bb12af63ec6ead6e09d228186e8b042f709fce96'); +INSERT INTO blocks VALUES(310148,'77c29785877724be924f965215eb50ffe916e3b6b3a2beaea3e3ae4796545a7e',310148000,NULL,NULL,'f904794337dd67d356981d2623b8c3d1d78ba584cd98a8c1db939951d3102612','c75b4218153bfdf3baf44f22f99523f7c54d957994ee838c05c08dd52d98c06f','c96a7268499a4bc9f3f3aa3d0c59eb03d838b56801dd3b1df97e1027e200f097'); +INSERT INTO blocks VALUES(310149,'526b3c4a74c2663fc04ed5234c86974bffddb7235c8736d76860778c30207b3c',310149000,NULL,NULL,'c2972fbd048790f54d9ecef4e18aedec8ae7aa28227d1d43bd19cd71b4feff85','8dac7e6494cc67fc5c186e74b08d9fc8bc92cf71af9b0e1d919c48e9fecf7660','2d8d271c4ea21ed701ea5a794ee48ec590ca928773dd53ef2078d7a0c2286d5d'); +INSERT INTO blocks VALUES(310150,'cdd141f7463967dbeb78bf69dc1cd8e12489f58c4ea0a5dc9c5c01ec4fcea333',310150000,NULL,NULL,'88b999e4ae34386b826b0f3b315953b5eeda8d9ef496af051498bfce6d8737fc','db25206ba3a052c622c6a5063359308d04fc2a031d6509447d838cf96a0632d1','acb9afeb0944b74399f89a491ba67f9ca99530017d56ae837af725feb5205316'); +INSERT INTO blocks VALUES(310151,'a0f31cc6e12ec86e65e999e806ab3bfa18f4f1084e4aeb4fbd699b4fe284b330',310151000,NULL,NULL,'b7c176a2eff86655f8b0b71cc8bd3bab3a92ba203d4ccd911d63f3d2ce7fdc25','c6868100e51f390d57b2da8324915c9751aa3882b6e102055fcfe229d1abfc85','911af39c6b284cceb25921658e8bf336ba2b887c03d2b31c6d6c3a454bd10fa2'); +INSERT INTO blocks VALUES(310152,'89c8cc3a0938c63a35e89d039aa84318a0fc4e13afac6beb849ac37140132c67',310152000,NULL,NULL,'3f9471c393bc2bf144b17a5febea88c42982ae746fd700a5903c0e6e541e2b09','ff691488593add72ffd8fb9c8eab2b2c6f92dc2082615b3829f4b84fc8a81f88','c770d1c8d99a801235ebd10335deb8d679ea8273cc78872c118a74bc0f7c335f'); +INSERT INTO blocks VALUES(310153,'d1121dfa68f4a1de4f97c123d2d2a41a102971a44b34927a78cd539ad8dca482',310153000,NULL,NULL,'c6bc81e7b7e6758bbbfe10fa0e688b09e679fb74a18134639e172c18c6e017a7','6c303c21dd9de15f2a265d88e04a2c110f32718da29a06294ebafe9ed91d4441','806b546efd0cd0b4e43eb1b9eee4e732975e2b6ea2964faa74b8ec005ba191cb'); +INSERT INTO blocks VALUES(310154,'ba982ea2e99d3bc5f574897c85485f89430ae38cf4ab49b7716ed466afa506d6',310154000,NULL,NULL,'b3e07f9de85ab67e88042b1bb52302c6eb16b7ff45d5be6a49700f115ed396d4','b21fe34642b2c9ff09e65be86103f1c3390a01eb51b4d8b98456558639ef6e1f','4afd07cabeaa2e1c29c586e17a996959055a74402b1a01284d9f1b632ee1a590'); +INSERT INTO blocks VALUES(310155,'cefb3b87c7b75a0eb8f062a0cde8e1073774ae035d176e9769fc87071c12d137',310155000,NULL,NULL,'27014841a468e23bcb70c718919745eadcded4310031a7be90a4732c96509404','0e5f0bfae3a6ced9c6498cbe95b8bcb56c76530830baa61345b8072aa6e28ff3','8671650b11d7fdc4a904c10815ba74a72c080aead0b34d61c0c044b32bdbef19'); +INSERT INTO blocks VALUES(310156,'6e3811e65cb02434f9fde0445a7a2b03fe796041458737d0afcc52208f988a83',310156000,NULL,NULL,'5597aaadb8cc75848219f9fde3f5d76bb5592689c72068db59922732e89eef9d','ff3319c50ddd9bbd558542bdde3d612a475b543d6a34ea76738d929b5e05a380','a34d163431c88bc87968e2a513a285a1aae75699c43d37096b97d2f30373eb63'); +INSERT INTO blocks VALUES(310157,'51dd192502fe797c55287b04c403cc63c087020a01c974a565dd4038db82f94a',310157000,NULL,NULL,'cc1ae27fef286424e40204f6b575e9e079e1f7a5ccf6cc356729a7c4a7f83eb8','9b4884eaca300843017c2732aa8d09815eee4701cff996cc8b6ca6d62af4055d','88db920e2c33bc87de1bb3fe606e6add1ecdee11ba5234c45262e1f5deeeffb2'); +INSERT INTO blocks VALUES(310158,'749395af0c3221b8652d31b4c4410c19b10404d941c7e78d765b865f853559d2',310158000,NULL,NULL,'6d80d98e778b30c124b0255b3e72620f432245d0f841f6bd62a0fcff44843bf0','03a33d54ece86ab81f4f6e1cb337b07b6fc105a580a4ff82496885c7671939a4','fe497cab88f1061d61c756236db13b8ca69dd4ade232bd90397894b08158c859'); +INSERT INTO blocks VALUES(310159,'fc0e9f7b6ae99080bc41625588cef73b59c8a9f7a21d7f9f1bf96192ba631c12',310159000,NULL,NULL,'d8ab8bb14092afea6cc675d2f50891318e3169bf9dbe2d07e80c4db95f0f2033','c292a08eda8cb807f0c11947fc08c748353bf545596d8c6c03a4a734d25461a6','7d7c8ed0a00d6fb785e18e9fad561f145aa03a89c509b8608b2c2ca9b3cd4627'); +INSERT INTO blocks VALUES(310160,'163a82beeba44b4cb83a31764047880455a94a03e859dc050da782ed89c5fa8b',310160000,NULL,NULL,'2d76a042d062b73b7dd956d5cff0ee397f068c04eae6cf5b9522d3d55e88cee9','df1e1e18b65c4322284ab36204d9f4397c0dade89bf25486c8b84f6358e0f18e','6239fa9312d257e0bc9960efd8fecfc88f02dd80b25ca08b2780c559e3648512'); +INSERT INTO blocks VALUES(310161,'609c983d412a23c693e666abdea3f672e256674bf9ee55df89b5d9777c9264d8',310161000,NULL,NULL,'beb3496742415027bcc0d59f3385809523c8783cd91a5670f2fb6fec3230e980','e61374e297180716eee972376d16b85266342dfcee4f383ba9061360f7c0a425','172c92293c43feaf5d1cc4559dea632d6def54518cce55d85cc6642be8071bc2'); +INSERT INTO blocks VALUES(310162,'043e9645e019f0b6a019d54c5fef5eebee8ce2da1273a21283c517da126fc804',310162000,NULL,NULL,'066a2b93df863300741145cd6a4f1a9ea616bc787861cb8ab809f59d47a6fa1f','bc115f6ddeebabd3e0ea592604ff679267b755376e509c4760cfa394e86498df','6072e0832511ec238ac8fbd30d3c8a8e080352b49d253a4109e1172ddc286e0e'); +INSERT INTO blocks VALUES(310163,'959e0a858a81922d2edf84d1fbb49d7c7e897a8f49f70bd5b066744b77836353',310163000,NULL,NULL,'460c271269ccdd8775925b511705207baed8fc212caa7e74fc08a80be600a38a','d16b6243e4c0718a2adca941956564325985750a9a0833aaa35635335cb504ea','108a8fa0662b7c76867513b2e089efa1e9db3c20e41610babdd86918649ce111'); +INSERT INTO blocks VALUES(310164,'781b7188be61c98d864d75954cf412b2a181364cc1046de45266ccc8cdb730e2',310164000,NULL,NULL,'19a7948cd1bc4a89a427d48bb01330dadff848e2b32ec8b8abe342872850b268','54068fbe0e385c8ae2df5cb2c601397e15c019c732e37ed484573f07106741e3','d062dc72c65b8062b74fa58fcebc5949f07e4886713297e60c5c4b882ea3a5c4'); +INSERT INTO blocks VALUES(310165,'a75081e4143fa95d4aa29618fea17fc3fabd85e84059cc45c96a73473fc32599',310165000,NULL,NULL,'97f0a48a26daf011a8c7b22bb772228a0c8a920eccd011e713956100c9fbdf33','0783c9e3d99f4f95b64b38b92c4e8b7d257f325d10cd83bc86d684378b9ebbd6','4efc87fecc92f6ae3780e614ee059e52a6070f58b6a88aafbf5f6e105ec1cc00'); +INSERT INTO blocks VALUES(310166,'a440d426adaa83fa9bb7e3d4a04b4fa06e896fc2813f5966941f1ad1f28cfb41',310166000,NULL,NULL,'edbd00e1229c673f4f15b3ac7bbe020f54b5f3a61b1d158658471076a55c77b0','683f4ab00ee1ff495bf452c511c1582100191ef7b575139b9d2f102c852018c8','6595e10be7798b55c119a6f9c385d6c1dfd58702cf49df51cdd748cc32c70083'); +INSERT INTO blocks VALUES(310167,'ab4293dbea81fedacca1a0d5230fe85a230afc9490d895aa6963acc216125f66',310167000,NULL,NULL,'e118e0f3aad5be73080f4d1892517e8fd2c4575589ccdfadf980edebb9a66a14','d2be4356643047c7bd04eede767d4f6853885f408827f3bec8c54ceb2b7fd71b','afe1f66a52e4050b584ac2211e230efc3d2f08d1935e6463e5cb9db2a1f62002'); +INSERT INTO blocks VALUES(310168,'a12b36a88c2b0ed41f1419a29cc118fae4ecd2f70003de77848bf4a9b2b72dc9',310168000,NULL,NULL,'267f48eb4e3b0925f4f472d8ce6ec57ec5039911b13a14ff2884a41a9cafd7b1','ad748b661aad47fa8963b43999846ef9bd00ea2595747f835710360afed16797','ae89be4147b050fbd342926fe882c9eb79713b78e1992c81920acec565f2ea14'); +INSERT INTO blocks VALUES(310169,'204809a85ead8ba63f981fc1db8ae95afe92015f003eaebbec166021867421f3',310169000,NULL,NULL,'df394a6f3b2a9b9dded6019dce9f3d3214db1f30019faffbdc2ce614f629b25a','3a92e2c7808a00a0ff2b2fb4695b225acf6262c57753023334bcf3de8e1c7ace','8f73634c5acb87507250a21cd4ccf8f62ae6519d388de4f30659630623d85493'); +INSERT INTO blocks VALUES(310170,'b38b0345a20a367dfe854e455e5752f63ac2d9be8de33eab264a29e87f94d119',310170000,NULL,NULL,'3081081c2ab6d8280ef721c5836d0fb7e89eb3d747a4e4522d2e22f5a6b153a2','f4ada9df3e82d94ba52292e829c4c814b3f0d04f0e3f8606a90fed651634fafd','799f530d8702afae86583a4a2fb313df8d504d6fef162c73d1da7df000af0d7f'); +INSERT INTO blocks VALUES(310171,'b8ba5ae8d97900ce37dd451e8c6d8b3a0e2664bb1c103bf697355bf3b1de2d2d',310171000,NULL,NULL,'e6a4017e4f7d9da50bb3817990c3e115d5035443de8824dc01b5380a5b4c52a9','e335e773387256c016b82649c44647ce0355aa108249413f02117fe14f39c56d','42c4de55a5b306aabb92824b5161f35531e0bbb47677481ef260d04774eb573c'); +INSERT INTO blocks VALUES(310172,'b17fda199c609ab4cc2d85194dd53fa51ba960212f3964a9d2fe2cfe0bb57055',310172000,NULL,NULL,'89e90622bf8363bcee5cd7ab6d48b6d06ce4cbd067f9985e35e67fc683f4c103','d03bfc2a16d240505e3413ce267b263a0ddde5b3f8a04acb6a67d33a89434996','0ff8f806c50a4f8e9484dad2c63a089e212c71e76878238a5daab88a90d68988'); +INSERT INTO blocks VALUES(310173,'f2dcdc5ffc0aca2e71e6e0466391b388870229398a1f3c57dec646b806a65016',310173000,NULL,NULL,'35ceee6a23757fa49e7f5c34ccf0fd034731e95d564257b443ebfdee7cd294d3','73c9dd3d2f5390d0d4379cc8f5e195ba4a0b4d280d3fe663db3940d4a42108ef','6450facdb6c61822b021a55b5521cd6f18a1e80b1ccbd34b435cbcdaffafda19'); +INSERT INTO blocks VALUES(310174,'fa6f46af9e3664353a473f6fffce56fa295e07985018bface8141b4bf7924679',310174000,NULL,NULL,'101dedf34bc0788c0589c8e2b1d7da4ec65f6eab2e3c5523c0903db685cab017','71d9279604a4ac7dbd49f6672ec6cd19ba59b62302eb1b1bd78ecd3b6d4a5263','e78911a0557fa1e4076943ecd8493b29d65f5f7d02ff2d38222a39dffc8c5720'); +INSERT INTO blocks VALUES(310175,'f71e79fe5f03c3bc7f1360febc5d8f79fc2768ce0ff1872cf27a829b49017333',310175000,NULL,NULL,'67de4a0a9e52d9ae06caf62b3412d0bf2c10a6b24716210b21212d75be75ad6c','90b52df6f0427a7dc695fa0e17a7bf3e59d788cf4016bb65c451a151c38f121b','400e28ee2442998accf1cc5866cf963a8706dc7894ae603d43b6251269de8913'); +INSERT INTO blocks VALUES(310176,'67cd1d81f2998f615602346065e37f9ceb8916abb74b5762ead317d5e26453c6',310176000,NULL,NULL,'a90bd400e15727fada1a27be4a6e228bd91a15f0dbd0fb7de3b6779a8bf89e4c','b870ef1dabda015a561f74122039890b1c9c98e2c4c547dea34ed296fc99e8e1','907dbd891be53f35db2daa56905243a1bab5ac2824dd4744a3a9fb43855a677a'); +INSERT INTO blocks VALUES(310177,'6856b1971121b91c907aaf7aed286648a6074f0bd1f66bd55da2b03116192a52',310177000,NULL,NULL,'bac315d07dee18e27336a46ff3ffeed58aaf8eb1eb702e98a93c06303c937716','80b0eed7b842a9779b358c5293771470290876f3acb617d85e1a97e786a73092','68121b496f3e23ce960d2984d270e9d00558693e9efeb6aff3f48c963ce873a1'); +INSERT INTO blocks VALUES(310178,'8094fdc6e549c4fab18c62e4a9be5583990c4167721a7e72f46eaf1e4e04d816',310178000,NULL,NULL,'186ea0ece84d21ee21889ff13c98959dfc1842063a970e0c095552f0ca86515e','79d67c9aecc8676b0743ebc9af6b78c6f40d264b54bcb510b0028715fc1ca4bd','23b0dcba59a0c77df49df5a3207ba43daa60e750de87b9600c6539b27e22c618'); +INSERT INTO blocks VALUES(310179,'d1528027cd25a1530cdc32c4eaff3751a851c947ddc748d99a7d3026a5e581a7',310179000,NULL,NULL,'0200402ef08256efa0adc85b2b4b15fb7448b5107b65fafbcc7985d809e84bc8','3bbcd82428f094a7089c7c9a5c74be0e400e4a03181ea95faea8681323851d43','32a132c83b160c96b66baa151d1361aaee4eaf7447b101af0ee739b3b519e567'); +INSERT INTO blocks VALUES(310180,'f2f401a5e3141a8387aaf9799e8fef92eb0fc68370dae1e27622893406d685c1',310180000,NULL,NULL,'13829eeaf9bdc54f87366e35616c5a57cd836c63db8a9ba7d117d02377ef43e1','2398e91ec31dc2810a4648946a85f5af7df71cae0b678f99aaa17e97d215785b','052d7223b919b539cd798983d21f9f4c8caad734de331b9b6e1a2461a6209fcb'); +INSERT INTO blocks VALUES(310181,'bd59318cdba0e511487d1e4e093b146b0f362c875d35ab5251592b3d9fed7145',310181000,NULL,NULL,'81b4d83a623a55019ad720c1bd3ecef100d8ca49deda91b8ba6ffe9802764df7','82cb247f5dfeeb31342861a77bceb74957ceb62932de536d837988a2f471f599','3924a19880813cf99e6deaecc1696b29aaaa8c7be1598d5175be47838dca9b9f'); +INSERT INTO blocks VALUES(310182,'a7e66b4671a11af2743889a10b19d4af09ec873e2b8eb36949d710d22e1d768f',310182000,NULL,NULL,'935e40f93195d450b292481aac481f445d2de8786d04d26263f4adc5a348704c','1a48f71be7c5f3baa68d68c393a6c68d63596c561005ac7c6df457584fc18c6a','fe7c581a68edda69881d2f4c0844a048cac7a1750880fbfe75394f26f1140f82'); +INSERT INTO blocks VALUES(310183,'85318afb50dc77cf9edfef4d6192f7203415e93be43f19b15ca53e170b0477bb',310183000,NULL,NULL,'268bf841be40615472bf4c60b5306d0763ed50510fbb55c47a6a0ac726e8701f','82d2641b1ab0cdf057e8e68b0cd7824ff8c60222f8d4e23125d68beacf2b3293','db95ad22dd10829f175e489a611aff4d1bf506288d73653900e6dbbd3867a952'); +INSERT INTO blocks VALUES(310184,'042a898e29c2ebf0fdbb4156d29d9ba1a5935e7ed707928cb21824c76dd53bfc',310184000,NULL,NULL,'64323488ca4d32a1f548842db4ac772b750599ce6222020ef6149b4a0e54a935','9a7f77be4828adcfee8ea1f106ecbcb55ae758d5098a6fa1aa3a494af957f7cb','b1d2b703747680800481601113da245d29d9f8e5816ef803578952ff0bd56dd2'); +INSERT INTO blocks VALUES(310185,'bd78c092ae353c78798482830c007aac1be07e9bc8e52855f620a3d48f46811f',310185000,NULL,NULL,'8946baadef2e19c5e4e4b2d771b36982a217486dcb0f95097b41ce633e61da94','8956f030f917aa87d9b309bd845b59cb37ba2265184ff1f67bfa4b61e32d43c3','b6215cf3cdb42da7d03ab89f6eaa3962deeb1388221d9970a3dd61c9e9d74b83'); +INSERT INTO blocks VALUES(310186,'e30a3a92cc2e5ad0133e5cee1f789a1a28bea620974f9ab8fa663da53e5bf707',310186000,NULL,NULL,'e68b5525927cfee15fefee02a16fd700abf6b6e7b4e32e57df7d324fae7ae090','137a7a7a1ae71a317f7c3c48f7f84e4a782a515fa2096c2abe2c1adeab4e8256','04cc762c98843cf7e0b78be024532371b6c33d2e49e94db3c42e2aa0aa2804dc'); +INSERT INTO blocks VALUES(310187,'fc6402c86b66b6e953d23ed33d149faa0988fa90aa9f7434e2863e33da2f3414',310187000,NULL,NULL,'c42efa24d48339fc341908a30c6679beeadc9f5918d8d3e62d5c4b06fec845d5','cc587cfca94dbe30e6670dbfc4a5e3ec46732731f5c66aab9c7ef9028b05c22a','3f7a33d71fe2c983f9f286bdbcf88c02a8fb0da8501f95fbf3b8d3f00eacdf62'); +INSERT INTO blocks VALUES(310188,'85694a80e534a53d921b5d2c6b789b747aa73bf5556b91eeed2df148e2ada917',310188000,NULL,NULL,'13de1d9b569d5d2525ecfa39b1eda69f9fd474683b6e34554b1a755125e96e5d','2fcc160068a4eb52ac410937237ec3813bfee52750bd8cef939738b81c8ac30b','7215da48ed49f22fe5828fa86159e104322a03fc293da4eba679c43fb7850f25'); +INSERT INTO blocks VALUES(310189,'7c036dadf19348348edbe0abe84861f03370415ed2fec991b9374dbb0ca19a06',310189000,NULL,NULL,'582b8b3d3a226d3f6df497cb933ed5f42e1e992c0c25372ec15de424c0a33368','ae81616b5fd77e3672318a0a5ef1b20106afc3ce7d730c8beef848d73ba53a0f','c1ab61d12188a0424fef93fae0a2184ceed95baff436658de227566896803190'); +INSERT INTO blocks VALUES(310190,'d6ef65299fb9dfc165284015ff2b23804ffef0b5c8baf6e5fa631211a2edbd8d',310190000,NULL,NULL,'d4c49d5e3aaf21e6fe1c30663d0ba93f7dc9ddb03611e3751fba9aac8d382ac4','48c70376450aa80a2a920e4b871d27d1efe703b377ba446a262e06c9a6677611','56bc0b05200a0c8d05deea1076e6502c61a240dee48b2797fe42c728e291b46f'); +INSERT INTO blocks VALUES(310191,'5987ffecb8d4a70887a7ce2b7acb9a326f176cca3ccf270f6040219590329139',310191000,NULL,NULL,'23d340ff3f1979a43bd1336c9c882b5ee01c646cd104060feacdb5db78025cca','704b02ead8ed3e4e6505225fc620073993e9c3b13209bff9b5f638d5f21ce23b','d7f6c72e63447fc52ee9eb160d11c76a64622c75ab5e518ad3cfd24ed2396d06'); +INSERT INTO blocks VALUES(310192,'31b7be43784f8cc2ce7bc982d29a48ff93ef95ba18f82380881c901c50cd0caa',310192000,NULL,NULL,'cd18860851bceba4a0174480ccdc0f6ddc47b31ce71af8ec8500cb07f75d9da9','17018479e73908fd235313691ed8464b93a0a5db774d3608294e23fba918c672','cb93dcc884eb0f9d0d7605adb24a21128e31ebc1a14a004a1e80c7575d8e68c2'); +INSERT INTO blocks VALUES(310193,'ff3bb9c107f3a6e138440dee2d60c65e342dfbf216e1872c7cdb45f2a4d8852a',310193000,NULL,NULL,'391e97ae7ccf5bc38ac72e7ad1256f24c28297c625bd9a789cba8231a5ade046','d08696a916e09e242fd20a9f8314cd4fb6305e991b506c53e3ef3f77e2d1d6dd','d11a96e58f9d590b08b436f59bc57aede2fcd4b252b40ce07da1640dd8bf85be'); +INSERT INTO blocks VALUES(310194,'d1d8f8c242a06005f59d3c4f85983f1fa5d5edcc65eb48e7b75ed7165558434a',310194000,NULL,NULL,'9141c9b38087c7cf2b8c11ffd55c2eabcb3bb09f132ac0baf9c3779f628dd42b','d5f418ef4569bb977ff73ab64235b3697d0f7f326f95696e6f63c56cdd180d6d','ef9c7c9c041a1c51deb2735a421e7c4f6ab55dfebdc20673bbe653e4e09c8645'); +INSERT INTO blocks VALUES(310195,'0b2f1f57c9a7546faac835cbe43243473fa6533b6e4d8bf8d13b8e3c710faf53',310195000,NULL,NULL,'705918f002db29e7b3dfbfd6378f79d53e33c6ffa3948b2e3b5c85f85009bbde','d0165e09e04c2049de1d8582291e623c80477499203b702e46fb829390ed64c0','4741095a8001d8e74248b44dbfd8c9850fcf40747a61d19568aa65085596c125'); +INSERT INTO blocks VALUES(310196,'280e7f4c9d1457e116b27f6fc2b806d3787002fe285826e468e07f4a0e3bd2e6',310196000,NULL,NULL,'59e12df19e3c0e3e23a5d1e9783c75e236a000774a038553312919a0f46b8227','57dc6e1a18ce4910ba32e109820e8e0630070251ec745e63557c98ce71dedd80','56992701a711a684508bd4786d0e471a9950827d1a643610b953dfe6ae945326'); +INSERT INTO blocks VALUES(310197,'68de4c7fd020395a407ef59ea267412bbd2f19b0a654f09c0dafbc7c9ada4467',310197000,NULL,NULL,'a0e1817dfc258180fa1629710ff3b6026181a9042fecd2c8b0b5e38118199e07','58d18f5f2362b4bfbf155b16fc4e8868b311286b25365f3b4b1a9bf73fab69b4','a3b5a6e6a7e36a600de6be91ca1e061833774a9c8641c40120bac216f64cad9f'); +INSERT INTO blocks VALUES(310198,'30340d4b655879e82543773117d72017a546630ceac29f591d514f37dd5b1cc2',310198000,NULL,NULL,'ff51bfc670b1387bfce53781750e35a3bf69d907167cf9cf57e15613cc0ff3b2','1443d1c76f64272d6ea00fb8f78913e72c617c515a162c9f1c213be02d48008a','28019538580d128b2fd95ace97f5f279deefb93fc1476c5d9de82493329325e2'); +INSERT INTO blocks VALUES(310199,'494ebe4ce57d53dc0f51e1281f7e335c7315a6a064e982c3852b7179052a4613',310199000,NULL,NULL,'e5f8f8f00de32f0d8d2b62eba27218edcee77563960fe074da5ae86bf5b553f1','87fca2825c48b9ec9db31e2d6e8e8354a0ceff7fa3df299dc2868c7d616a9599','231de46907b625a4f6d60338f084f65e96d931318d51e0a5344bc629ecd57faf'); +INSERT INTO blocks VALUES(310200,'d5169d7b23c44e02a5322e91039ccc7959b558608cf164328cd63dbaf9c81a03',310200000,NULL,NULL,'fd8fb664576868d4f1c843b28efc7ee028417034a33d6f5635238bd13c701b2a','a88ca1fa9d0dfccf2e49323a500ebdfab7ba13b60dc9011c6b510741148dbf54','67ebc38973ed4d1185dd9eac6c6e75da878c6b0ac148fbe40f69a53dd6019d98'); +INSERT INTO blocks VALUES(310201,'8842bf23ded504bb28765128c0097e1de47d135f01c5cf47680b3bcf5720ad95',310201000,NULL,NULL,'7e2dbbf14c0620ac0fd4e0e676857e2d055fff80cadfe2d9d0dfe07d36738722','f20074cd00170edae909606eb1bd3937afaa3711590eb7d788c564ddbdc6600f','e75110cb2debad8c949d7aadc11faa330aebec078a4ce882029c4bdb3363fc3e'); +INSERT INTO blocks VALUES(310202,'95fa18eecbc0905377a70b3ccd48636528d5131ccfa0126ed4639bc60d0003d8',310202000,NULL,NULL,'084c24e81842ec8edc4144ad64df9f12377318fe4dc491b307b7d377f3f81b2b','76c57648e216c5f191f04b79d2a1149d273b2a58a6b4956eb1d077abd2cfc113','4486ebf16b4a0a7cc6f29222c64d6b2064f3437d3b260715243821cf00bc6d8a'); +INSERT INTO blocks VALUES(310203,'ab15c43e5ac0b9d4bd7da5a14b8030b55b83d5d1855d9174364adbebf42432f8',310203000,NULL,NULL,'4b0b8d82a5a2c8600a09b1050eed4440d9e0f2d817498f3e32ba27ebcfbaf6d5','3e49b55d1309646ffce3b91d3cc3c53c488377518fe30cf6397c0d3c2aec45f4','64bdf8100973d693f2597a04c9cee3899d9152ebad7c80ebfc20da46d85ea0c0'); +INSERT INTO blocks VALUES(310204,'18996fb47d68e7f4ae140dc1eb80df3e5aba513a344a949fd7c3b4f7cd4d64cb',310204000,NULL,NULL,'9f81657142f7523c01595bef4e9008d8525c2337f6d90140e05abad619d94416','89015233602aeb77d2097a328f2a5a065245131ac88ec6ac2d2b9b056e7764b6','2307a8e9d27aa0dba9b5da5c18f0c37c658d4abb3feae5656eae78704b207ecf'); +INSERT INTO blocks VALUES(310205,'5363526ff34a35e018d1a18544ad865352a9abf4c801c50aa55742e71630c13a',310205000,NULL,NULL,'fd1cdea0193ed914cc408968efa42377d7c69453aa9bdf8bdf0731d4b1501b01','1ea101d94c29967a141d71d3b8b15b278f3530c4c16c7e0219b892072d89f8f6','6ffebe1e7b3626a02ad8d3aa5b262bcd8bd0fa16114141fae183c77c3bf064b5'); +INSERT INTO blocks VALUES(310206,'0615d9fca5bdf694dca2b255fb9e9256f316aa6b8a9fc700aa63e769189b0518',310206000,NULL,NULL,'5845d6bedf81fba710999bf2954b3c1f3f9ca007a09d812ccae8e2a6d3b9bb07','e26d49ceb523c99c2583e7bec1b4bbe1f8686c2bd009626fa4c8966c642a1bb8','544f8215df39af2c35bc3baecb89e01245263e3df4ee0f9eae2d6c67b2f26e91'); +INSERT INTO blocks VALUES(310207,'533b4ece95c58d080f958b3982cbd4d964e95f789d0beffe4dd3c67c50f62585',310207000,NULL,NULL,'b65cf7069a0eb909357cd5d45129b70c576eeabc0cb13404029d088e24a2be34','596206790b52de9f791b99f7e71e3543cec87d4c3b9439ded8b7cbcd182b08e6','36bdcd3ec340368c3a5dea91f00541ee25da5c3a730c451eda29a17216246a3c'); +INSERT INTO blocks VALUES(310208,'26c1535b00852aec245bac47ad0167b3fa76f6e661fc96534b1c5e7fdc752f44',310208000,NULL,NULL,'aa54dc010fec8a0ef3871c91667c45e88ffac08ee2fc93274d7ad1b2b5b28102','3414e0af132ec9df1da5a4304a3c94529bd915631443d34b759a017ad166863a','e21272e74ec7cf3d3b79a461aa6ea4cd0313022e5b944a7ef3ce5c52ebca0bd9'); +INSERT INTO blocks VALUES(310209,'23827b94762c64225d218fa3070a3ea1efce392e3a47a1663d894b8ff8a429bf',310209000,NULL,NULL,'c7866cb2098c87c1333da5b3dce4c84bdeb620c9f1898456b7cceb23e4027df0','56dce3d0e9dfa62c44e422f41ecc1517bc98302341496db287adf309f666d3bb','74e723d1102889f7771eee1da6080ba775fdc86a81c5fbef8b42189195c7a4f1'); +INSERT INTO blocks VALUES(310210,'70b24078df58ecc8f7370b73229d39e52bbadcf539814deccb98948ebd86ccc0',310210000,NULL,NULL,'207a1c90d1658d55fa0fc2e1507fce98521647ab5c4d11099c2742279cc92b3f','ecd4bb45bef1d8b395add25118bbeedc8d96f818a471bd7606554946a023b151','a614b0c8b0d4cbf4a0540c027373d01b11580d45e226a23f4e67139b92ae09c6'); +INSERT INTO blocks VALUES(310211,'4acb44225e022e23c7fdea483db5b1f2e04069431a29c682604fe97d270c926d',310211000,NULL,NULL,'dfc7fe172f9bc77148a1bfad5d441a3688f718b4985406d0cefd4c4dcd926208','f999268e3400907f85a0448d124df4d139b228327721fad7ad29ef595b0d16c9','f788b344f30b5eaedc4a475ca604e2918b3e50b624495ee2edab1f0bf5766a7a'); +INSERT INTO blocks VALUES(310212,'6ef5229ec6ea926e99bf4467b0ed49d444eedb652cc792d2b8968b1e9f3b0547',310212000,NULL,NULL,'32a39bff0606ec93454a2cb144c0bbd1939bf2be6a2ae369b885afc0b5ef33c9','2e46422b38cddef2d8a10b343115c5e587b5456480fb1a019f0a5d541e90afb8','e86618689c0b651d05f865904034fbaacc64e83fbcb5d5285afb09c6752da5d2'); +INSERT INTO blocks VALUES(310213,'17673a8aeff01a8cdc80528df2bd87cdd4a748fcb36d44f3a6d221a6cbddcbe7',310213000,NULL,NULL,'15968873880e97e849e59971d4ef19881b1c11c3148dba966f51d986c59ccf36','fa1e7562a89ee572607e6cdbf26c80d4ee1aac2bcd45374d166e2e993f8672cb','30df45a6f529772a5908694e02f9de8f9e12d745f095ae7e5dc12d77482282d4'); +INSERT INTO blocks VALUES(310214,'4393b639990f6f7cd47b56da62c3470dcbb31ef37094b76f53829fc12d313454',310214000,NULL,NULL,'dcbdc463154fe49a7f22611fcb53e5ca78501424ba741040d89cac9db0a03ac4','5928d3221dd0bd142368585dc56f9f8a68885be95b7ad46c35bc37fbc61f651f','a506c28394188f0d47dc6cbb7d7461b5cecd53d0cd50aa27433c19ea01a75abd'); +INSERT INTO blocks VALUES(310215,'c26253deaf7e8df5d62b158ea4290fc9e92a4a689dadc36915650679743a74c7',310215000,NULL,NULL,'6047855f1c691f27ade1cc4c587f1c11ff68f5f5bd7959a23f801e5da7773eed','b6410b25a5d6f17a5431f621d6226491bcb2ed97dac543c06e832cdaa8853d5a','4612bd2ee3b59bd97b18b4db38cf1b568e7d95919b4df1efed99827ddb108270'); +INSERT INTO blocks VALUES(310216,'6b77673d16911635a36fe55575d26d58cda818916ef008415fa58076eb15b524',310216000,NULL,NULL,'a12fbb09858868de79095c8e3222f6fa179f2f00bc3c97c8205fd9367ae05aef','f8b3b6d36fcb97071d826e68d2e6e5bc60f982c470e68644d94a6ec1342d0148','46b78103fea5220c7d355b83648be58c25f14f886bc57d66863aaab90e8dd02c'); +INSERT INTO blocks VALUES(310217,'0e09244f49225d1115a2a0382365b5728adbf04f997067ea17df89e84f9c13a8',310217000,NULL,NULL,'419d8dc096dd58523cd4822748754158f0c11945bbb62100cb5268cd802580a8','a61fb813a69ed40eae923918a73a8dfe51dd6fa14f5426ada1a5a543ab7bb0ce','b29b9e98e0b8ede80fef86b055eaf4b1a4811ca2092360b826102dd1468d87b6'); +INSERT INTO blocks VALUES(310218,'3eb26381d8c93399926bb83c146847bfe0b69024220cb145fe6601f6dda957d9',310218000,NULL,NULL,'a36c07f7fdfaf7878d73baf14aee58b42220b2b2411fd1864450ec6ce1fbd173','dc1d785fe75a506a691f0eccaf752017fbaf5ce2b7225bdde3fb538281698e4e','220872c5652e7b6f40c016dc6523de8ff98c3df64b4e184c454d6b633a7b867d'); +INSERT INTO blocks VALUES(310219,'60da40e38967aadf08696641d44ee5372586b884929974e1cbd5c347dc5befbf',310219000,NULL,NULL,'7958aa94088ecf0384a9a6b0569e9507d208e009e9ce139c823960e40996a47e','c9aa622e3b372ba0c76efe97c1443cb89f2dfbcf8ff5e28dedf9b3abab3d6384','a11450c29b7911ad29380e63a6b19fe51c796d75f4c0d53fc920d5fc5f808c91'); +INSERT INTO blocks VALUES(310220,'d78c428ac4d622ab4b4554aa87aeee013d58f428422b35b0ba0f736d491392ef',310220000,NULL,NULL,'00907c4368c2dc76d1ef98a0ba3c86bc4746ed2734b0c10f3797e0af70714240','d0c3959f899232cdb5fed61bac2c09e45254959e8bc1a076acb3ba5e3ee63e65','d040538edf8a2f0f4a6e3faf03960e87d928a54fae425936298d6a681d11f46e'); +INSERT INTO blocks VALUES(310221,'cf5263e382afd268e6059b28dc5862285632efe8d36ba218930765e633d48f2d',310221000,NULL,NULL,'2e42f882087dc2158036592298321113f1b34e15b414efa6d43364c06d368540','cf40107f8d11aa8ba96b03912967f88c44e69e20d7105f497d5418fc08aa5800','59b0ff7a16f517df2cb4bf8bc7ff5956611500befa53d0c4780b5e283da820bc'); +INSERT INTO blocks VALUES(310222,'1519f6ec801bf490282065f5299d631be6553af4b0883df344e7f7e5f49c4993',310222000,NULL,NULL,'00c4a5d41dd629bd0973c03152e4519214dce68498999c8dddc1f7a1cad28a82','6a012ee8e82d8d24b0a24d4bbab74cbe226afea1a9c1e129aceccd1d7591a107','e6dea0d41304cfb4a3c38c1c8d1fba4504f912690b43e3733846f4126c909c2a'); +INSERT INTO blocks VALUES(310223,'af208e2029fa49c19aa4770e582e32e0802d0baac463b00393a7a668fa2ea047',310223000,NULL,NULL,'41c7a0fa22ebee9d55f2a3b118314293d155c349ba01069a23ddff76dc842955','1080406ec3ccb84490487860bdd507637fa8fbdc68fc886d082bfcdf9ac835e7','cb084ce164cae49c6ff1068db4164ae28199c67d8cdb1a113cff3ee5756e3e05'); +INSERT INTO blocks VALUES(310224,'5b57815583a5333b14beb50b4a35aeb108375492ee452feeeeb7c4a96cfd6e4c',310224000,NULL,NULL,'66c268462442b69efb56b29e08aae1a404d3543e0a20711e8998a31af45ee929','1d5188bf347d72bc66239f3b4c709ecca24141c5474755c567f4176293f275af','6d590ad50515d2fe147d37f12a335f9c2a81ce0a480b745563088b258324dba5'); +INSERT INTO blocks VALUES(310225,'0c2992fc10b2ce8d6d08e018397d366c94231d3a05953e79f2db00605c82e41c',310225000,NULL,NULL,'cf39fb28a7e4d4db7657bb11a30d592a15c049000d7ac86d4fb3d942bf879b95','61dccc2a6cdf50b56700c893611fac0dd6cccadcd672cd438452ebd30852ccf7','c2680ad2861f1e3f0cc4b58706e888a73b1ffd4dccb574a57adfb21bc96697ec'); +INSERT INTO blocks VALUES(310226,'b3f6cd212aee8c17ae964536852e7a53c69433bef01e212425a5e99ec0b7e1cb',310226000,NULL,NULL,'cb622a4d04645ad96d3e0006f2b7632e8b82e44206d6c1cb75212b059fe18de5','2c131ef357cdc433dce05cf915be1b2c243e51208c877852a19c67968caddca4','2c21eeeadfc3473fee34a305a93bae07d53734cd66bb628b27fefe546435476f'); +INSERT INTO blocks VALUES(310227,'ea8386e130dd4e84669dc8b2ef5f4818e2f5f35403f2dc1696dba072af2bc552',310227000,NULL,NULL,'60ae4209347248a3f7ad39b6436627f06e45433f6b6dd89cfd3383d68974a41c','200ccbec2ba0927612c50a1ce2a58f856ecbda876943bfc2d3404724fff1927a','90e3c15bd96157e454918c5c2f424db7ac3944357363a15abb84fda1118fc6ad'); +INSERT INTO blocks VALUES(310228,'8ab465399d5feb5b7933f3e55539a2f53495277dd0780b7bf15f9338560efc7b',310228000,NULL,NULL,'798206ee77c9e2fc8fe943f9bf2074c9c2560f534e3304b944e2ed3c89ce8bcb','c8c9a18e8420e274c98c528e0d0636aba20f5a6c983135a61e9cd47d60123185','9f1446c7b2a89aa204c3314e07b538355d213cbbffe90221d199bdc710f747d6'); +INSERT INTO blocks VALUES(310229,'d0ccca58f131c8a12ef375dc70951c3aa79c638b4c4d371c7f720c9c784f3297',310229000,NULL,NULL,'becad39a4d1bc8d73a856fa1d2bfa251f29b23fec9448a91932dc610243fd8df','1d817cb41854bebc85173e6c6c0a8e6ae5a1bdbbd1077a64265ec4c96d60ca45','d3d5934e9ed8b1433c749b5bf4334b3416f52e34e67bac684fb35e94636b7b88'); +INSERT INTO blocks VALUES(310230,'f126b9318ad8e2d5812d3703ce083a43e179775615b03bd379dae5db46362f35',310230000,NULL,NULL,'e08eac4daa7d7bc70f2f47a835bb80993d6d6db06d8d8986101b717db1c62ed6','d37fa640132bf2595891bfaa5d1d562495c780569e2a5d4f8863fd60d6396d95','d2fbfd6192c24c7e814e6024e2b285a9bbfe76cc3716df91ffffdc2d1b8ca15c'); +INSERT INTO blocks VALUES(310231,'8667a5b933b6a43dab53858e76e4b9f24c3ac83d3f10b97bb20fde902abd4ceb',310231000,NULL,NULL,'a761c29e76c9d5090cd1d6424beb91d0a9fd9546c67ecaa6d4879177b6745b59','7bdcbdcc058e4c3d39751316b39bc65594624dc79fc8556e2847c94fb5986200','f3615d817a2ab720a6484a1648a8a0ba44cb89561d09d99eaa2d263441bf7748'); +INSERT INTO blocks VALUES(310232,'813813cec50fd01b6d28277785f9e0ae81f3f0ca4cdee9c4a4415d3719c294e8',310232000,NULL,NULL,'5da469b7e21ad8ec4fe7cc2f426dcaeb18a3a4a3c44385d529a8b252c77a9e43','721ab1fecac8b537de1c90225f23a62d02a6e8b392f5211a8e020d9169dc75f6','9678bba3d4de554ca46c136dde090368c699e1d0dc418e50e46288276eabf4b3'); +INSERT INTO blocks VALUES(310233,'79a443f726c2a7464817deb2c737a264c10488cac02c001fd1a4d1a76de411d6',310233000,NULL,NULL,'d8531834d572acc01591997cac000185facc033e1ab72f8218a70d0ae3898914','a0b57a1491335a2fde88223b77d7c8a248101187be0b71894b6c56c426603867','a23b8db854d4541df9134db44bb6fe793a50120a88b3440aabb70d0e75176ad9'); +INSERT INTO blocks VALUES(310234,'662e70a85ddc71d3feae92864315e63c2e1be0db715bb5d8432c21a0c14a63cd',310234000,NULL,NULL,'0ac6803ab61e14bb08fd8051424565086ab11b4d33faef077f5a0732eec6f766','b719ec81bc5245492809b946a86c76c121148d506292a4ae125b368f1a24b72a','59103e41ec726bc2a59301e3a32784bbcda2c3e7483aae145fd7005e433d6110'); +INSERT INTO blocks VALUES(310235,'66915fa9ef2878c38eaf21c50df95d87669f63b40da7bdf30e3c72c6b1fba38e',310235000,NULL,NULL,'5f7de1c7fe45858dcc844604a77051d55de3b9dbb5f5d9910ead8bd0f3af48d8','8d81c116619e760608161facac457bb00d4e816c049afbe42f6e0f7d7f1d09cd','447fe8a1e60879312f7da19375223bac839dd304cdc22bd6aa7b152ad3450db7'); +INSERT INTO blocks VALUES(310236,'d47fadd733c145ad1a3f4b00e03016697ad6e83b15bd6a781589a3a574de23e4',310236000,NULL,NULL,'c0437ca60921bb73516c31a74f78d2fb48d2c628b629c8f55c8fbb0060718d76','1c50aa16f8543f1eee5c2585aa8f7ee373bdb58648b430189ef4d8c9b0b767db','26bd291c679eea9f6148405903bfbe586ab239983264a3946511d750c4e82526'); +INSERT INTO blocks VALUES(310237,'2561400b16b93cfbb1eaba0f10dfaa1b06d70d9a4d560639d1bcc7759e012095',310237000,NULL,NULL,'4340ab34a083b38dbca477b6cc2479e6d70ffd6d6b9b75772068674297abadff','2f23795147dfb09a113607e442cdc926222a2b9c3dc173b9e92ab8560de20c9f','280d4f89975370bda8fdf0c87314a94d7b0dd03c9b32f7bebc4021fc2720b77f'); +INSERT INTO blocks VALUES(310238,'43420903497d2735dc3077f4d4a2227c29e6fc2fa1c8fd5d55e7ba88782d3d55',310238000,NULL,NULL,'6a76891c10ff0f9416ae1a024b985d621154918bd8ab545980b57fd2d18c4af7','31d5717812d8f7e54ac8b7a000c7b599e2123a1de205cef6559b3930c466b961','e30f1e85675ece7bc8a53ac453222d029bb2d37de9bc5b6118478152c86c9195'); +INSERT INTO blocks VALUES(310239,'065efefe89eadd92ef1d12b092fd891690da79eec79f96b969fbaa9166cd6ef1',310239000,NULL,NULL,'1128bb89562fc3b112da425a3dee67adaf741a8021ee378bdfeb44af3b1b1fac','82b7482bdf98200b43d483dc7725ea9069ab96d897fa88dfafd73334132d362e','eb4ec890f5843e46da78b588ed0b02c3085bb6eb389af2079ec71a6b089e8f10'); +INSERT INTO blocks VALUES(310240,'50aac88bb1fa76530134b6826a6cc0d056b0f4c784f86744aae3cfc487eeeb26',310240000,NULL,NULL,'be05624b84b2e76794f065f36b4e98d6c6c120f1d8a5db91957bbe7008ce3240','bfd037773e4ad5fedd072183d19e824c36cf21549c374f7d7dab3ac313a1542b','353d1f575d868fc39e760ec639862c3a0c4be9d5a67a55c14a65dcfad6d886fd'); +INSERT INTO blocks VALUES(310241,'792d50a3f8c22ddafe63fa3ba9a0a39dd0e358ba4e2ebcd853ca12941e85bee4',310241000,NULL,NULL,'5abfdfb1aa42fb80ca4538062d152d965b6a7a56bd1e170a7a109409a4606b7a','e0bccb8ee5ac848700b228d8d21970f33fcc7a2c091e4b1d1f7f71c09404ecbe','d383311048590267fb4badc18a868b1ab5c2ff5f0a059ae5fd537eda71254207'); +INSERT INTO blocks VALUES(310242,'85dda4f2d80069b72728c9e6af187e79f486254666604137533cbfe216c5ea93',310242000,NULL,NULL,'5f354f767df3256aa6a23544a7164160b9fabe481c85d1891f5250b3026dd7b8','a9b87a1cd3146663579bf192b97136602806865bb60ca2d464e3111872b61b7f','62243f3d73c5f59a8441dbbb4898a241d17f67bc1af36bbb1244455fc977c96e'); +INSERT INTO blocks VALUES(310243,'a1f51c9370b0c1171b5be282b5b4892000d8e932d5d41963e28e5d55436ba1bd',310243000,NULL,NULL,'ea3acc31b3c298237fa11ca4400c65ee46732c96e0b7fac5a183dd49d938e730','b7226a87411a48bc0b25e014f2929d63979a297600f51723a0c9bb89fef120b0','0afd4bd16e3fc7530ec85e9551f1d7825c9c148b46cabdd297b4f16f964af544'); +INSERT INTO blocks VALUES(310244,'46e98809a8af5158ede4dfaa5949f5be35578712d59a9f4f1de995a6342c58df',310244000,NULL,NULL,'07ad792741a48d5a7b657e6c4dc83e3534c79bd1e7da7044139516124adc8f80','baab169058840f62c00af1dc51ee0a77fb964dd27c6241463650fdb6c77d3b6a','b911b0416c6263a6dd60ae07db6faf73d6a10f6fa6cf064e5f333c65caf079d2'); +INSERT INTO blocks VALUES(310245,'59f634832088aced78462dd164efd7081148062a63fd5b669af422f4fb55b7ae',310245000,NULL,NULL,'d36a618af8e92da03b373ab0137ded666db6cef906a6b2c0cb8c71057a1a5903','18cf40a1489af6f99dc454630c35dddf20acacbf979d47acb30a5831e55f920e','d50b71e9e2caafd838879cb22dbb2050f15cd7945c5cf292f195a8336fdd1731'); +INSERT INTO blocks VALUES(310246,'6f3d690448b1bd04aaf01cd2a8e7016d0618a61088f2b226b442360d02b2e4cd',310246000,NULL,NULL,'a34e154571ee585a839053a851a007d6d433d3efd2b3e923a9c4ec4bb0dc9d98','a2103af3fa84dc4015979f3a629c46e2234f534f86d7c5a403275a8eae144ba7','b6294ee4bbf86446dfab3468136c83cc6c8b8558718be9407924704d573a24f6'); +INSERT INTO blocks VALUES(310247,'fce808e867645071dc8c198bc9a3757536948b972292f743b1e14d2d8283ed66',310247000,NULL,NULL,'ee94fcb9210718095ccdf63f30ab081f45dff765a9ca4f5c86b1b0d98973ef90','39cff977657fdbe649c601531383548a3922cde40dd998c355c201cb6deee9f6','254b85a257fd1d35052d1ade0a1b5102d90bd457cbaa1735eb4e19016090950a'); +INSERT INTO blocks VALUES(310248,'26c05bbcfef8bcd00d0967e804903d340c337b9d9f3a3e3e5a9773363c3e9275',310248000,NULL,NULL,'029884a5273466fa45cdfbd91ae3aaca50af0771d22f6b55af6367348c2802e2','6951bec53cc30ad6d9dd3f38f5fa8e4b876cdb1637595d38614ff3e42b53edce','f8b83307c7bd7799cd0629304d19c66b5969f24e1d010e56ebc5e7869014bb45'); +INSERT INTO blocks VALUES(310249,'93f5a32167b07030d75400af321ca5009a2cf9fce0e97ea763b92593b8133617',310249000,NULL,NULL,'dc10674812c5249c693ab7b148d048439a0d77266014f3afc1810a6260838f02','2f53ae50e27194404c5b85dab55335582b2961c6997393a9c48e6708bab8f1dc','255b2e6586e335e4471dee6b33e86c67d9fd71d5a4e1887756f3bb4c79769b31'); +INSERT INTO blocks VALUES(310250,'4364d780ef6a5e11c1bf2e36374e848dbbd8d041cde763f9a2f3b85f5bb017a2',310250000,NULL,NULL,'a0fd49b46ff0000e83d4c56281dfe2be1bbfc924c75969726754b05bf7107641','5148416db7a3e45edd128f1b9b5c61b916ce94f25638cc90a8d73f60afe64176','bd9c584c6ab86bb09093331cb4d437456c09d6c617edd5c57cb2bbaac302728e'); +INSERT INTO blocks VALUES(310251,'63a3897d988330d59b8876ff13aa9eac968de3807f1800b343bd246571f0dca7',310251000,NULL,NULL,'bdef6a6203d28d314dc087e539a9cdad19d123b605824f0a66f13bf5f72de9b8','6742a15406482537d29722db3302d492647e4c7487d840fc8e7d74d0806c3bee','d3be3e73307cf37998f52cac830014fd42964c5ee326e0c9170e8ae02dc4b600'); +INSERT INTO blocks VALUES(310252,'768d65dfb67d6b976279cbfcf5927bb082fad08037bc0c72127fab0ebab7bc43',310252000,NULL,NULL,'8da11bec0d58b196ddb073d3aba0def98f01f83da654765fcae21cae6046214e','2c11848ca51ba429a094ef40b1aa019c132cd9fd6f954139dab5324d77eb7125','2a3f415a498bf24f4f007ff2e079d33fef1ea25c416a6978c2477cce8e6162a0'); +INSERT INTO blocks VALUES(310253,'bc167428ff6b39acf39fa56f5ca83db24493d8dd2ada59b02b45f59a176dbe9e',310253000,NULL,NULL,'2efa2c5781899d213741e795ca62fbee9d3ddf53792ce002db7484adc66bfbd4','1036976d6406322c4c0afb2c6be13d6b89cfb2feb30306c9df8a499330d5489f','67c3aeae46b6dd4e78f141feb7c5817bb6c2fd35f701bd50f94723d2814ec895'); +INSERT INTO blocks VALUES(310254,'ebda5a4932d24f6cf250ffbb9232913ae47af84d0f0317c12ae6506c05db26e0',310254000,NULL,NULL,'d062ec468e76421d3769a99eb3c8b2cbf4bf393d109ba13b3bce128613fff547','098200d06ee21c916a203065eae3cffe8e2c80e32bce890f96e6bee400cf16ee','04920f21cdef0c306cc68eda0e4d60c062b07aa295ea65535e29b250e4df1057'); +INSERT INTO blocks VALUES(310255,'cf36803c1789a98e8524f7bcaff084101d4bc98593ef3c9b9ad1a75d2961f8f4',310255000,NULL,NULL,'5c531dc8a7461e9e7a2ead654509d76c9be3427b1d2b75c0ac7ae0e03126c49a','b9c0f364e8694264c33b7d993ed45f645410820dd0ff39704b79f6aaa64a46c4','5c60183968d6ecefdadf18d0e4a96326ec5f86cca817d0dac4a338f8d24df533'); +INSERT INTO blocks VALUES(310256,'d0b4cf4e77cbbaee784767f3c75675ab1bf50e733db73fa337aa20edefdd5619',310256000,NULL,NULL,'8da9f0162e15e33e14e5e1e22c2fd847055a65b99eec519dd069a83bb9006b51','fbb34ac53fa4a19bb467c92b87291aeafd8bf8c43be49c7d487f962df5c50d21','5515bae0614b3e12c49529253988f197bd1c107c8dabcf278320082eb4bba319'); +INSERT INTO blocks VALUES(310257,'0f42e304acaa582130b496647aa41dcb6b76b5700f7c43dd74b8275c35565f34',310257000,NULL,NULL,'0cf6657db5f3145587a466c05f237289b639668d844abfd8d46430c090b54913','71c115bc32aefb584d499c054cd09d0ea58ea0cc11d187bd5add8f261f43f055','e52cd05ece75b2e63ed41c124938e317c23462936acd6a880f1926d54f32d723'); +INSERT INTO blocks VALUES(310258,'3a0156dd7512738a0a7adba8eeac1815fac224f49312f75b19a36afb744c579f',310258000,NULL,NULL,'e340defe4bd84e788f9c5b083849e6aa1d5c7f33123ebe62d7abe04b8a9e312e','0725d989aaa9e8f1a5604f1807ec8f5aa2db518ec2397479e7e6c48c4d2b04ca','d5073b04c9f93c2db3d53e4775af75f9a19f161e142d8218da5e685fb02540c7'); +INSERT INTO blocks VALUES(310259,'e5ed3cdaaf637dd7aa2a7db134253afe716ffdf153e05672df3159b71f8538a9',310259000,NULL,NULL,'03ca0cbce5a5b50988c19c0d4e754240f50821695dca767d1169f8c7f5c1fdcc','19e343fb3645b7ae94a299eb13691ea02d054e8acef0484a95a4079e42e487b1','2c8abe09d73bf3d398d0394c9efc66e0e27854dde12e163fab65115dd8a6b177'); +INSERT INTO blocks VALUES(310260,'8717ddcc837032ad1dc0bb148ddc0f6a561ed0d483b81abb0c493c5c82ec33cd',310260000,NULL,NULL,'83a3b43e01f4f25ba05b527415baa3e8b8adba319628c245988136bd8fcdfcfe','de3dee5cacbf5af3aaf1dac7cae860b06af7a2ba227f2bd81840d149354a05db','bde13353795758731be5bffb1e00225f868b928b46d1d3b0db9f7fd514c519ab'); +INSERT INTO blocks VALUES(310261,'a2a9d8c28ea41df606e81bf99cddb84b593bf5ed1e68743d38d63a7b49a50232',310261000,NULL,NULL,'e61c12005d60870fee947fff469631ee540b1a0d6b8aa67614cfacc0a9f65ec0','58b8a751b3daa23993a773073b44d4bb2715075dbe3cc1738f3138383646504e','b666065dd27af8046b6129b493f91b76effe12052a38ee635ca6de46e6270422'); +INSERT INTO blocks VALUES(310262,'e8ebcee80fbf5afb735db18419a68d61a5ffdde1b3f189e51967155c559ee4ce',310262000,NULL,NULL,'c21ac4906d435af5b9ef5576da6bce454f65ef16099b7ee03219a4ae1851bb91','a1e30e203c037b242cb1a41e5fd948828da8192a5db70453602961183a00d36d','e8e16450b0be6860aa3c81040eb5cd599518072e0a3b43df3f57678516b8e422'); +INSERT INTO blocks VALUES(310263,'f5a2d8d77ac9aac8f0c9218eecbb814e4dd0032ec764f15c11407072e037b3c2',310263000,NULL,NULL,'676f6c532ff23839fef228a9fac7719e77a3c20efdc17f3cb2d13035c78820e8','ca47834be7a15554ab2dd401462d7d5c14f3f5f9ef9ba715488b1b3704de15ab','b6423cfe1aa1baca40bf9ab4ef27a8ad2eb64eea67404c26dc874b8cf138c410'); +INSERT INTO blocks VALUES(310264,'ae968fb818cd631d3e3774d176c24ae6a035de4510b133f0a0dd135dc0ae7416',310264000,NULL,NULL,'258854505b1d3067bf360f3d0dcb369ed7a90fec8744578d3dde51a79db72c25','21f8b38aa107a9c6fbd6439244ce85a8a6abd12fde211c4569d28353cad5b8bd','a0e471e5dd0421397c1845d3b7815bddfc8795eb5d13d6c2b05ab8632b09f7d2'); +INSERT INTO blocks VALUES(310265,'41b50a1dfd10119afd4f288c89aad1257b22471a7d2177facb328157ed6346a1',310265000,NULL,NULL,'72ab32c420a7dcac0e7c36c4d9ca81e237955b4d8bc57c87078ba292923ce98d','9685f9791c085e79a3c298dfe4f49fd1dbf8b4bdacf45e1d25e7d18382ca0e7c','6bb5150b465d799cda7d98ef583d8afef8f401814e5c5e48617041d32aeecf6e'); +INSERT INTO blocks VALUES(310266,'1c7c8fa2dc51e8f3cecd776435e68c10d0da238032ebba29cbd4e18b6c299431',310266000,NULL,NULL,'b81386d19aac285fee4e39a818cb0442e378372f7d55f92e6028b37f974e4a61','578600253e06f32b4ee4a312df8213ea7cf12f841858bdf6123b0169cb4bd42e','d9efd0101a14c8b1c238675f24df8d16ce23c39c24dd29635f13b999c7803c07'); +INSERT INTO blocks VALUES(310267,'c0aa0f7d4b7bb6842bf9f86f1ff7f028831ee7e7e2d7e495cc85623e5ad39199',310267000,NULL,NULL,'ea8fef9e82e451d9650777b051f19fe5e34b8976f1bcc1880b6eebe5feda34d5','face84fc0aa45f7b072d73d4930b32e223cc4c22a620c39334fc836e16b2fb5c','f66ec0d53fc6fc7d82d193c34c5721bc495229facb199db09ed6b6cd01e3860b'); +INSERT INTO blocks VALUES(310268,'b476840cc1ce090f6cf61d31a01807864e0a18dc117d60793d34df4f748189af',310268000,NULL,NULL,'1545d381812f0f0caa827a237f145838276fe058b05af4808615738ca9910bf1','ee67f9fcd6ce50ee98da722352a917a46d3c71d2e5ea50294a55c613817e77dd','4176917a6feac2b51b421aaa43137a739922690e61bd4ad3756df11b79ca4e5d'); +INSERT INTO blocks VALUES(310269,'37460a2ed5ecbad3303fd73e0d9a0b7ba1ab91b552a022d5f300b4da1b14e21e',310269000,NULL,NULL,'fd9cf61ac6e1fba409e4220a141ed6c89c18c893c7a752af53d5f7608bc04a67','6d1424cf68a5b1dfddbbafb260989c5b27c060a40026e829476d979cbd8f4412','e0c21a8c43ccb12e16b67c1a1ddc93f8ed89752064ae702edb21b02476d17473'); +INSERT INTO blocks VALUES(310270,'a534f448972c42450ad7b7a7b91a084cf1e9ad08863107ef5abc2b2b4997395d',310270000,NULL,NULL,'1d34c8c0dfdb4733a7b589647abb0e6a08f8de93a5c86fbab786f6d9d1500785','fc2696c78afd3051d10ea3ecc56280d2633b732a7c755b9057aa30fb11f58f53','04ca1e602a6f205ddf76e50aa85b5b9db0479d0435fca8587f72fba099d6f665'); +INSERT INTO blocks VALUES(310271,'67e6efb2226a2489d4c1d7fd5dd4c38531aca8e3d687062d2274aa5348363b0b',310271000,NULL,NULL,'cf38baabc6e8a082eba1bd8ca2f72af5eb01cb76bd3c9eb101b27080a3a70d17','b28638da352abf83f2250bbc2da0f75b14483d7d4c69c93636484e9e3aaa326a','1a5874dea8c281362fe9df59541a410e003826464e58caf9e0c603a66b0f0172'); +INSERT INTO blocks VALUES(310272,'6015ede3e28e642cbcf60bc8d397d066316935adbce5d27673ea95e8c7b78eea',310272000,NULL,NULL,'2b2763fa5ab2962582c303062da8b8da7280274e615b3e37f93a32e44793ccc8','329d5096486b8dc452e2a1ee0a36d9a17ddd5bbb3149ddeee2bdb4989a7a3a35','c70ff62a74585b6509861de0dd69fb4dcfecf44dcae6de19eebfe44a12b2c846'); +INSERT INTO blocks VALUES(310273,'625dad04c47f3f1d7f0794fe98d80122c7621284d0c3cf4a110a2e4f2153c96a',310273000,NULL,NULL,'ff9df73d4f92b7557c36f20d8f622923dda225a1ae2871e60f16ee2dfdf5b9d8','f79f73097410b602df3a98901e26ed37d07f1da95249cf0e3a62c811d4f7de3a','21a3ca685a1045cee131f430e32cfc8e4951c171f4d1e0d30d7a0f16a5bf8b97'); +INSERT INTO blocks VALUES(310274,'925266253df52bed8dc44148f22bbd85648840f83baee19a9c1ab0a4ce8003b6',310274000,NULL,NULL,'ece29ec2cd160d7634009f41cc2d0f13330d53ec6971c019d69dfa4367f86646','bf01b445bc208b9efcb314f1cfa1ea4300fc152ad46a973044abf56dc74e9c62','ed15fe9ddaac54eaac250fc655db3514e8ee1617ce12d3cd6bacad14343032dd'); +INSERT INTO blocks VALUES(310275,'85adc228e31fb99c910e291e36e3c6eafdfd7dcaebf5609a6e017269a6c705c9',310275000,NULL,NULL,'23738d6d8dbf8b44b481f6c0eade991987c84e8025fe1f484c7acd3ead7f4163','c0f70c46688ecb9eccaa94bdcbb3fc54eaf3af76cc450b62dfd7a9513bbbd50f','9efb57bcddf342222aaeb4ec11b1c1a6aadf5f514f084668de123b2d44358e8a'); +INSERT INTO blocks VALUES(310276,'ba172f268e6d1a966075623814c8403796b4eab22ef9885345c7b59ab973cc77',310276000,NULL,NULL,'a241e1cb19bfbebb3bbb09c6471760b8379ddc73a67d69b4d84fd1d21dfb7034','99d32cb4d9b52ec0726c907330b2a60d7cf8380c8012f804cf8838bee1b0ecec','4e685f44887156780a7604b32d945ced2b372029e28a20ae7fb7d9a1b7c8fecd'); +INSERT INTO blocks VALUES(310277,'c74bd3d505a05204eb020119b72a291a2684f5a849682632e4f24b73e9524f93',310277000,NULL,NULL,'0efa57fd462031a87831832a789ed7751aac5f6c19a23767555b3f7145d87532','08e71c5246f1225a02a00c8b52bb7a92c6937da9c9659129a5dcd2981069bbb3','9f7ca19c2967aec200b50b55041282bc2ee1b77adc93d20219ad7444575db0b3'); +INSERT INTO blocks VALUES(310278,'7945512bca68961325e5e1054df4d02ee87a0bc60ac4e1306be3d95479bada05',310278000,NULL,NULL,'0045189a4da126b22e91e4bc2a7ac37dc90ec0869b7fcbc927919fca4cce5259','6e3580c7af675e8fdd1c5366a7af2e387f8d8d9192589794883a28ad2ce6a499','418da939689114cbb0dfb96112ad762001d6ca5e860755339a9c6d3e80d9364c'); +INSERT INTO blocks VALUES(310279,'1a9417f9adc7551b82a8c9e1e79c0639476ed9329e0233e7f0d6499618d04b4f',310279000,NULL,NULL,'442b7d4dee025b81c298ca0f6a5b9dbdf17ed0087fc36eab7f0671d5a19c9a2c','04f51f4c3de467be5cfb32cccba5cd482eb14657d7f67a60820204fa22afaa41','2d8cf7ac32bdb3f50d8c673fc3e3b1e15675b0b74df5658392c3229772614f0d'); +INSERT INTO blocks VALUES(310280,'bf2195835108e32903e4b57c8dd7e25b4d15dd96b4b000d3dbb62f609f800142',310280000,NULL,NULL,'38d7f98ae9cfb8e3938032dc33899e2e3e5a88e9037571cdddf8ed4709fc8225','d25ed55e962a45fbade2012c35ef507dd76fa0c67553343bb6568569bf1c08ca','db8a5152d084fa5ca9a720673ca8f49b0c5adbda4ce9cee08621dc3c3ebb743a'); +INSERT INTO blocks VALUES(310281,'4499b9f7e17fc1ecc7dc54c0c77e57f3dc2c9ea55593361acbea0e456be8830f',310281000,NULL,NULL,'51237cee3b85f1636e336259b115fad87acc830c71e13ca79e344efb7c308ecc','77eb5540b9f1e2f80cd3cb8572ee80bc112391e0236b560749aaf9952fb6705b','edb566059f9f14c5979bfb99c098bc88397ffa81cfd369cab83fd2ea4e76d488'); +INSERT INTO blocks VALUES(310282,'51a29336aa32e5b121b40d4eba0beb0fd337c9f622dacb50372990e5f5134e6f',310282000,NULL,NULL,'73adccef91b5c738e8810d4781a38edf98d2aa0a8cb619d575e9bdeda979f1fb','889f3e1047c8ca362c1ce4749d1c7ad167dab1e5f85e509d114b1ba1bac8f240','8891c9f267ac9c4cf6728eb63929966158511799e4b78c13638058281f8548f6'); +INSERT INTO blocks VALUES(310283,'df8565428e67e93a62147b440477386758da778364deb9fd0c81496e0321cf49',310283000,NULL,NULL,'5853e60a1b79d4f154cc1f3dc8b0a4d6130ac07784bac16f257f92b9ef294144','1ce62f0a42cb7ecd8c35436253e8234b83e81ba5abc757965b5041400139eee2','e71a8719bc509cf14fe2839283a8c005ba0be7cdc51c9a060a23494695b0b3e1'); +INSERT INTO blocks VALUES(310284,'f9d05d83d3fa7bb3f3c79b8c554301d20f12fbb953f82616ac4aad6e6cc0abe7',310284000,NULL,NULL,'ce33194cb67aa0a5facd788cc24706ef249bcecc95a9965f91065146b33e464b','c354cfcb046ca331ae57c00f64b56defd034278e5616ef7d1f3e559dc538bf0a','f082b16e4c826787a6ee92e2669a83df56a45d1bd4d36cc076bc3c0cc866dda3'); +INSERT INTO blocks VALUES(310285,'8cef48dbc69cd0a07a5acd4f4190aa199ebce996c47e24ecc44f17de5e3c285a',310285000,NULL,NULL,'3af35e85e98aebe1a9c778570c730bf80e085a08ca707c1a5d44b50f2579e71c','35e84bd8780b8efbdc3207b9fef22e12ff71798477971a50088b9c8def3c77ed','f6e7a11a0dddd9aa03a4e28eaed31619303a74a461da94531a1da244a0d0337e'); +INSERT INTO blocks VALUES(310286,'d4e01fb028cc6f37497f2231ebf6c00125b12e5353e65bdbf5b2ce40691d47d0',310286000,NULL,NULL,'4b09b627adda46ee7cf7116102a330ba2aa1ce714b2fa133f7952af34a52ede9','5a868b89444476076be22e42526c4462c5b865012d9970b917376c5342750311','6a0ae9786f71832f49cf2f33624457f4e62005019f24582a400eb3d0a7d8a309'); +INSERT INTO blocks VALUES(310287,'a78514aa15a5096e4d4af3755e090390727cfa628168f1d35e8ac1d179fb51f4',310287000,NULL,NULL,'67786e4ffab15cb78c7bb44ef160d1e5d99b599eecb5ff4f906a6599d744d410','791a49e50583660824bb3ec141a54951c2fd737ed963b1e65b653c22a4fc4a84','9a7e4154f3fbfec3071cebb12a7fa02e269863fc8d39fb0635eb9836b75af996'); +INSERT INTO blocks VALUES(310288,'2a5c5b3406a944a9ae2615f97064de9af5da07b0258d58c1d6949e95501249e7',310288000,NULL,NULL,'600716d2696160b3ba290636180f2afa24bf8d24435022b4539a4cc965c18dfc','3a1e3da301643f22a9b2719922a4621879b2c2d8b790e646f135bc3b5d165e65','267f2136067e09b54f578d0aaa8706f4aa5259c7d181bef4501a5a5c2b1e5055'); +INSERT INTO blocks VALUES(310289,'dda3dc28762969f5b068768d52ddf73f04674ffeddb1cc4f6a684961ecca8f75',310289000,NULL,NULL,'cd6d4b17759152edbf25fd72dce9b9126ea31a2bb1a5435636801e0ee4be1158','26aeba5ab63445ebd419a02915a835d8d6a0bc25bac49dd799e356325687c8f8','f71a3d250855cee67b3dfd077c8c495b9994a712e1373a49407ea698de000e3d'); +INSERT INTO blocks VALUES(310290,'fe962fe98ce9f3ee1ed1e71dbffce93735d8004e7a9b95804fb456f18501a370',310290000,NULL,NULL,'04a9135f416dc041d3c1c0216a84fd780d133213c3369691fbf5e8848af9d14f','74c57c7e7db040f0974be44dae944c978ed2ddb01390d616c9bfaa6816ed198e','e6d8417a7106e130721f87b5ca51f39497b313622066470147f96cd4425ab212'); +INSERT INTO blocks VALUES(310291,'1eeb72097fd0bce4c2377160926b25bf8166dfd6e99402570bf506e153e25aa2',310291000,NULL,NULL,'50f556e01b9e8c135b20187bf863839e651a0d0bf4cfd1008b446531776f7917','13ede25257044f3bd98c6905c216bed45b0d054951d2c5e86a3cf4707699a279','ebfbe8f6d7681ac360b13eb90c5a7eea59e353967ea46cb5c34712d5ec463741'); +INSERT INTO blocks VALUES(310292,'9c87d12effe7e07dcaf3f71074c0a4f9f8a23c2ed49bf2634dc83e286ba3131d',310292000,NULL,NULL,'9d4bf4b1c5dba1132a9cbfd78c1d94cbaf15d7648da80c8bc1a8dce12a79eac0','1b761ed985b1e55c95598c5c0f37df4a1e06dfd26c17792b1020cf0d28fa9a56','29eb591834a466d856b3e283dec80b75e1e653a8fb7ce1502ba3db2881b8311a'); +INSERT INTO blocks VALUES(310293,'bc18127444c7aebf0cdc5d9d30a3108b25dd3f29bf28d904176c986fa5433712',310293000,NULL,NULL,'a51a3f9af39175cc9d142eff67811307ad8f51cdd8161aaf0d98af9e2be28efa','2fd7a38fbb17d7b0eec35f2f03a28c4aee7f579d7f42e3ab124cf5eca07869eb','d526032b1e8dada6c15da7ed324bccf1db499a3d6fb552893ddf2ed64c38de0a'); +INSERT INTO blocks VALUES(310294,'4d6ee08b06c8a11b88877b941282dc679e83712880591213fb51c2bf1838cd4d',310294000,NULL,NULL,'3e9858caa8e835295aa7e78505ea34ce0726e3f5f6cf9fbc6dc4393a28724a25','36566c7c396ecf454c6fa6d3b27dd7ad2c138a85edd74672f2e7d9791e77f0b6','3258e76e3e657f170c950d2e04e111bc252b1a3b61ed62d14df5376d903187be'); +INSERT INTO blocks VALUES(310295,'66b8b169b98858de4ceefcb4cbf3a89383e72180a86aeb2694d4f3467a654a53',310295000,NULL,NULL,'bf48715799c46d629641ba5b72405f6e6cf0500886da94fcc6fddd306a86b02a','2d6b79733125c81413a3e70acf597a11e986893264588da74e9b8a0d5d46e1da','4595b24ce73a88daf27016b1b4c2c93716157faf8e8656d5e0a7a6ad62f6dbf2'); +INSERT INTO blocks VALUES(310296,'75ceb8b7377c650147612384601cf512e27db7b70503d816b392b941531b5916',310296000,NULL,NULL,'08e2361ae4b98387ee43fd7230ea8b296dee677b337f0e211527e3cf29a64e9b','517c81a10cc4219c38e3f947dd862f6983a4a2eb22459dba31f1a656bdf4eeff','d09a7103993dadfa7fbed1ec5affe5a2694dfa7c98ac02637ec9e2309d5af858'); +INSERT INTO blocks VALUES(310297,'d8ccb0c27b1ee885d882ab6314a294b2fb13068b877e35539a51caa46171b650',310297000,NULL,NULL,'cfefc3138983a33686dd1fc37f06fa1d7e01d9b218f7242cdd59005633c0ded8','85ae0c384a76e7c93b29204df759293f7a488fc71edf6b4abaea1944fa3a85d7','dec3bb7b4ebe38b1d919b39608e2f86a5f1cdf2f94184c53ed521e3a4d2555c3'); +INSERT INTO blocks VALUES(310298,'8ca08f7c45e9de5dfc053183c3ee5fadfb1a85c9e5ca2570e2480ef05175547a',310298000,NULL,NULL,'25254257d6f6724161b2b73f94d28d3fd40594b4846699b8a2d5f45d205b1fec','0633d67a69ae2c0ea1e7d3c349cfe1f3b753e387446787987c50782ee4601b68','c64cfcf26b145a34be046fd8309edbbfb19656c8860e695c76d2f7a67ae6b6b3'); +INSERT INTO blocks VALUES(310299,'a1cdac6a49a5b71bf5802df800a97310bbf964d53e6464563e5490a0b6fef5e9',310299000,NULL,NULL,'756acb1055ec75df8fa70f80e23d75f2b47e75035bfd68802e68308785a2ee14','299d47f0c18c1629003069df0afd0bb877b45f06b5609ec171c7b87ae65a0be0','f60c45323fa73d42da598fa797a73d224abb4609eaccd74c804ec333d24151cd'); +INSERT INTO blocks VALUES(310300,'395b0b4d289c02416af743d28fb7516486dea87844309ebef2663dc21b76dcb2',310300000,NULL,NULL,'e30027ca81176dc1e79a0ab3a5afbb839a3338dbe9ea6057aebcd383ed884c1d','8338432f3d159dd15129a269d1cf3866cc7cda8c3845ab349ee6cc240ecd7020','3b6ec2e51285e73d2ea056948076174575c525df91244b21a74f9432b76430ec'); +INSERT INTO blocks VALUES(310301,'52f13163068f40428b55ccb8496653d0e63e3217ce1dbea8deda8407b7810e8a',310301000,NULL,NULL,'4c2bcffc796af76a2607a978289942241e63a6387e0a2ae8fc3d02c6b5519fb0','676af2de3d30fc26112e65d493b9c2401f93822c8e414cc5e7231e60b728e6e0','32b9755f91675ea83e3159fbbb5d3ef727aff9fe4b072f930acd4044fff58282'); +INSERT INTO blocks VALUES(310302,'ca03ebc1453dbb1b52c8cc1bc6b343d76ef4c1eaac321a0837c6028384b8d5aa',310302000,NULL,NULL,'a39fdd7f84d2f6e29b613a8a724bc0902d9abd2d6b4d2f46c3b0512928d69b3f','ef3dfc32bc5b72ec279a0229af8bf6548bfb5bf4ed717e3e81ccb7710f802021','9566b4e9c496557f99e22e5dcaaec94b471ef5bce2d5c4fafed35918785a4e31'); +INSERT INTO blocks VALUES(310303,'d4e6600c553f0f1e3c3af36dd9573352a25033920d7b1e9912e7daae3058dcca',310303000,NULL,NULL,'23f307ef560a02210f4aae5fe605c6d8af9317ab17f1e1ef0944038a3515da49','d1c0461baeac24d356af8ba5283753c778f8ab0fa222c51b753758268f1e7fa4','b39abe3f84fc4b3642bdba7718ec9e3ef705b41651ad1205bb7ef1c6289d229a'); +INSERT INTO blocks VALUES(310304,'b698b0c6cb64ca397b3616ce0c4297ca94b20a5332dcc2e2b85d43f5b69a4f1c',310304000,NULL,NULL,'6baa2ac646d3725fa01111959753844d22181cbbd1801cb12c4208be3709a3a3','96ea912eae3265566ab229e5d5a25354c0713471d73d866b9a09c9b2954d53e5','c9ffd06f24437b994ac54a789e00fc40312d05719f6982b748c8b989336797f7'); +INSERT INTO blocks VALUES(310305,'cfba0521675f1e08aef4ecdbc2848fe031e47f8b41014bcd4b5934c1aa483c5b',310305000,NULL,NULL,'c366fd009860a090c632131eae9380820e512009bbbaa6f7bc5529afab7a88c1','35584be5484303aa263d746735209b04d92a6baa6045e2d684496ff5dabe59ef','5bbfe9f83b65e5b7624a0277d59aaede0a55b9759721e9eac40d0cfa51637e4b'); +INSERT INTO blocks VALUES(310306,'a88a07c577a6f2f137f686036411a866cae27ff8af4e1dfb8290606780ec722a',310306000,NULL,NULL,'fd12969b828d689063b4885a0356fc17e5207794d1f5b6a17bdeb8d584815a79','df65a3a9f318fd30166869a3d5d6eabb9c84399f15a7a50f39422a05ff851997','f77fc5b6e58f3cc3da528941368b646543919a968a9d78a37610e3e466c40fae'); +INSERT INTO blocks VALUES(310307,'bc5ccf771903eb94e336daf54b134459e1f9dd4465dec9eaa66a8ee0e76d426c',310307000,NULL,NULL,'e168094d31f56d36e4c3863fe719e6064b08ccc6f3c2adb490b1359360026aee','272ae60ff5120848055f08303e13a982fc66959f3e3b72f7d7461c7f91252944','143502dc40a8671003a6a88e9223627f22203998b0a6abd1ab0bb838b4cdc23e'); +INSERT INTO blocks VALUES(310308,'2291ffd9650760ff861660a70403252d078c677bb037a38e9d4a506b10ee2a30',310308000,NULL,NULL,'523b3bba7b02e2c4e588f21ed14b7b4f6630f887cc89f9361487b581d7e633b5','30df282ad2859208c35204fe5e2d395734e041bd9644b8b8626678fdd64058c1','834cb5874d864aec58095b356ec9112851e3aebffe63361a044482e319a49753'); +INSERT INTO blocks VALUES(310309,'ca3ca8819aa3e5fc4238d80e5f06f74ca0c0980adbbf5e2be0076243e7731737',310309000,NULL,NULL,'effe1a68917014086da3bf8696f6c13f3cf2cb5cbd6c18b80ed622e476cff017','197a65735f9d06d433abdd01f29f44ec697ba537ead9107ebe9cd889393a053c','c405f2c98172b6b14aefc39cb648528cf22da1eeaaad7be7906fb1f7003bdc17'); +INSERT INTO blocks VALUES(310310,'07cd7252e3e172168e33a1265b396c3708ae43b761d02448add81e476b1bcb2c',310310000,NULL,NULL,'968fb8a7409531a27ffb52af484e7c1076f05b58f9a51bf9cf3d5a7d83b12002','b9b9eef5f4c1720522286ce5f6375613c267684ac330210ab664e29219065cc0','1e9fd01b83f98367bcc7c26b68dab6982f6e8a7b01f3ede80566a9139e06884e'); +INSERT INTO blocks VALUES(310311,'2842937eabfdd890e3f233d11c030bed6144b884d3a9029cd2252126221caf36',310311000,NULL,NULL,'8c69639a757d0195594fa1da3f6b35a0e8c62b8df7f95db81e26d496b8c9dd72','86b9b4356e26ab703e29060a4ff1be0c5cad328b2490d983eae10c24369a1649','13c559735d179e481150f90c78eaa644b739fa66401d0d29592552806eb04874'); +INSERT INTO blocks VALUES(310312,'8168511cdfdc0018672bf22f3c6808af709430dd0757609abe10fcd0c3aabfd7',310312000,NULL,NULL,'8d839bac01b9aae5e554f691ae0ee42cee072f9367fcc2811d4b3f65640cfcad','802b3d153e101c2772b1c96c851efab754f77fd3fd7eb59848d510f8994a9d86','101d59f0cb81493976bf21434f5101e717974c5fe327068f33505d544bd96245'); +INSERT INTO blocks VALUES(310313,'7c1b734c019c4f3e27e8d5cbee28e64aa6c66bb041d2a450e03537e3fac8e7e5',310313000,NULL,NULL,'1377f4255bfd7ff6638734733a4b8faec97fd62aeb954e42b477c875ccc50b73','e96392425727ab5eb4e16a61aef7d28cd0826ad7bc1d8266b3c187bb22bb5d51','6801c7ba823344e0cc2d60bdae45014c2221e8dfc7482054b7fcf45ed0ad88be'); +INSERT INTO blocks VALUES(310314,'1ce78314eee22e87ccae74ff129b1803115a953426a5b807f2c55fb10fb63dc8',310314000,NULL,NULL,'8ed80d44f0d6ad01a30611d94b91f735ef3a166cf0dfa7531492a3e4ac7c29f1','17d9134674657a9958c43efaea302df438762233e7e5d57811b71378e3d62695','4c941a5cd397b14d8552bae72f57aac08b33049443b0bc894578fb283a54a9f7'); +INSERT INTO blocks VALUES(310315,'bd356b1bce263f7933fb4b64cf8298d2f085ca1480975d6346a8f5dab0db72cb',310315000,NULL,NULL,'24b5905cf0d5349b7031870af9677916892e3292fa61455a75e84c1605a398ba','d8bad5e8a6ab63c8e0394c200e6b90cb2a1feabe3f58dc0faaaab59bb0b82654','ed0be536c9b4a9ca553d7b590fb30287db0096adeaa1b709138c18d8ae940efd'); +INSERT INTO blocks VALUES(310316,'ea9e5e747996c8d8741877afdcf296413126e2b45c693f3abdb602a5dae3fa44',310316000,NULL,NULL,'a191657253ca159739403f35417ef74637b053db49c7db62465fde4c54e69239','daf2edaf9fb8e7f718f56cff9e570869297ce6bd350794501b05e02a541e1c84','629c6a46585dce51eda4c6803d4f4e95bf2a50538b3282272e8accd2af786cc9'); +INSERT INTO blocks VALUES(310317,'aa8a533edd243f1484917951e45f0b7681446747cebcc54d43c78eda68134d63',310317000,NULL,NULL,'bf6d880b9fa42b0e38523c00c92a898093afd068450be504a0a56bafd69ed647','740737c2cd6ffb9a5e89e2ae0d34afe5f0bb48d120ae482802b76d07100b6153','4d51cec8d7f3acd743e02e717ec5a0be47c5cdadd2e3e2f1524ecbff16513134'); +INSERT INTO blocks VALUES(310318,'c1be6c211fbad07a10b96ac7e6850a90c43ba2a38e05d53225d913cc2cf60b03',310318000,NULL,NULL,'6422eb2cab5937adb9ca2194c025d0dce63cd62e18d7ebd63220207957c942ee','3cb46a2e5b1a3ef3dd37dbe0cc429962982812eb9c7f87b5282a77a4a7f6185c','cf7aafc875f975340393bbf71285d52e57acd0fc64d4edb6ac95debe2ac7173a'); +INSERT INTO blocks VALUES(310319,'f7fc6204a576c37295d0c65aac3d8202db94b6a4fa879fff63510d470dcefa71',310319000,NULL,NULL,'efb625496aa4365f5ac198a82833c880a60cd5f86d04689463216619cd7d96b8','ed69cef0ba9e4a9371deca76209629cc988257493a69006504b96a99b3da4222','3ddc1626ddf10d1b8325d6852440ee4830f8e328ff6c1c9959a79ad03c5d411b'); +INSERT INTO blocks VALUES(310320,'fd34ebe6ba298ba423d860a62c566c05372521438150e8341c430116824e7e0b',310320000,NULL,NULL,'8c3938d7b3c0a822ebee67f1ecf21b1db6496e19471cf1f2cd00f30325d0c88a','b87169ed018fdc8251d14b58f8d0e09001e45ab5dd76eb2408ab625d34ec584b','7907be5f60e63c02e1e4ceb2229880b5a170e5b85676825dbc8f87fc16f96a65'); +INSERT INTO blocks VALUES(310321,'f74be89e9ceb0779f3c7f97c34fb97cd7c51942244cbc2018d17a3f423dd3ae5',310321000,NULL,NULL,'21e4c3a7afd02f183cbb69709fc6c006ab3d38fef3466de1a1870232d1c891bd','77ef24833ac345e51eeb48fa9adbb111e31ffa3739298ce12a18d2f581c9a79a','5b10b9285c7aa8a132366678bdfceb5fcae8787aef8f4f640fd04ae939d609e9'); +INSERT INTO blocks VALUES(310322,'ce0b1afb355e6fd897e74b556a9441f202e3f2b524d1d88bc54e18f860b57668',310322000,NULL,NULL,'01b3b28c4d8eb796827267c06e6362206884e44f40c3f72d9b5c9d1e6cdfb29a','3833d915749baf7aa33484d7a6b6b28e4acf0d78ee0f1b4e8ab44b22d756a3e3','001616c9feb9b04e2c08e83494b8269f45ffbc630f6143fd852e42bf7701fd66'); +INSERT INTO blocks VALUES(310323,'df82040c0cbd905e7991a88786090b93606168a7248c8b099d6b9c166c7e80fd',310323000,NULL,NULL,'a362da58df0d31eeaa93a25c91c17bec62f9cad6ff0c31420584ce293ecafdbc','2d41c7286053cb2256526ce42c03ab1288dfa066720e9ae5e5dac4532d512de4','3394dda006c49a85fed44816c6ef5fc6ec287043fa8a481bdb3ee117dad0626c'); +INSERT INTO blocks VALUES(310324,'367d0ac107cbc7f93857d79e6fa96d47b1c98f88b3fdda97c51f9163e2366826',310324000,NULL,NULL,'d1b353ac97e000471c66df8ee04d7b0c25f7eead2414e5648cd2ef334881bad6','051b158e05c22a326dd8becd27d142b52477b9209f369599db5c5e25484af157','9838e1a1cf6cc43a0d79c5d614b7942649fdb86a9871256ff409b935e2b978dc'); +INSERT INTO blocks VALUES(310325,'60d50997f57a876b2f9291e1ae19c776df95b2e46c14fe6574fb0e4ce8021eac',310325000,NULL,NULL,'7734300dc764c67fde935dd4432396de4a31cedc2901f3fc70bf1576797cf7b0','7671d8cfff3601fc44132a6d274c1ab1fb0b4fb712041d86eb28157667682251','5e362376ca0af2fbac11aa16d399db299ce2d0e5a2d60963c9671c647c3c2d62'); +INSERT INTO blocks VALUES(310326,'d6f210a1617e1a8eb819fc0e9ef06bd135e15ae65af407e7413f0901f5996573',310326000,NULL,NULL,'ebe859a722587fd456695c6a46af7f0bf54c03e940bdbb5424520a8c1fe70617','72884e56565b442c37cbbc572fa762c7b7b3c549c396037393463be7afb089fa','1d21681efeb4bd7a927eb4abab27ec294ecc7551658690c4e6bf40c160987dac'); +INSERT INTO blocks VALUES(310327,'9fa4076881b482d234c2085a93526b057ead3c73a6e73c1ed1cdee1a59af8adc',310327000,NULL,NULL,'8ced7a546ee2c746d4dc3f0ecd2fb4eaa62c65c4e98be74545d8de22c03526e6','ccbabd4fc70b15ebb6f28afa6f96e4a1f0af08e6a3cdfb518ae008432b908739','2331c9d8631e6c8c455fa4183ad7e5ac4e1cf61b3800da496eb233813c0cb715'); +INSERT INTO blocks VALUES(310328,'c7ffd388714d8d0fc77e92d05145e6845c72e6bfd32aeb61845515eca2fa2daf',310328000,NULL,NULL,'bb5d3479e492f52a0b3b69d29852faefdff645f9b113eae82594f57e8aa40b5d','42fa2df2e053f97e86881395e5d66de912e59bf73eb5be322ab170b06fabd344','225b22b9ce59d48fd30ebf662bc8c964c2445dd2097974289e987df79bad36f0'); +INSERT INTO blocks VALUES(310329,'67fb2e77f8d77924c877a58c1af13e1e16b9df425340ed30e9816a9553fd5a30',310329000,NULL,NULL,'4ad2c9d802db762537be19143ef5eca474cd9f749bbbc661cb95bcf1dcb0b02b','a5336a1818452ca9888d582bb5ad8182e00ec37723d42e6769b001069f96232a','4e0fc56c87b4d94c5676702a3d2a4e68099e952593db43ef7216be1a084ac5a2'); +INSERT INTO blocks VALUES(310330,'b62c222ad5a41084eb4d779e36f635c922ff8fe275df41a9259f9a54b9adcc0c',310330000,NULL,NULL,'4a9a6b59d56f6b7cf867095d939f9bddbf779141177feda470df3759b7d48be3','263932b9bd949d4b0557a7fcd5597a0c607c722b34e644f9795e4f08713a4436','1860e73bfaecdf4d6151f1cbb92bbe406c48afe619a74ef727608d07c3e368ea'); +INSERT INTO blocks VALUES(310331,'52fb4d803a141f02b12a603244801e2e555a2dffb13a76c93f9ce13f9cf9b21e',310331000,NULL,NULL,'c676b9c31e0e3d74d005ad0a52a18ba34688b6002da5d269bcea0f789a4f8e91','646197318fca63f2c8068c0a119f122d02cfea4a5c95201d6cc2eada9ba276a6','8df1a608eba89ff170320b6b9cba3ce91dd2d020c8762944245083ef799b1143'); +INSERT INTO blocks VALUES(310332,'201086b0aab856c8b9c7b57d40762e907746fea722dbed8efb518f4bfd0dfdf2',310332000,NULL,NULL,'cf0b702c03ecff4bda1254dd5e96ca580b69d5d02d1f233725fccbe1f5f32000','8197afee90f808a95bd5a3dbc9c41618e3a07a3039dc2e2539a94cb023e54a0b','c1471fe2c56f24d1393218176b6ab56a22197c7854ffb8427a66cd26c810c383'); +INSERT INTO blocks VALUES(310333,'b7476114e72d4a38d0bebb0b388444619c6f1b62f97b598fed2e1ec7cd08ee82',310333000,NULL,NULL,'b40359eb197db65549946d93a39b2a732e0694d21b8d0138b9bfce4f5a87ae5b','c8b269f3fb117e7ea3a9592a023787d886ffc388f91fd651618f807c017c9a67','78d2ef35e9b57e0a88e07eb754149e42fbf911afa3c434077a1d48e63b4f5608'); +INSERT INTO blocks VALUES(310334,'a39eb839c62b127287ea01dd087b2fc3ad59107ef012decae298e40c1dec52cd',310334000,NULL,NULL,'7cb471ec146f9ec1e4d1b93184ea641f7b8088807dedcd1c0be4ca5ba99e80e1','24eb770852273754585985a5fed612de801663408db3703bb9771d5bcf518cb9','fb4989f05a57ae4a9d332fb1e8308d156490914c1c05579aa57532c228b051b1'); +INSERT INTO blocks VALUES(310335,'23bd6092da66032357b13b95206e6527a8d22e6637a097d696d7a96c8858cc89',310335000,NULL,NULL,'47de747ec20cbec96a6bc4b71f67ea827c7a5a1ab0d3541fd539efac7442d644','ba840a499b9de3ae457db93220ebb7bf61560f33660b8e7b980178325d114cec','041193e13b67818a8a6fdaa90003cca9beeb3302ec88681d789560b0d52bea25'); +INSERT INTO blocks VALUES(310336,'ec4b8d0968dbae28789be96ffa5a7e27c3846064683acd7c3eb86f1f0cc58199',310336000,NULL,NULL,'c216588e623d2b3d03499c7e9f817106b20a8c98765979987633f1e4e50d9594','a6c20cca4d22fa5b8357fae640f1a90e3e656f9015eb5db289ef6da17b597f1c','ce4a7a73ad36049581e6e7e3b7fe57e18269540563315cd3f74bd85780fa94d6'); +INSERT INTO blocks VALUES(310337,'055247d24ba9860eb2eadf9ec7ea966b86794a0e3727e6ffbcba0af38f2bc34a',310337000,NULL,NULL,'a558b47328f54b79a5ad9f7737af0e4df07e13e20f150296370e111879c09c2e','15c9f81424d97e28fc5d40b9f74edee6bed3f68f8c81dcf572cbd786626ff353','3dd740a2c33fcd52d89bf51c09e7df422df4430c22d5450e4e4dd84be038b8d2'); +INSERT INTO blocks VALUES(310338,'97944272a7e86b716c6587d0da0d2094b6f7e29714daa00fec8677205a049bcd',310338000,NULL,NULL,'31bea50c6481fa982eace70df5fc13d2981f1af13962809e3492b493a0dd4905','ee8efb364c79aae62d48d0198d7ca348d71f312eaef01daf906fec89d2fe9166','ba87d74e8a27f01bac80391b73637530af058844a4a42b1e784bfb05017c993e'); +INSERT INTO blocks VALUES(310339,'99d59ea38842e00c8ba156276582ff67c5fc8c3d3c6929246623d8f51239a052',310339000,NULL,NULL,'6605ca3db3c509fbc8574f2e10a3f981e2ff17b2812946ec8f2b1e49ba44f220','af5e50fc6a529fb06423c8ad7beed13c6e1de1c3f746f53dcedb7af76e0d95ff','13424b1524cea7335f977de29a3d82a036c9055f9293f754213503ddb5e62c70'); +INSERT INTO blocks VALUES(310340,'f7a193f14949aaae1167aebf7a6814c44712d2b19f6bf802e72be5f97dd7f5a0',310340000,NULL,NULL,'7db1ad1952cac2dda86fff6e5f939010bb30a1da26af438d354e17f423d5bf1f','f42c5c43148a61dace7d50127d905f236ad738774c20d4f874fc3b824b58cf92','a87523972a536aecfed83021ecaf5dde00a2d73b49aeb6ae914c3af6473c869e'); +INSERT INTO blocks VALUES(310341,'6c468431e0169b7df175afd661bc21a66f6b4353160f7a6c9df513a6b1788a7f',310341000,NULL,NULL,'1a1eef01250d2c53a1b34a8ee5b1e8fce984c3d47d28c544c6e162493b51225b','5fcdf7ababadc89a26c3833bc8b819642466504b58323cded8cdb8a904239ce6','8b894471f788e35078e9c5594d4b4c5a9bfb75fd8c14c319f624bb6c09e9d069'); +INSERT INTO blocks VALUES(310342,'48669c2cb8e6bf2ca7f8e4846816d35396cbc88c349a8d1318ded0598a30edf7',310342000,NULL,NULL,'3c85c0b825985b04b42137da7e59fb3daaaf9e65b871b79390a4d8b31be5da92','b165c708026f386ddc7206518e594fcef7b5782fa0db77db6ce5b02e3b563145','003ddc5ad7c0b3b4dd02bab6c8e312873eaf569e0b672021612178acc01d9c33'); +INSERT INTO blocks VALUES(310343,'41a1030c13ae11f5565e0045c73d15edc583a1ff6f3a8f5eac94ffcfaf759e11',310343000,NULL,NULL,'26f4ea323dd31b715c7a7f4ab8f1feabb199333a8494449ed538ff13215bb3b2','37808f9fb4ad766c671be7e9703aa7c7ea53991fa838400536d25f304ebe8090','a96cdbabc14588eb63ea872dab5e4611d0388a9cda6f76b146eb3bbff6988293'); +INSERT INTO blocks VALUES(310344,'97b74842207c7cd27160b23d74d7deb603882e4e5e61e2899c96a39b079b3977',310344000,NULL,NULL,'444314748cb1fa1c836b3b4de65c3920c7fe446741193e5f77843affe3bee908','52dd50744ce4773a3db8dcf016a392a133ff7ebbeaf293d4ecb4a32fcc575a19','c023bab2f994984969b12abbb380bfc16e978fe7af9a479f252710b72487c083'); +INSERT INTO blocks VALUES(310345,'0bda7b13d1bc2ba4c3c72e0f27157067677595264d6430038f0b227118de8c65',310345000,NULL,NULL,'d1775816bb104187076be74e78e87fc6d367c3cb31d372329aec2b635002ca2e','15f4f9eb55ff5d2b8efb40a57193f253470889b1fb2f532f02b66d236bc902bf','7b39e441679ed6d00705070a04888baa60ef8e27214f7399c25f478f6dee965a'); +INSERT INTO blocks VALUES(310346,'0635503844de474dd694ecbcfb93e578268f77a80230a29986dfa7eeade15b16',310346000,NULL,NULL,'3244eed1df8ec4ae0ddb04f9f6e59e54244ca3df10dc21fc89c99c74ba734781','58faa47bcd277d0d52d39a46473882adc797797cf2c30967418fb4ae832dc21d','ad6302d6a1c866a6a9f12e0b83dc354194d9a3c89d69dc729ffa323ddb44dbbd'); +INSERT INTO blocks VALUES(310347,'f3f6b7e7a27c8da4318f9f2f694f37aaa9255bbdad260cb46f319a4755a1a84d',310347000,NULL,NULL,'6fd1802c269750b69ec04df457d47cd6b44c261340ebd5b4da61f06ede6aa166','716162f3fea6641e6ac697eb11880c5b39903de4ab30fa24e899e363d5c1d9cd','65567d45e29c2768dd001d35c4e5cdd397a0793fb4ac525243d6030e927585c3'); +INSERT INTO blocks VALUES(310348,'c912af0d57982701bcda4293ad1ff3456299fd9e4a1da939d8d94bcb86634412',310348000,NULL,NULL,'668330e80a23f499c0e91b01c4c51aab393813b840f81b6b672611e391699faf','8c169d593d4c922ef7d3f530f6de4da37c01716f19ea19b48b122a6135f3e293','c102b403d780f0ce4a1e408f7053c9e641b3a4281cbde5da86175521eaa9156c'); +INSERT INTO blocks VALUES(310349,'ca911c788add2e16726f4e194137f595823092482e48ff8dd3bdbe56c203523c',310349000,NULL,NULL,'32b36035ac1684e93126657ecd9711feb689672f64cceb03d220a8089dfacf12','8d54849ce08f65fd3dd06baf845e5a3132b84c960e6f316c4bbbbe5a3d2b7b01','a3c93a080c7d4ac05b8b780f333697a6ac142bde91cb0886e91792fb8c4c5299'); +INSERT INTO blocks VALUES(310350,'c20d54368c4e558c44e2fbaa0765d3aecc8c9f01d456e3ff219508b5d06bd69d',310350000,NULL,NULL,'dbe70bf3b8e4b74ac25c1b6737b6a760e6a06a4f96ee83a5ca728c8501d4af05','1e46f66542896fa2ff6048472d49feed3065a6fffaad639da03027b00ce377bf','5f1cfcce7130342905d43fb129f7df47fb21588952b9bd48e6b75023c36c2ea8'); +INSERT INTO blocks VALUES(310351,'656bd69a59329dbea94b8b22cfdaaec8de9ab50204868f006494d78e7f88e26f',310351000,NULL,NULL,'89bb7ea865a221a3646f78ea774a7cf1e15e8d65b85ddcfbdf87773145904151','f99c452388cd3d8aa59f7c75fa06770a116b5f69263dddbb7b5fdcffc7ffc524','1279a7460cb68e822281a28fd27b82ec91f2559917c8c0f8bcebfbd26a6ca8a1'); +INSERT INTO blocks VALUES(310352,'fb97d2f766a23acb9644fef833e0257fdb74546e50d9e2303cf88d2e82b71a50',310352000,NULL,NULL,'fdbf27d576a72b046776be0e5c0a91d060619778aadef3df1d30f1a7785a0fdb','1d2f391bb7990954e14c69c9429b54b9f5a88791ec4b2fba2facb464152417f4','06a43a7b50b2627b5e2b6b8bf3fdcac969f9ae1f5a5d2f59afd946258c5b7f63'); +INSERT INTO blocks VALUES(310353,'2d3e451f189fc2f29704b1b09820278dd1eeb347fef11352d7a680c9aecc13b8',310353000,NULL,NULL,'73429d323376209447edc6d2ddbfd51f0bcde21736ea6dad61dc96b6984a1fa1','8ad1adee999dd851e81025b31920d1f0f66c1e56433e7b2b110d03cfccd7a141','09302136df1d739ec72b8916d095a402633cd2e7bf1b08d626620ec1c433fe11'); +INSERT INTO blocks VALUES(310354,'437d9635e1702247e0d9330347cc6e339e3678be89a760ba9bf79dd2cd8803e0',310354000,NULL,NULL,'b2bbcbb6a7db94b2a5681c6e380ac13480bb49c29a3fbb3c7c1eb740f70f8324','8d6870632f2336908828a72e7445c9d8ecbec3d420b234dad2b17ae06c0a709c','d6f68866f299e8abb809852ea45334c2875b860d3f69ff428516cb41dc79cef8'); +INSERT INTO blocks VALUES(310355,'ea80897a4f9167bfc775e4e43840d9ea6f839f3571c7ab4433f1e082f4bbe37d',310355000,NULL,NULL,'ccbd3ea41587c3c1d92f355979b49c5340a0a90060f07c228c22d6ff76b25579','8dfb02eb42bf84a085d150a0dc3fb2effa201594da47639e8f77fea0a7084eea','1477f22dd0bfedc575c5774665bf058aee34f74a7c086c52f26f8b979ad241f3'); +INSERT INTO blocks VALUES(310356,'68088305f7eba74c1d50458e5e5ca5a849f0b4a4e9935709d8ee56877b1b55c4',310356000,NULL,NULL,'06a95d39e110e40ba318320d50984096cbec88c680f426f721154555efc2561f','3516c2e9b180883b3526ee0a028c6d22b2a8a028b896423eb71db31cc284d566','5518645d03a16c710c7066cff85bb653fde14b162830a46558d783c827ae9ab1'); +INSERT INTO blocks VALUES(310357,'4572f7f4ad467ef78212e9e08fa2ce3f01f2acc28c0b8ca9d1479380726bab1f',310357000,NULL,NULL,'443f947352e853367d1c10d25771c7d78eec22fac19c5bace6f96b8f949e264b','af4dd2cd8426ceb8c7dacc24b30d4d48e1152340a5a81f32b745878558969f4a','92f7ec2d864b302597e888a48c212fff3c5360a16064fe26c42274e33ba03995'); +INSERT INTO blocks VALUES(310358,'d5eae5513f1264d00d8c83fe9271e984774526d89b03ecd78d62d4d95ec1dea6',310358000,NULL,NULL,'c2cd71dc9e7d5ccb5d5e9d6b55c47010c9db6a573d01820da1c8960970fd571f','635f90dc6b705e3e5928101d6ffc32a247088fd8965e0e372358b35ba822df31','338eee7d4c6986cf687d6f152c4453c4c579c2c9c4a9f052fea9b4ecdf71f004'); +INSERT INTO blocks VALUES(310359,'4fa301160e7e0be18a33065475b1511e859475f390133857a803de0692a9b74f',310359000,NULL,NULL,'5b7646bafc6b11eb1554ea1e02221883043b435ae973c3678505fa2128aadfb7','eeec8a86b03a3973bdf5215e1789277ab7aa4c47f4e9f05a44a312c01e0ccf0d','be11e8f0204e857b8475d9b6bc62135a8d6ed5a10561e834b2c89c2de87c78fd'); +INSERT INTO blocks VALUES(310360,'cc852c3c20dbb58466f9a3c9f6df59ef1c3584f849272e100823a95b7a3c79f0',310360000,NULL,NULL,'b0e937568a47c244e3b29cfb3a5e7196c171acc1565c44020345c715b7774658','32f4991609b3d8cbddbee2fe5e7aff49e7d4f5334ba0d283893733f19d3f448b','1c0b61ff88ef19a2040963d71644c3197f3d76cafbd756738e5f9963d3cbbbf7'); +INSERT INTO blocks VALUES(310361,'636110c0af5c76ada1a19fa5cd012e3ee796723f8a7b3a5457d8cb81d6c57019',310361000,NULL,NULL,'fd5b67bb571f4e9c0c37c6a5c9e1181133c301e05f4f97a41bd827eda7a6db3c','4ad763ba9a9de4e6fd2f48d1342b9c2b4f87224fe591cddcf0ea3aab19187ab3','354b075b0db70c64bc9a801de34abe50b41b3b255cf127df30713217b51d46c4'); +INSERT INTO blocks VALUES(310362,'6199591a598e9b2159adb828ab26d48c37c26b784f8467a6bb55d51d7b6390f2',310362000,NULL,NULL,'38382cc090b349809c4798c3c83b485f8ff682fd5b5b2568357d62ef30f7c046','2eed1cb542570837b9e34c5ef140428d09c132369e5073061d9b1580338fad97','66632a4c85b049bbd4b30f4c8e48e0d4c5378351b824e4243afa6eb39d10a3c7'); +INSERT INTO blocks VALUES(310363,'a31967b730f72da6ad20f563df18c081c13e3537ba7ea5ab5d01db40e02647e6',310363000,NULL,NULL,'82911a691937d87629bc14e5294f68a25ff2fc6512370db032834b85a623d5c3','baa8c23f6f8bbed9640382166a4fa59eba156a3c94b645334124a57ad886136d','1ab5f20d280349d31350d6efe24df8d820920a4c6da61ca9c374971267ed2f90'); +INSERT INTO blocks VALUES(310364,'67025b6f69e33546f3309b229ea1ae22ed12b0544b48e202f5387e08d13be0c9',310364000,NULL,NULL,'cc362ce4c2142e539057430e2dd6402b985c62fefa4e4ad33afe1305f53af8a4','973037f8124687eaeba2e9f3e301cb20b9370bef4acd3f2c86eedf595b792b73','c336a6582c3e9f513b8fb92d1924fedc8e8248a40ca2297c3f644c786f09a23d'); +INSERT INTO blocks VALUES(310365,'b65b578ed93a85ea5f5005ec957765e2d41e741480adde6968315fe09784c409',310365000,NULL,NULL,'49e41f95f081b70e3f540fa22864cc4f229ceabfdfd54f2da112f1fd35466617','aa3e39acb1dc1a955f579a9a40961a80319c5dd484ddf322ca6edc6b67cec932','859b3db53c1b503093a1825596d9fb0cf381356c2bc2966912b7d52409c15425'); +INSERT INTO blocks VALUES(310366,'a7843440b110ab26327672e3d65125a1b9efd838671422b6ede6c85890352440',310366000,NULL,NULL,'687c5f3e381d164499126ff90785e3635c825db3808267d4de2ec0e37cc7c597','610fbd2d8f4dad57d7efca0772534da791785cb2c45de1906a9b282792faa9f8','4b0340b110d388f39e8d25e0ea18a032d942e3c6d0c3c4f152978c7e794cfcfe'); +INSERT INTO blocks VALUES(310367,'326c7e51165800a892b48909d105ff5ea572ff408d56d1623ad66d3dfeeb4f47',310367000,NULL,NULL,'d7fe976a4b2cca2e23d082a703ef4f4739e110ce1e0a373e76064f6186856ff7','531453a70483611396ce5bacc17e22125b1b61f61d56c110fb72a929b95deb9a','4185f8a927cb386021808e33c719085d83559fa49d2cfd50478e4a6abc60cff4'); +INSERT INTO blocks VALUES(310368,'f7bfee2feb32c2bfd998dc0f6bff5e5994a3131808b912d692c3089528b4e006',310368000,NULL,NULL,'97f0a0f9e6f355dd179aa2941412decc1b0a06de0dc14dce8538aed6e35d41ba','289eb338000f45b4d7e143a08a490fbee8d307eb0975f5a2ed62586c2f625e0e','f1b8d32e9dc5312846a643fff3e9c541adf9f04b6615719a107900893e587571'); +INSERT INTO blocks VALUES(310369,'0f836b76eb06019a6bb01776e80bc10dac9fb77002262c80d6683fd42dbfc8da',310369000,NULL,NULL,'1b5d9ec9bd918c84a5f9b6882c94a739cc1ad1362dedfbdf7b2009fd42251d66','a9122294ce4ccd606d3fa1787fb9c44f25811fb2fe486c9d58b407b5da50dd8b','835c5bf57865bb24574658e88601e5cab0b0756267ea238606d36e3c2c307cd5'); +INSERT INTO blocks VALUES(310370,'9eb8f1f6cc0ed3d2a77c5b2c66965150c8ceb26d357b9844e19674d8221fef67',310370000,NULL,NULL,'578b039ed2b9a25e1c75ad9a5242c5962d6645616dc53fb08386602e40f14486','d61d958644caab04dc236d04d3654abeb1fd625dd7b9cdc01ca5caeae9b41f58','c45d36d5dc7493948bc398122180528f2dd6410b81c3f8018fffdbbdb6629052'); +INSERT INTO blocks VALUES(310371,'7404cb31a39887a9841c2c27309d8c50b88748ed5fa8a3e5ba4cc3fc18310154',310371000,NULL,NULL,'473d21b8218a2b02f7fa0d5daf114fa988e4a3d97c33aebe97e51a8d22252492','8abb7bf5c66895fd9e9de804ed8e35b3b1d12054a4e45ab3df6cd41194d836e6','c3828b3db02795c32d1ac0a662db515aa5c2fd31e7ac88c7aa56a0d96dd10d8a'); +INSERT INTO blocks VALUES(310372,'d3a790f6f5f85e2662a9d5fcd94a38bfe9f318ffd695f4770b6ea0770e1ae18d',310372000,NULL,NULL,'0c306eb25702d190ce32cac521b1fac9b8a7cbcf441fd74be8de2e002b4ce14c','ad3d52b024093fcc5b88b7a3176c4117468f0f675fd9e908c727ebedc5e2eff3','6fa5363d267fcf795706c98e1ad3dd41104b0d042a1659b6fad1e8550252768e'); +INSERT INTO blocks VALUES(310373,'c192bec419937220c2705ce8a260ba0922940af116e10a2bc9db94f7497cf9c0',310373000,NULL,NULL,'48d14b17f9074ce1f75ab32581e8f6fe7d518ebd669af6508e5d986d97c92b3d','b60270d322c86c6452289e0968be64c2217ebeec34944e43aef908e119f838ea','f7fdd5c106deff5cb8571e040998a22b1d610dc4502256b978ddcf3faef08aba'); +INSERT INTO blocks VALUES(310374,'f541273d293a084509916c10aec0de40092c7695888ec7510f23e0c7bb405f8e',310374000,NULL,NULL,'aee93917f6fe0046069aaff48d5d1875a9c4451acec6562a377428bfb1184cd4','46decb141683d0bf4c52e4f756b955c923bfb3995025d0f19a8ef7cac1dd2b60','ef6c754eafd7db3b6b5f56dcc52075e2fdfb41014e14f43448d07cc2a1d0a84c'); +INSERT INTO blocks VALUES(310375,'da666e1886212e20c154aba9d6b617e471106ddc9b8c8a28e9860baf82a17458',310375000,NULL,NULL,'2b0d74911bba5c9530b69c04fec512fe4c5df25458e5237db884586a221fa30b','9349961eeb706cf083d6ef1fff69cc871def662dd23fd7854135c1b0dc1a78fb','f1f1ec5110fdb670657e283a210960b6c7a6a9dc945d2ab846259e32126e4af0'); +INSERT INTO blocks VALUES(310376,'5dc483d7d1697eb823cba64bb8d6c0aded59d00ea37067de0caeebf3ea4ea7dc',310376000,NULL,NULL,'a6f84afe2845ba2fa4e5e7377b1d4474dbde6dfc9c4bed050e6d10cc80025e82','a5f607569f31beb9ba2a0496a9eb2eb40a6926df4b174161b73f53719ad04767','3bb9bcb2938ac7ace27013dbdd6f3cf621dd4bddf422d34aab1c7bb30934a615'); +INSERT INTO blocks VALUES(310377,'f8d1cac1fef3fa6e7ad1c44ff6ae2c6920985bad74e77a6868612ee81f16b0b3',310377000,NULL,NULL,'e006e13691719e4fce65e72c692d3affeae8ae465de2a3b285a1bed4eb518a70','4dd3a5ae07e934557005871e7c72351077b1092580eadda11fcd3501bb000579','a10b4025e5802ad98bb0fb309cff6fe8739b273be7bb710dd27f81f37c06a25b'); +INSERT INTO blocks VALUES(310378,'fec994dd24e213aa78f166ca315c90cb74ee871295a252723dd269c13fc614ce',310378000,NULL,NULL,'607ffa4928577b82f275750353fcecc2e50098d227f18bb8ea95ac2bbb10eea6','49533405fa36a389e0d8cac965389e23eb421da5833d625d160f75fa9defdeab','bffc7ece240ef47dfd29d28e11882b9e87114c5950f2e1a7f7b56e849d1b8980'); +INSERT INTO blocks VALUES(310379,'d86cdb36616976eafb054477058de5670a02194f3ee27911df1822ff1c26f19c',310379000,NULL,NULL,'9f17e8d662dbbfc12a56dc36172b3154bc9b05a87885d1411826481e1ca4f6ea','4514a78a69d0987ff60976334f70d0533a1c5726099ae73d93be187a57f25f44','66f382068ec1276e01a17254f1631aa531e9ee931dd799a40a2e85ebecbc92df'); +INSERT INTO blocks VALUES(310380,'292dba1b887326f0719fe00caf9863afc613fc1643e041ba7678a325cf2b6aae',310380000,NULL,NULL,'d617e30e1a32ed1cf269a190fd4c843755413492827546a0b3ed14278f817532','77038e6b75820a64c9fc9530b3d2c8411cc4da649fc69a3d235424c2dd5500c5','ef13172b58bc99c618ebed517a661a1f922b092f7843d6daadbfcd150dfb42f6'); +INSERT INTO blocks VALUES(310381,'6726e0171d41e8b03e8c7a245ef69477b44506b651efe999e892e1e6d9d4cf38',310381000,NULL,NULL,'8af8d819f02927de4a74d3d37dcecf6e5124d53be37603764b1b1adad13b0d7a','48b66540bea91d2c2d216d5c13e88dfd9c1f1a36cae2ec721253034041e63af6','7e0ef6dd294b793ae92490426381ca311e71aa3d3137698dde64c71d9f00916e'); +INSERT INTO blocks VALUES(310382,'0be33004c34938cedd0901b03c95e55d91590aa2fec6c5f6e44aec5366a0e7d8',310382000,NULL,NULL,'809d5c20335bbefe8e4f3552e24b24d96f6ee4ab12f3bfc9e74898371cf69797','159e8434abde33d3a97a4e7701cafec884a6d0d7ad78852ee7db449a18c5e23f','75a00de354e330048b6cd964582024a1c99f9df7d33341ed70f81b7b754e5b6c'); +INSERT INTO blocks VALUES(310383,'992ff9a3b2f4e303854514d4cad554ff333c1f3f84961aa5a6b570af44a74508',310383000,NULL,NULL,'d8ec301994a5333f8efe7cc547a833d26c6766deb0b39c4fc18d1bdb470ee903','aecbe5619daf47a60ab2765502725a284224c0985e91993b212c50c3449d197a','72ac00be3c14c6de8d99b78bba29f897ad7f5f08ebb012c48cd46fdb771ff759'); +INSERT INTO blocks VALUES(310384,'d518c696796401d77956d878cbdc247e207f03198eabc2749d61ebeadee87e5e',310384000,NULL,NULL,'fe47a03993cb9079a6e72810552d631fe838bcfaba3b34c73c9948af77266df2','e69bc390fb0a624f6d33512a55e9732857afee1b114df97761186ac648f63111','1cee6067a92522fe72bcf2bd3344447cd46aa3be97d2234a2780e6a6869f1788'); +INSERT INTO blocks VALUES(310385,'2aa6a491a03a1a16adbc5f5e795c97ec338345cfdf10ff711ffb7ac3a0e26e28',310385000,NULL,NULL,'6114e98e0004cf0f9472fce6bfa6bb99ae38e57214c8b134f30da1d62399f6ef','d3e6a4df9ff34518f8fe243dc87c981aef0cc7b89ff9ca466269a19493aeaecb','5cf497d09ec075e85b4b6e575e25e3ddfbff53680912d6089f68ba5bc6488850'); +INSERT INTO blocks VALUES(310386,'9d19a754b48a180fd5ebb0ae63e96fa9f4a67e475aeefa41f8f4f8420e677eda',310386000,NULL,NULL,'4c52d59ade1bd2068e3b75b8b3cd1d23c6a94b6437f7966d10f5a07bf8f630ff','1c250ef18892c191c535562bb35bb1c8bd4f515ab00bc4cf0b564436b2bd33ee','26be3bcdd7f49c67fc010fa423920d131fe9a6760327a5ef9cd9bdb75d44c737'); +INSERT INTO blocks VALUES(310387,'b4cac00f59c626206e193575b3ba9bfddd83bbfc374ebeb2838acd25e34a6c2b',310387000,NULL,NULL,'327e9a842233568888998ec1456b6f78c093b47639707d44e6336b2bc18d955f','d7de64dd98a65b478518d909b1f0f2860f6a0b8e5e530f23ee55caffbaf1a545','b38ef8d93be3303fcd4f9c5651dcf53d2a4de77c31e442a01c91e3f79ce05303'); +INSERT INTO blocks VALUES(310388,'41a04637694ea47a57b76fb52d3e8cfe67ee28e3e8744218f652166abe833284',310388000,NULL,NULL,'6efaab188a5cae39ef547a804f61bcbc2be4881e0569f49d7622b407f6860401','4916559fdc472a474aa4c652c85b0db143744daed0d98d7f2fddd1dba32be88e','9479b126e03a3aebf28ea4f6c3df40587d1b6a5933b0223d5a699f56925d4822'); +INSERT INTO blocks VALUES(310389,'3ec95ae011161c6752f308d28bde892b2846e96a96de164e5f3394744d0aa607',310389000,NULL,NULL,'89c686d5d973691a7281268c867f837b86b140a05f16f12302a3cdeb3b6a0ee9','b2e0098e42f81a8a9369d510b17be67446feb3e5da1b1eb37acd9f0b33b29fce','12e3eeb2b9c2627e5e66fef5b03d31032699a3b23f2e476d17ddfeaee93982b7'); +INSERT INTO blocks VALUES(310390,'f05a916c6be28909fa19d176e0232f704d8108f73083dded5365d05b306ddf1a',310390000,NULL,NULL,'2c4eceebb94d0c7a7702478d9547d1afbb42ab5ecb5ae6271a3f69942bd77e50','8e3a48b160083860b0928dd97150477980da9097945c4ae3ee144c505f131b86','cff919c4f794ddf47465bf4575e83cd862f9d213dec813a6a11c1b46e21c7969'); +INSERT INTO blocks VALUES(310391,'fc26112b7fdd8aaf333645607dabc9781eac067d4468d63bb46628623e122952',310391000,NULL,NULL,'06397124ee2a1bcb9104899469394855d4ecccd1a08626d650bdf3169e227831','b1b4f0fc9ba54527ea0902192a61158bb5383f1959f187915c07f88bdf11caaa','ea8ae8e50a84b097600f499085d1f1dc3f5598714403bbc839015108ab92ab80'); +INSERT INTO blocks VALUES(310392,'f7022ecab2f2179c398580460f50c643b10d4b6869e5519db6ef5d5a27d84a1d',310392000,NULL,NULL,'44974b5fec0be3a2958d39f2d6824a2e82733f873a404ec9887178c620843149','97a039be078662ac5b1a275d5618224c1a90886c79b9fb651dfcb14481da8e8a','434c2762a4ddef0ebf90a96e1355fbb43a75b0fe86d70f0f8d7fedcaafb1aa0e'); +INSERT INTO blocks VALUES(310393,'e6aeef89ab079721e7eae02f7b197acfb37c2de587d35a5cf4dd1e3c54d68308',310393000,NULL,NULL,'1863677c0e552344607b1af3eb8ef8f4fc6b2a73d63eebb3e9928302c887970f','c488dd61c64182cdc779e96a2b312463d42ff9829d1d518c8a9daa1a4cb26de3','5cb6a0293dfd854f3a45ce2e5c7808997800c9e4e70f9c5025b8217d5785a1b7'); +INSERT INTO blocks VALUES(310394,'2a944743c3beb3bf1b530bd6a210682a0a0e9b0e6a9ff938d9be856236779a6f',310394000,NULL,NULL,'3838ba6e84376ed8dffb3fee9b5928d903952c0d8a8ad41ab63a9651a1c8c770','e329db30a579327664d135ce9c3661a259378dcc12e179232599e0186c7bfe91','028f524a10339795063cbd61648fbee24579bdfb9b0135a01756bbfc9efa13db'); +INSERT INTO blocks VALUES(310395,'19eb891ce70b82db2f2745e1d60e0cf445363aaff4e96335f9014d92312d20e4',310395000,NULL,NULL,'872367d61f81cddeb555da5f9c4f46a8ac57c24629ab073094e407a4555a8555','2234b36f4187eb0da9ed6a633aa2e15075d5efb23f154963885e7fd42495e4a5','9b06b7d54cfe8e8946cb98fa4ffed469133dfc5ec24043b5874bfeb029bcd2a4'); +INSERT INTO blocks VALUES(310396,'aea407729ac8d8e9221efd9d70106d14df6aaf9f2f87dc6f490835a9caadf08e',310396000,NULL,NULL,'b9a9eaaf1cf6cfa4ae5b0f314812a9a2346209da0b7ce57e16010d2a01c0092a','25946162b9af068438633980c75eaf9e508144f603f7a913de56cc11a7a482f6','d95291b9e836c797f5d30a8ca7dc29eaa8e6c95072c55625e3bf2a61cccb8d47'); +INSERT INTO blocks VALUES(310397,'7c429e56a19e884a8a77a759b52334a4b79404081b976270114043ba94d7985c',310397000,NULL,NULL,'b61f36bcc934a18fdccf7806d41482684ca129801d0b9ce7815dcd488fc49a66','e697fb2f445f03a1d895b904be58a554af4c26ed74a65eb0e52c98e490efbd44','bc2f21cd5a3dff3b3352b5436a9716b91ffcc04aa5a3575446f41412ceaaea32'); +INSERT INTO blocks VALUES(310398,'55c046db86dee1d63c0e46e6df79b5b77dfd4ab2ff5da79e6360ce77dd98335e',310398000,NULL,NULL,'9446476e123e5dd354682c60591cab8b712c30df9080dde756246eef45e21df5','0d20ba449b95f7d128c8b78ef2a37ec390e6177b2041a2b035a72cb8e6062ba9','e1849c27b605edd12ec6b429d59bf4cb4c2d084da5b7614ce3b475261bd20dca'); +INSERT INTO blocks VALUES(310399,'765abc449b3127d71ab971e0c2ae69c570284e0c5dacf4c3c07f2e4eca180e7a',310399000,NULL,NULL,'50d288bca09d446f56544fb1ec50d613bdf156488468ac92d433425a3cab0804','82214bf1638d82e5b66919990e24d3960eb02a423bb3f36bcdd730b17267e340','681fffa3659a2a9810247bcfc5defeed11edae487be1a3e6b83dbae44cb3a33a'); +INSERT INTO blocks VALUES(310400,'925bc6f6f45fe2fb2d494e852aaf667d8623e5dae2e92fdffa80f15661f04218',310400000,NULL,NULL,'349a24fd446727bb1793ccf88fc569d20eb680c10e506fc25b281ce6ec3fd7bd','e7ce5e8c9c4160590dcdaba04bc866267a9784f99fe68bebd337da16768e8f18','a1a715b25e361c43222dac45cf437ab128110770242f4f6763b9eb6fa1bc97d1'); +INSERT INTO blocks VALUES(310401,'f7b9af2e2cd16c478eed4a34021f2009944dbc9b757bf8fe4fc03f9d900e0351',310401000,NULL,NULL,'52c06b68cad19608420b73476a73b411d0327382b92bd454cadf1b8616eb17a5','6ff1e13b2110c6ee69e86818bd32bacdffa6f4e91fd2d8c2b09b5db35062be81','56efd387141cfe562ef470b6768e8df8fd05a43781b660a44af2eb325df4d439'); +INSERT INTO blocks VALUES(310402,'1404f1826cd93e1861dd92ca3f3b05c65e8578b88626577a3cbad1e771b96e44',310402000,NULL,NULL,'8bf64213a454c62dd4b0dcd7dfa298da0244a6aa7ae6fff98be6f49d50d259ab','3e776187716a384a84170b2e7dbbb5c152d98535351c1f5b4b00c7bf5ea7ff33','c10cb4ef7d37a4bac14f7fbd84ab133011bedc4c14d8f4aed6ac9180f9dac218'); +INSERT INTO blocks VALUES(310403,'f7426dbd4a0808148b5fc3eb66df4a8ad606c97888c175850f65099286c7581c',310403000,NULL,NULL,'fb2a365372522d1442792cb38e1a4167eda2612ef442c776749097a3d541a827','1fad731787bca55d4102d8d355ccb9625590baaccd0ae63490320efbf5aaf90f','1ef5d5724200d2ecb9b9ab48f2a52aae19752c002bc8c1978a0e041d2baa2c4b'); +INSERT INTO blocks VALUES(310404,'401c327424b39a6d908f1a2f2202208a7893a5bedc2b9aff8e7eda0b64040040',310404000,NULL,NULL,'47f96d798df9cad17667be908ebb063ab9f79d947784a78189d247e626864a5f','10b2cfe8ebe45dac311048b4aa8d15d7c59ae17f5c1a0c132cfb675d893de8d5','3aaac91e9d2c2f1e81c8e8644baed1cf20e4de7e164d46d5c08bb2066af3ad24'); +INSERT INTO blocks VALUES(310405,'4f6928561724e0f6aab2fc40719f591823ca7e57e42d1589a943f8c55400430a',310405000,NULL,NULL,'185780205a9ab241bb0656799fd0d5942c1e3e5854abd1d06573da550b04b096','8cbd52dd97944b34f080d675a51360dafcd38183cb08633e6ea247d2c5074435','2db56935e136754de568e268f25e94ebb5b652299537fd7c153c8cac7728bf58'); +INSERT INTO blocks VALUES(310406,'6784365c24e32a1dd59043f89283c7f4ac8ceb3ef75310414ded9903a9967b97',310406000,NULL,NULL,'367b9de2313c5f7fce0c2dc2b4a8e2bc059f6881bc924f7315e8e2ca61728a59','0d104d4ce44d11e581f51e5a33ec9e35a994b2b992842b173fb8a2756412b4b2','17c2e3cb7f244ab92d9e4e3e64232a82a24a51cd935d6b66617d2f581ac827dc'); +INSERT INTO blocks VALUES(310407,'84396eb206e0ec366059d9e60aefdb381bca5082d58bffb3d2a7e7b6227fc01e',310407000,NULL,NULL,'2bdbd79575aa2ff52ba0cce3fc1a1aac6120d598a8ab0ff3925e1395e6cad2d1','a3407057dc90723c90ed8f2df5af7840e50daa4c4bdedd47181c17a1e8563934','e6c45352ecb23436824969e613f6088e929aab8a5917b7f8362439a376ec5cdf'); +INSERT INTO blocks VALUES(310408,'4827c178805e2abae5cb6625605623b3260622b364b7b6be455060deaaec2cda',310408000,NULL,NULL,'fcd0edef8c4ae9517a6e793a2742c598de38c122829b7a7aa265310417ac92c3','3ee1e7949bdb395a4e481f94344fccb2781abcb3f5d1fea2bbadb9de9228a426','f92b895eb0d82ccbb18a0c9498ea54042217e563b78072d8d32ffd17ea64a0c2'); +INSERT INTO blocks VALUES(310409,'01a719656ad1140e975b2bdc8eebb1e7395905fd814b30690ab0a7abd4f76bba',310409000,NULL,NULL,'5b663c40873af21ebc721f2689e2c57a2c787fff579c58f033bba75910a64837','68fbf3a110ed24946d1594f5a4de1dae9c4b6f0394188a71ab89996e9fb4e55b','d8d2e188e49a7055723777cf9226e033ec1eb1b706461d3655336d380a7c18a4'); +INSERT INTO blocks VALUES(310410,'247a0070ac1ab6a3bd3ec5e73f802d9fbdcfa7ee562eaeeb21193f487ec4d348',310410000,NULL,NULL,'93c5a33931b2a33933bc286d6987b34730c0677460e4875d5c032ae86c2e01f0','bd755bf0718d5a0423ec41a8ac84b1554751ff8f0a3f63d87e7e0f58aaa31008','6c4ce5cabb1c84cabf3d8e1b4273091a6e8cd0d4de36121aa95d82deb982dfb0'); +INSERT INTO blocks VALUES(310411,'26cae3289bb171773e9e876faa3e45f0ccc992380bb4d00c3a01d087ef537ae2',310411000,NULL,NULL,'8d98498f89619a2e334e9ac69bf8ff37251af6431d9bb6d1ea8bbc404c5e560d','103563dcfc7b9f149b6efdad7cae17b090d4a8232fd4c37fac7bcf942d784b55','b44cecf6daa815b12a6edfc41bd743bcc378f104ead7ff4ea9b970921bf7adc2'); +INSERT INTO blocks VALUES(310412,'ab84ad5a3df5cfdce9f90b8d251eb6f68b55e6976a980de6de5bcda148b0cd20',310412000,NULL,NULL,'a16a650c4b63ed783e7229980be1177da867c188a5039ed5c58b9717f6ccf634','4daa6f0799529346ba4ee87e2aed1450447921dfa92e785378fae39c234a7c8f','9760454574e345bbbdc638dd0c5cb7994d8a05c1793c52caa1094684c6805ae7'); +INSERT INTO blocks VALUES(310413,'21c33c9fd432343b549f0036c3620754565c3ad99f19f91f4e42344f10ec79bf',310413000,NULL,NULL,'768577c1a7c2cf2cc19cd8dbe823f1bdb8a222daee4c7ac7b5ead6633040c283','7ae9815341dccd2d1bff8dbcfdbcce4e52b4aac8f2fdd421348ed9f44cd19e38','dbada9f8d05453ce6de9c7a471e16ae9457d3312ece8ab151103d799ec905e06'); +INSERT INTO blocks VALUES(310414,'8cff03c07fd2a899c3bcf6ac93e05840e00de3133da14a413e9807304db854b6',310414000,NULL,NULL,'906c491f164877c31002da41233c237d0d4a945a0072406a7b7d13df74be7eec','807cd64b4d8ee3d91a5cbc651e42feeacd5248b6572310472743ca71a9f24621','9a3672293563dda8518404b36b5e38eaf8abdeed23921264722506e50a815b89'); +INSERT INTO blocks VALUES(310415,'dd0facbd37cca09870f6054d95710d5d97528ed3d1faf2557914b61a1fc9c1cc',310415000,NULL,NULL,'d27f99b4a67dfc910d3b932f97b7299779f245e95f871140d3c90f13cc6e506e','67fe947c260b3d8748887e94f68c3725664bb6dbd72187e9312ee48a42770ec3','c661a0a521e536d8fe187032daaca281feb2bc495660209cd80137f4bccd85a7'); +INSERT INTO blocks VALUES(310416,'7302158055327843ded75203f7cf9320c8719b9d1a044207d2a97f09791a5b6b',310416000,NULL,NULL,'90fcd04c508a9821e0ba0ed36cd7cfadd1d3c95116e3f52ad69f98d3d14de571','1041a17c5c146181a56da6ef17386814299be8a22c76a2b2f8a4a2768b2b531c','24f1065ce8aaf24c4431f4f7396be8d6992856cde19b185d6b7029e269cdd66b'); +INSERT INTO blocks VALUES(310417,'2fef6d72654cbd4ea08e0989c18c32f2fe22de70a4c2d863c1778086b0449002',310417000,NULL,NULL,'19cbb26c6d24df5b110a5aae9b53a911a61b2086dde926273a1b0f66c1049e6b','920154e272608daa3c501588cf0eee50c2c45a385d30f42711657ae4a6de3bf5','627f60e7d72b69de8253d8b20819f2160ece68d141fee6302650446704a56c7f'); +INSERT INTO blocks VALUES(310418,'fc27f87607fd57cb02ce54d83cec184cf7d196738f52a8eb9c91b1ea7d071509',310418000,NULL,NULL,'2dc971d2db4e92e2d5dcef124bf9cdad33c41a71d6ae3db80297cb2257911f0d','290826e9c72e49636370d0dad56ba1c2c9209d888b993e030838f84300c0225a','9c7c7dfc3f93d0e139663e97b4521d548a430a3431b599f32b4aabe177184041'); +INSERT INTO blocks VALUES(310419,'9df404f5ce813fe6eb0541203c108bc7a0a2bac341a69d607c6641c140e21c8e',310419000,NULL,NULL,'7ad2bf141622a0db4b27b1f4dab4857d1595e3f746a4113992850a680ebf1f37','d06653b493d120dd288637d530cd3f6efa1c8f5c252bb275572c1948ff0f3539','0097a8f5a9c329605e119fc5d665ce1fe52456e9ea117447df0f86e42bd8e93e'); +INSERT INTO blocks VALUES(310420,'138b3f1773159c0dd265a2d32dd2141202d174c2e52a4aeac3588224a3558372',310420000,NULL,NULL,'3602b26268d1bd3fc5f08f170e9767ff07c91f6976a1c342dc6b24f7ee98c509','ae8e61a57232c10bd15c655bb8c76007dcef394ba64d1619157ca58990e18c25','91b6c48a5b950cce7df1ceae7fef3223780bca655a780eaa96c13060b272be2f'); +INSERT INTO blocks VALUES(310421,'71fe2b0e02c5cad8588636016483ddd97a4ef0737283b5fd4ab6ea5dc5c56b9a',310421000,NULL,NULL,'1c1facfa3852b33c173a08d06450335a2b230541c60973a154e8dd864f3c3c8b','01bfd609f878bb6149779f6377d7868d5b7fa3b831f68cd757967b982cd09ad4','9a2114e704bf99c97717e262ccd54227704cb49ef71ab6e71d381cc46decc282'); +INSERT INTO blocks VALUES(310422,'cd40260541b9ed20abaac53b8f601d01cd972c34f28d91718854f1f3a4026158',310422000,NULL,NULL,'e788123aefd1129554fa2c166dbd06ce68f913730183ca73cf248c1f5284eba4','6577ad9a9e3889fb5eeac7fc9039af8d4537a8fc28b4a9de85e230f5d9da3583','e74e0b7e58d9c7a60166cbbf4e38e259e3b6e7b48975500f82273d5ae81abe28'); +INSERT INTO blocks VALUES(310423,'6ca0d6d246108b2df3de62a4dd454ff940e1945f194ba72566089f98ad72f4db',310423000,NULL,NULL,'ad445e5351af8739b2f74cbba8b44201c20ab55ad1db064402614fb97f35c375','dd7b66518e8ec22359df2d8ad4c0349fe4ab3a74620aaf2ef4bdc93a4c7e2d92','7b38a59b442521d976f66463d51a14f8c7c4e4abe8fed61ab6118bbe9cd119a3'); +INSERT INTO blocks VALUES(310424,'ed42fe6896e4ba9ded6ea352a1e7e02f3d786bfc9379780daba4e7aa049668ad',310424000,NULL,NULL,'e89872ed802fe4421844882958fe6384cf21a85a6dcf10db761e2bb4a77ed24e','bb05836e569bc4c85141c5b4d2832efa5a83ad519260e96d92f6ee16fe4a0c80','fff650f3d50508af819648d8d5620424fbac9b14993726e324cc2fb8e2483932'); +INSERT INTO blocks VALUES(310425,'73f4be91e41a2ccd1c4d836a5cea28aea906ac9ede7773d9cd51dff5936f1ba7',310425000,NULL,NULL,'29e595e9ac7717013cfc8d12255496192234abbddd8a66762a5eaff0c49f3750','2cedf78c9d13e32fde5792907f2ac9f409fe701740533b94ceab6b8087f790b1','1b4b7b19314030e08d4e78e641759198c30a6bf3dd3578bc69d40901e6cb2dcd'); +INSERT INTO blocks VALUES(310426,'9d28065325bb70b8e272f6bee3bc2cd5ea4ea4d36e293075096e204cb53dc415',310426000,NULL,NULL,'9b9509ce7b7bf380f4d030604810a755c71fabe27152be990997a6a9db37ff15','c037094c1947835fceefa8a25a81724d9c88191d5f5199d3a59339bd44407289','132dca78a6ff39667be8793bf902f933e86652c0986f60c88febeb8259c1330c'); +INSERT INTO blocks VALUES(310427,'d08e8bc7035bbf08ec91bf42839eccb3d7e489d68f85a0be426f95709a976a2a',310427000,NULL,NULL,'f1b834e2a380f1b9a78c592acbe78ec809220c620e15f296ab8d7ecea6cd392e','81d439d9d368279e97c8739243efb01c7027be218d831d93127364fa247aed95','54dfe1d9490a585dbc972c0e5160c933d4ccc3807d75226fc8078ece939798e0'); +INSERT INTO blocks VALUES(310428,'2eef4e1784ee12bcb13628f2c0dc7c008db6aaf55930d5de09513425f55658a2',310428000,NULL,NULL,'9e963a17fbc4a5c20d48094f1459959033520f92d7a8bc044b71bbffb8dd173d','002b7ac255f66476970512e50d7ca9cb5da695bea9763bf0379f8d8e6c77a71c','9dd22a33c0c291638ac17155276f5f088626b10ddea1faf2db6b1ee52848fccd'); +INSERT INTO blocks VALUES(310429,'086bfbba799c6d66a39d90a810b8dd6753f2904a48e2c01590845adda214cf8d',310429000,NULL,NULL,'ac8cfd965b9c53f32731a3e0fcdb6df5746d646b02c88b5201a674125e37eed5','4b68376b50d77145ada0ebc72c3eb43b54b4743b538dbc9fa2c914515882dbb7','046e2533300c7a8a1be57d43f5757063eb025ca874bc844fbe0ad7074b392f99'); +INSERT INTO blocks VALUES(310430,'870cf1829f84d1f29c231190205fe2e961738240fc16477c7de24da037763048',310430000,NULL,NULL,'33654e32dfd41ff3a5744b57fd2483a08a2b4729c18ca54c3ac5d95a1bf0ef21','3323c2d01e777caaca3eeaf6f2af8299cee1622589cbaf08f4d245356642d2f2','723df511fb009229f786a5947d3a9f8944b7dbbfe8531955cad2fb2228ff01de'); +INSERT INTO blocks VALUES(310431,'20b72324e40ffc43a49569b560d6245c679e638b9d20404fc1e3386992d63648',310431000,NULL,NULL,'ba8837c811ae87981cc37cb49438d958fa58dfc5a95824040f2fd088465406d1','67aadda0a565f4f5e2786b5007e56e2d10077e87e7d3acc216fe0803365b7b81','d910b858c078ab4be5465ed74fee5706835a9ab61da85953fe148194d72d61bf'); +INSERT INTO blocks VALUES(310432,'c81811aca423aa2ccb3fd717b54a24a990611365c360667687dc723e9208ad93',310432000,NULL,NULL,'7864019cb0cbbcd895154421183d6acb932b1d64441103b913d52469f656655f','c12942ffa02a5f8eaddf3e8e55ad0ea03f29cebd9e822e00c504c162cddd0471','2c4a12bdb6f95bf868d5344e35d3bf5eeca2f5fede2fdc72325b9f008848f32d'); +INSERT INTO blocks VALUES(310433,'997e4a145d638ad3dcdb2865f8b8fd95242cbc4a4359407791f421f129b1d725',310433000,NULL,NULL,'a6da92ef0df7d092de09f2f8d2c99ff65ad74e2a0bd2ea25f8335614372f5279','f0eefd9f81db595b07fe719a41e67e54fdb987e177f05d37040237db3be2a8a5','e2b7edad2ccfa2da39ae9aded4e1e753c7fcea4b2ce66ee6a9186aa539f5ffac'); +INSERT INTO blocks VALUES(310434,'61df9508e53a7fe477f063e0ff7e86fbb0aef80ff2ddedc556236a38f49ac4d8',310434000,NULL,NULL,'e288db28ac6a42822f85fd042f65b57378bc6cc2f8616edfa88143d7b1c9ddcc','173f8b7d2c581e9f088b3fb6e96ad2af597b172717d8f8732fd5857997f0f3d7','4114aadc1b7ac40e097304eb06cee018e683e78a93139e1cf766a4fa69c1af84'); +INSERT INTO blocks VALUES(310435,'f24cf5e1296952a47556ac80a455a2c45da5c0dc2b388b51d235a3f741793d5f',310435000,NULL,NULL,'e87af314e8d7a5f2315ccc559d7c2255c008ba63aff017696201db69344d423f','a4dd5a36f1aeee54e99bb23095b64707fc0b3fde5f64e33135429a100e4ea558','82df70c75951c7fc496789e29dc6e704afa1485b0d171ab3a23b292e1d7c3817'); +INSERT INTO blocks VALUES(310436,'a5e341ba92bdf9b3938691cd3aab87731eba5428bb61a804cecf9178c8da0c19',310436000,NULL,NULL,'82327b93bd3ffcdf797bc2f6470b9c8c5101e54b924ec5f141a31356aa8865c7','c6b0f05a847c30dd3f2d3f8cb7c26a84f1d005b4720a553f9dd8b717185d7f05','df0ac359c8e6a280be790745e166fa9743f1ab2504189c3f1db6c987a5f9cc32'); +INSERT INTO blocks VALUES(310437,'9e18d0ffff2cb464c664cefc76e32d35752c9e639045542a73746f5ec2f3b002',310437000,NULL,NULL,'70d86f9ef8df495474de06b94e1857693c73d9ca3528356b82553a52fdce0dda','809d60564fefff56688616b7fb96378d4eb425e5c8de36b34f0c9070935dac26','6bf8ff2ccd9244261c208d4eefb6ae1a3ceb281103510591a4ed2cb0e295b068'); +INSERT INTO blocks VALUES(310438,'36be4b3470275ff5e23ed4be8f380d6e034eb827ebe9143218d6e4689ea5a9fc',310438000,NULL,NULL,'44b90478e32373205462f0fb212da636b31db6dfb99a2b56923beb97a3a64722','2cf7695a3cea08358af8bd9378b1d6ad6c7223cbac01589042ace6c3cb312196','f80b3cefb4262772d2d31a98d684be690285fc649fccb2478cc686553623183f'); +INSERT INTO blocks VALUES(310439,'4f2449fce22be0edb4d2aefac6f35ce5a47b871623d07c2a8c166363112b2877',310439000,NULL,NULL,'66b791b9deb7d2fc8b075f41d712e300ffa9c46ca9d6f4e7cec6429ca6a65163','41f11f77910c12535fa183e819b36a0dda32eaafe0ae8016e2ce7c23d5c1d67d','b536503ccb5dcf52ccdd1784c56588ce9fa8fdba30a15f5f7ffa992168b7f1ba'); +INSERT INTO blocks VALUES(310440,'89d6bd4cdac1cae08c704490406c41fbc5e1efa6c2d7f161e9175149175ef12a',310440000,NULL,NULL,'5baa10e1659182ba4511f87f08deda38d5de3501c63efd376604cc199140d27c','c6762d7334806b6b62c3cee84f65346d1121493d3bc3f890af174c4abe4710ae','d6fd667b13dcaf27f1781dce1ae42a3bc506f7aee087147071570f96e2820547'); +INSERT INTO blocks VALUES(310441,'2df1dc53d6481a1ce3a6fee51ad4adcce95f702606fee7c43feda4965cf9ee15',310441000,NULL,NULL,'2d490229fead1b15a8350da7bcc83c483dae06e4a2f574c6e8fde248acd449d6','f9fcb16a928c44b86ab2af7407a2ca269455b144694a80927b9213bf8e7ac710','c852a7bf3239f6fdfd6629b1905b1c61c29fb6488db9f364ea5cf219e044af7d'); +INSERT INTO blocks VALUES(310442,'50844c48722edb7681c5d0095c524113415106691e71db34acc44dbc6462bfec',310442000,NULL,NULL,'a3728bacfbdd289b7af24248b9bdacd5643bd5412bb993f5380278631eabb9e9','5d2600af95413d101a9e3d98b2d9f5ea02cf1cf6a28bf7e96870e167638a7be9','6d0290337931ab72bebba228d181d6f556b7c76bc2e922c5ec61e4ecf871b310'); +INSERT INTO blocks VALUES(310443,'edc940455632270b7deda409a3489b19b147be89c4d8f434c284e326b749c79a',310443000,NULL,NULL,'d829da764f6397b22a6b97ef396b363ef2cf071990df2dc9c0d03806db6a46b5','4c595c9a60ccc98d2f6cd75c92c28333174c618337457f9c5ccf362252732081','9037ed8005f44f00795bd3570a81c2f31cc0fe8bfe2db0bbfd023e8a1d675d2a'); +INSERT INTO blocks VALUES(310444,'68c9efab28e78e0ef8d316239612f918408ce66be09e8c03428049a6ee3d32e4',310444000,NULL,NULL,'ef53249bf0f13e1f2073b815c8d8da3ab744b6d277b29ddbc0bd68bd006af34b','5ec6d64106ac1c65cd1dd2129c786aca3cf426c7a1b5f6a966b6684b37755293','5649cf99011bc4058a7d40a21fa722d454ec53218bc6c79d4ceaa7cbe40aeee4'); +INSERT INTO blocks VALUES(310445,'22a2e3896f1c56aefb2d27032a234ea38d93edf2b6331e72e7b4e3952f0234ef',310445000,NULL,NULL,'7e731cda90932b2b4844abdbc3ff60683173104e6c72ed81c65d9a17fd4872dc','6da5abcb8ff2a77c33c7c43061754d9fe8e587157a98e194157faf534d2ee9c6','c2f07f38a0d58f9ed8295020aa7f5091b26abaab8fbbd5cc9e23ecdcac7686b9'); +INSERT INTO blocks VALUES(310446,'e8b0856eff3efce5f5114d6378a4e5c9e69e972825bc55cc00c26954cd1c8837',310446000,NULL,NULL,'db55bac8025e95a567ba984f36dcb09357aa3e9b8706bb594e669b628d4e7204','e8efb64e8f5f867f1c0db99afa9f9a3e3a06d0e1d55e16e9639ca36c3bda5cd4','d484ab73d82954f0ebbfe6018a79467c2de4b87f41e26efcd2154ff3933b40d6'); +INSERT INTO blocks VALUES(310447,'3f4bc894c0bc04ee24ed1e34849af9f719f55df50c8bc36dc059ec5fa0e1c8a8',310447000,NULL,NULL,'5cc4fa447cc291ffcce7be3c4f8fc70041bf8af5c2dd591136d4a449095d2570','026eb6a7315302879ca62afb071da788deb5759eb3de89cf68fec00ec638d9f0','263570b8cb42f88989f78944ef6782d8928b211e65e38db4826e147d1975e0d6'); +INSERT INTO blocks VALUES(310448,'6a6c7c07ba5b579abd81a7e888bd36fc0e02a2bcfb69dbfa061b1b64bfa1bd10',310448000,NULL,NULL,'ce49854f4493c163bc891888f920fbc6dd8855c30870beb757df69b33de52633','e47cc99299a82c9be619633effff5b9cace113215d7f71aa7d2327e69d3ca3bb','fe0d22cefffa3033092b2122771cacbd10bc2b4e767e31095ef70752efd25b20'); +INSERT INTO blocks VALUES(310449,'9e256a436ff8dae9ff77ed4cac4c3bfbbf026681548265a1b62c771d9d8e0779',310449000,NULL,NULL,'84557595cf2067a95924119b8ed5fea114acd9ca1b0df4dbe4ae5181a739b5d1','4e3048f5eeba69570f9ffd86a3573e85bdfb46a92acf60d55c04d41f49f7f870','7449b8f168d7307175f95e972fefcdf7361d0fbc16ffaf485420ba7743ff2e3e'); +INSERT INTO blocks VALUES(310450,'2d9b2ccc3ad3a32910295d7f7f0d0e671b074494adc373fc49aa874d575e36a3',310450000,NULL,NULL,'0e3b252b73fb652f904780da9fc59d1081d712337a9b15cf1a56ea72fbe96c73','c98b9428cf94077169705f3961816f87293eb89bc840167b1ed8ffb074aef48e','15ab3f2d22058eea112c4dee4483020f6231fa771f0ec80ff6ce09bcf4cde4db'); +INSERT INTO blocks VALUES(310451,'55731a82b9b28b1aa82445a9e351c9df3a58420f1c2f6b1c9db1874483277296',310451000,NULL,NULL,'790eccd04e24e5f10f843d63bbdc1538cf1aabb0e8e6c862104be0ef845f603f','3fda9e8b7ebc417311c9f14e61c9dca2e490702c1c796eeb1df156f174d52cb5','7cfb9230fdb172fb72a851fca37631413fa1fe9909919afd87e0d1fba5486b61'); +INSERT INTO blocks VALUES(310452,'016abbaa1163348d8b6bc497cc487880d469f9300374a72ecb793a03d64572aa',310452000,NULL,NULL,'30962129b060b63050fe8f249592587d74cdabc4ebb5680230a280da880c8586','a1bf92fe5ae4df49a6059263dfd3a9ed105ec24ae02cb9127c0408f7330d962c','d5ff30648d54992513772bae35cce89fc17eedd01b6f2709071964bf336482b2'); +INSERT INTO blocks VALUES(310453,'610be2f49623d3fe8c86eacf3620347ed1dc53194bf01e77393b83541ba5d776',310453000,NULL,NULL,'56f4aa1086d8985a00cc295cf9618d976e69ba426b0c3d103bea6b47b58e4355','a81de51b7b56cc68f599e592be22e11c2f0b51ca27c027f13b58f05b2229a8e1','f562ce07f2c525c3b932b6df3b11f12eec505edc119a835388afbaef029d131e'); +INSERT INTO blocks VALUES(310454,'baea6ad71f16d05b37bb30ca881c73bc48fd931f4bf3ac908a28d7681e976ee9',310454000,NULL,NULL,'38d14a206003b812cbaf5f200235dbe12aa6a674e5f3379cb186a781cb5a5654','022e8475ba7e68c75b4a00387ae431b7bdaa4d125dcd1b19d08e9c431d3e6057','b02b5ea4dabd0fb098d218b2b702b5d62c6f7f5ac89fb8b5190fc8fa875347ef'); +INSERT INTO blocks VALUES(310455,'31a375541362b0037245816d50628b0428a28255ff6eddd3dd92ef0262a0a744',310455000,NULL,NULL,'b2ff303a67c05bc12fcdfdb774ea4ddc690434c3371428b3416d38105f265f28','91a1dc2fe8dd56e137b210136966950c79b4badcdf787b4b9fafa7985847192a','3b94c3089f3825dcdd8b9c454cd46471e7c60b5d53f36eff8cde0b238dc8ee8b'); +INSERT INTO blocks VALUES(310456,'5fee45c5019669a46a049142c0c4b6cf382e06127211e822f5f6f7320b6b50fa',310456000,NULL,NULL,'6cc16b442fd7758ed7bae9f50367fa60debdb5d81bffc5abccda044573aeaf15','5125d7f8718a5a26aed1e1db2ce80e8d2eb4d96bbc91277bace52f571b7f8c26','2e6a293b9e8e8bac4a620e9a3d0f419cd1f50e2ec18cd16c57ebdc70a039560e'); +INSERT INTO blocks VALUES(310457,'9ce5a2673739be824552754ce60fd5098cf954729bb18be1078395f0c437cce9',310457000,NULL,NULL,'8fa0401d245b1b1e8b40760a54f331564d8597e242462ec412878e36a9b06800','061dc1962f44d4da9de8ad6bff4d96650058f5d444951e9c808b901db8717c81','f7370b9939b91a6a01d5b78c6cc403f8876403a3c8eddfb37f835a8c9d5fae61'); +INSERT INTO blocks VALUES(310458,'deca40ba154ebc8c6268668b69a447e35ad292db4504d196e8a91abdc5312aac',310458000,NULL,NULL,'520f92700e31b8a35260a280ae11bf8668b0e09d34795a9d88678f2977e19f7c','b0208287d25e4ca6a1856236b4d4c7a3608533f0a47a9c673806d5d3baeb2297','d1a08e98dda783d91d3d76daed6d6d2a05895abf0fdc64e39119c82cd5c51e83'); +INSERT INTO blocks VALUES(310459,'839c15fa5eea10c91851e160a73a6a8ee273a31ab5385fe5bd71920cbc08b565',310459000,NULL,NULL,'d7f728b78228a914b8767a6caeaf2267e9dbd50490a27f6c23bd96060eab8ee0','21a24d787b30434a230cae77e281636855ff40a8fb4aaaad35eb034835f63e97','f391bda91be1e73e5ee84dc4677c81e1aa68bcc41271f9511086b52235385aa0'); +INSERT INTO blocks VALUES(310460,'9b5f351a5c85aaaa737b6a55f20ebf04cafdf36013cdee73c4aaac376ad4562b',310460000,NULL,NULL,'33c2b4c6d22888448a2458ff2ce6a1cfae5e858acae2a57e4cc0232980f8fa4a','2ae25ed250bd603684d0affe8b14af5a1b8d1554beaed08aa8f723cc3c66cf8d','015eb57064249424885086b2e21ac265f183065ce39a0f0d20ea31f8b0de4b95'); +INSERT INTO blocks VALUES(310461,'8131c823f11c22066362517f8c80d93bfc4c3b0a12890bdd51a0e5a043d26b7b',310461000,NULL,NULL,'22426912d3317922912326da552af284677c9b76b6416b6c056668f27ae4f19f','13b7774cf2a5a0f3d65031cd5f9ee498eaeee5c1e0e8ecbd346e0427d847a5c0','3f403c618e9fee553e2b85077520933fbd2c23dfa669044004842bedc53dc483'); +INSERT INTO blocks VALUES(310462,'16f8fad8c21560b9d7f88c3b22293192c24f5264c964d2de303a0c742c27d146',310462000,NULL,NULL,'74225b62e696aaeafbd4d6db40b41081c7493d9cc44984729d8619ff9450ce32','4f23d4da0bbe4b8bb7e00b6b746b4180356013c63f7a6f9b3eee479380b04e4f','c6fd9f875df5d2053cd4dc4a838d827548cfc41765163ac2177446355c265ff9'); +INSERT INTO blocks VALUES(310463,'bf919937d8d1b5d5f421b9f59e5893ecb9e77861c6ab6ffe6d2722f52483bd94',310463000,NULL,NULL,'b970979bfe0d44ae2f21f7d98bdcc4ae37287b93cad9fa51f32a62337ceba0c1','7b9a9095733a9d870b33aef4bb15767c32b012c27b52de8731358178b87bfb50','1d1f317dcc9f9834f7ef177056a75072f351e1a2ac7166a76c62d99be1ef43c6'); +INSERT INTO blocks VALUES(310464,'91f08dec994751a6057753945249e9c11964b98b654704e585d9239462bc6f60',310464000,NULL,NULL,'00007a158b003fcca20c9fcaa8d73a556f0206bc9a7ab3e5c566ea1bda8648cb','28d7eceb69efcc6736dd64c65ed218dae2e8d0e9d4d7284b0572a5d1065a9d52','70533d7e5f618c1d903338eae462e33b04d4a33dda70cfaf7dc5a40a843e5586'); +INSERT INTO blocks VALUES(310465,'5686aaff2718a688b9a69411e237912869699f756c3eb7bf7c3cf2b9e3756b3d',310465000,NULL,NULL,'09c407870b056db90148a9e4cb8ada003898ff28c584bec6a5be90514758a851','7a4f4ed76efc69ddb5fc13abe258656d6a5e4a845203b5f3f9133716093d7f6d','2f3cf6cbaefd5adca92edc74b49f6f42dd7e823bfd02034fc42822dee486d087'); +INSERT INTO blocks VALUES(310466,'8a68637850c014116da671bb544fb5deddda7682223055a58bdcf7b2e79501fc',310466000,NULL,NULL,'23bcfdbb44d8fc2ae6a86ea073ab080158014f04516b256a70d846399e7383cd','57124a566cf1e863b27fa19e3c982fe4a5115119ffb745624697380ad8d5f900','764d09a1334d335c7865e2491b0032ee8ef7a47dbeb00aa8eaa7f894f41817f1'); +INSERT INTO blocks VALUES(310467,'d455a803e714bb6bd9e582edc34e624e7e3d80ee6c7b42f7207d763fff5c2bd3',310467000,NULL,NULL,'a43abeddb61ad99d57f208cb0c6cc3e0b05a200009e6d90641a2bc7aac707adf','fb3b1ef99d2f323e1bdd6998b78b6044c8c7328fafad6b9fea1de7bd0244a265','e021092401ea9771540b28edffa5e829c0d747d8f6a17b07b9800b5cb8355219'); +INSERT INTO blocks VALUES(310468,'d84dfd2fcf6d8005aeeac01e03b287af788c81955612375510e37a4ab5766891',310468000,NULL,NULL,'fc909facd6ba38fa0908fd49a6e2f25bd8284de5265ef761497b8a2d595344b3','5c84a33365a6954fe639a1c2b1df030b8728d5d331df5ea1ef4a60f976cfa5d2','a39057b01c6eefcca1aba43e383ada071f0bce8e4590ffb310c35b27d840b0b6'); +INSERT INTO blocks VALUES(310469,'2fbbf2724f537d539b675acb6a479e530c7aac5f93b4045f4356ea4b0f8a8755',310469000,NULL,NULL,'09f0d1c9bde8cdd63544fbb5eab46c2954654d32f3736f9975cf860588aa65cf','38083f12891b03e2f089b02f7cb6b7fc7b6cb7091613e1d299051717eef6748b','eb2a94319cdb9723d7882507fda004deecffca03e8dbb6750a251ad5b3e90188'); +INSERT INTO blocks VALUES(310470,'ebb7c8e3fbe0b123a456d753b85b8c123ca3b315da14a00379ebd34784b28921',310470000,NULL,NULL,'41832b12459e778621b8f576e597b9f639390338605b30e5be28423b016b199a','bc0a8227d8698655c56004a73150eb92144469fd22d4ce8bf0f48c27084e99ae','c37b48a047f74eedaf5b5344b32a86e5c418e9b5fe095f7a75d009c2a62ab0e4'); +INSERT INTO blocks VALUES(310471,'fc6f8162c55ecffeaabb09f70f071fd0cb7a9ef1bccaafaf27fe9a936defb739',310471000,NULL,NULL,'bf701017153742cb597353349c90ec66f790f222dd98d617d98a0117f1de3274','d912707e01e39b078d3cee49df85af32019d7367d199543259bc98864c3ddae5','6048d57665d3373652889d7082ed84862506f0b859ed8c0aa580a6c2a1f299e0'); +INSERT INTO blocks VALUES(310472,'57ee5dec5e95b3d9c65a21c407294a32ed538658a6910b16124f18020f16bdf7',310472000,NULL,NULL,'2a162bbd5a20f89a39156995658fd0c4715881bc130922d0edf95b60ece60b9c','c9f21a9ff022fd95423d3eb56017f4f6f8ad56a9fde974c5d08b37f01a0d0f13','8de2c39b1efd9d73443fa89674c9c48a3d98bb2bfb9be5d065223185cc9b568d'); +INSERT INTO blocks VALUES(310473,'33994c8f6d06134f886b47e14cb4b5af8fc0fd66e6bd60b3a71986622483e095',310473000,NULL,NULL,'1ce10996ec9e37d8ddc204f038542c6781da88d2d45bae1952a88ab993b81e88','ad410d51bae82f8322d110d7b2270a1ff74c0ca64dfc31c5d293cfee7dbbb459','9e5a06535adf9336cd908bb5b0f64bc0edfb439a5b6ed303d0153d1e527b463f'); +INSERT INTO blocks VALUES(310474,'312ee99e9526e9c240d76e3c3d1fe4c0a21f58156a15f2789605b3e7f7794a09',310474000,NULL,NULL,'5ae424c24ca30aad5aca8298a13ae9371f55b15bc789c7731d833c6e7c7cb04e','b091eceeb4b263d9fa55bd5595cd298ff8b335e03007d62339033cd884137d48','4ed5440140e06d1f93e8951b77e8cb0c3159328b1040b71a50c4cee0102fc169'); +INSERT INTO blocks VALUES(310475,'bb9289bcd79075962117aef1161b333dbc403efebd593d93fc315146a2f040eb',310475000,NULL,NULL,'b9b257efe76a36c340629ceb265822dd10449a08eadc69667a8ea05af5c052f8','345c94c7b237efaf2b4e92802125b7d783e456e36ab6868d1f4126698361ba89','04349faac9296da518bf9d2f4fe783d44bbe6aba326b5527c7c0d1a049e07be8'); +INSERT INTO blocks VALUES(310476,'3712e1ebd195749e0dc92f32f7f451dd76f499bf16d709462309ce358a9370d0',310476000,NULL,NULL,'070c06b36f3a77c04fb4bcc3ab1045e95f198f3f970846e59c35db0d03cdaf2c','014e01dabe6dd8db8e0477f9b12d4f4e3589e41223ec8c9ca5035b942524ca41','98bedb6136796c28d35e083ac762668c96bcdd83fbada2f4fe10bcdbc92960df'); +INSERT INTO blocks VALUES(310477,'7381973c554ac2bbdc849e8ea8c4a0ecbb46e7967d322446d0d83c3f9deab918',310477000,NULL,NULL,'4954596dd44d112fd0407c215be3c9534a348d6f708ae4a1e66527d1ac2830b1','1351438c8ea21d9619f81e51cfd188dbefd6a4816fe3c30b68210ac160890e9b','9643b508c3ef16a34f636ba6daed2403cf7c3cbb30e953ae6f27d75cc44774da'); +INSERT INTO blocks VALUES(310478,'c09ee871af7f2a611d43e6130aed171e301c23c5d1a29d183d40bf15898b4fa0',310478000,NULL,NULL,'d9cac2e29863569bc96aaf022437906a534968a17bf965c54bf59931cd92e590','cbec4d277b86a587fd0463340a8990600046f6f166f6fde0b6ec1ee817ab12bb','b81b59d2bc47e0477f06553dd3ffede3e86632425e8420aa56d0046977c6ea9a'); +INSERT INTO blocks VALUES(310479,'f3d691ce35f62df56d142160b6e2cdcba19d4995c01f802da6ce30bfe8d30030',310479000,NULL,NULL,'2e48a89a55b6f368745e1c022683e93c20bdd920011518f18fd936f2190ac5e0','81d4ab55e022000a1bb3fbe758e497425c5196951c3e7896d3c641d54b4f2db6','2507a7e2e759cc6343e75f581ef5cd1c106fe36d69d6b934ce705f76c67d5851'); +INSERT INTO blocks VALUES(310480,'2694e89a62b3abd03a38dfd318c05eb5871f1be00a6e1bf06826fd54d142e681',310480000,NULL,NULL,'aa54124d86e74bebd14ea481ac2a5a5186236ffe214747f1af11ac370565525c','8d7e0f8a6f052692155e23eb612c02468830485938e7cb77a91e0c2061611385','d3cd2df4207a9fe421874573060180bf5505514da2bc664c20d5f73563d940d0'); +INSERT INTO blocks VALUES(310481,'db37d8f98630ebc61767736ae2c523e4e930095bf54259c01de4d36fd60b6f4a',310481000,NULL,NULL,'fbbe1266bb773e5a3f5b48e82566ff75bc74bfea9424f81f670952565db15c59','8bc755d288d8d6525d9161e5d5072631a72e46d2373de37c7851aa10f3479ed5','c014632a79cb73b53398c621ffbfc6d063cddfcb1777dc606e04787af60e9601'); +INSERT INTO blocks VALUES(310482,'2e27db87dfb6439c006637734e876cc662d1ca74c717756f90f0e535df0787d6',310482000,NULL,NULL,'bd28a97e90054319c4c301c3e99d68aaa5e1bf5a145a8f2c4529040bb8137209','838486910c9c7722fb3afbac7b0514cdd94126486f6671697423b34164b9906f','5920abc3ead7066b4ce9ad287e93c0448afed80dcdec69a3c24076a5593ddbc0'); +INSERT INTO blocks VALUES(310483,'013bac61f8e33c8d8d0f60f5e6a4ec3de9b16696703dea9802f64a258601c460',310483000,NULL,NULL,'fbbeacec99c9ed99a7fc37cdd5673fe8bdce08eba7fcb25b696e262af29ca5d8','2be6ebe515877a76a7b83b1929ca2ef77be1df3aa3d6766c0c47450898ad7adf','aae7317d18edb8cf199cdda73aa26b6a917426468288e4ad4366a4e7c930ad57'); +INSERT INTO blocks VALUES(310484,'7cac2b3630c31b592fa0497792bed58d3c41120c009471c348b16b5578b3aa2b',310484000,NULL,NULL,'310bc7c61c1325ee3f97e888658fd74e1fe4adccef4924abb6978150fe6f3dad','ec800faf2b61e7b1c2c85157d09b058f59defc14ffbe64d82dffea2a0368ade2','eceb407aa4120b42a6d351b53569e49357eb340ffa7a7a9a683c85fdfb17bf9a'); +INSERT INTO blocks VALUES(310485,'eab5febc9668cd438178496417b22da5f77ceaed5bb6e01fc0f04bef1f5b4478',310485000,NULL,NULL,'b7f66db9ea5838b65286422d0cac262f6b81bbd5a7397adf7b8d85b21354dbcd','c2c0301119eb8f6e5ee8f72a4f93366a7c2b9f327f087a5aabff7d73892ca74f','cbb5ac853d9b39f65af711754f62688239ab43ac983521018360a241c299cc4c'); +INSERT INTO blocks VALUES(310486,'d4fbe610cc60987f2d1d35c7d8ad3ce32156ee5fe36ef8cc4f08b46836388862',310486000,NULL,NULL,'0f829769e4da773089d7b05047a499db5f6d1b17795d4fba912882caee9813e0','ea66c7d9251a0eb884fef48de05cb58bbcf3a9e08319f01c96f180aeb0de9bab','89411706766129719126b2b790a94f6e4e477da147b0f243a22815bf7f6d18b3'); +INSERT INTO blocks VALUES(310487,'32aa1b132d0643350bbb62dbd5f38ae0c270d8f491a2012c83b99158d58e464f',310487000,NULL,NULL,'4b4d7a79843342e96e5d9d71bbc49690245b3098be75e7b86f273021d526216d','76fbd411c43f3f67c8bf61138c5672de0cfda2d98f112a6e50b3a5d084d7cc72','e5a165429914eaf94a41b748a2dfc8b0a09438a5d0b1f933c4f1789a0e2eab9e'); +INSERT INTO blocks VALUES(310488,'80b8dd5d7ce2e4886e6721095b892a39fb699980fe2bc1c17e747f822f4c4b1b',310488000,NULL,NULL,'2d7e59026ea4c8933e9c7474936931ca49d4af91f9b9985f3c76085fb3a69104','78e801f2d1968c860ac2563e9cc912c18cb8e5f95996011e84c289833fbd46da','fa3460597f3dd24c32881a28ccd29848f2badf31fb28ef65b5907a093c8d645f'); +INSERT INTO blocks VALUES(310489,'2efdb36f986b3e3ccc6cc9b0c1c3cdcb07429fb43cbc0cc3b6c87d1b33f258b6',310489000,NULL,NULL,'716354a370f344980e98785a444b56b21188bc699e7fbd0c877b6f2fabf35efc','23d9af03e6aa29fbab29c8e2a5a0419680053bba19594105cc8ef4d3db05d418','4d0a10ff1fcd5e853e6eef2f7e3bcaefc2be02687d62fec5b21a03972f54befd'); +INSERT INTO blocks VALUES(310490,'e2cb04b8a7368c95359c9d5ff33e64209200fb606de0d64b7c0f67bb1cb8d87c',310490000,NULL,NULL,'906a38f4256f50312891119c99721537992438af85421e317574ce1810e2b909','5f934032dce4102cd1d72d3f887526e78baa4a78991bc43cf0a1ebefe08fdec7','9e8317be956daf7753f8f8861e68a29d6a79ae41f2d9d39ee06c811abb256806'); +INSERT INTO blocks VALUES(310491,'811abd7cf2b768cfdaa84ab44c63f4463c96a368ead52125bf149cf0c7447b16',310491000,NULL,NULL,'3114d8091cfcaa9944c6fab49d51950535c4ef269877d58c372ed80b2b472ec6','f065728a3544adc085fae976759c0d040a34ca0a8ddd39260b55f0262cd5baa8','be852aa8b022209355ea4147a57525f0b7c38e629e0422b675bfbc2d45b58788'); +INSERT INTO blocks VALUES(310492,'8a09b2faf0a7ad67eb4ab5c948b9769fc87eb2ec5e16108f2cde8bd9e6cf7607',310492000,NULL,NULL,'98af18583618fdeed545347c013763d068e8294405d265911cc5e1bc420bc740','daf4d2c1a1ad5206abcf7744bdd06fae99c442fb2607a843dcabb5727d02916e','d8b58011bf3392e8db39f8d5eccbecc028d5aa0f321a54b7845f510a97191654'); +INSERT INTO blocks VALUES(310493,'c19e2915b750279b2be4b52e57e5ce29f63dffb4e14d9aad30c9e820affc0cbf',310493000,NULL,NULL,'29119cd30a4733916fbfd0551506eaa16f7bb1bdfbdf8d17ac4e5bb20d1cb09c','7ec4cfa94544900c8e8732ad51be7cee6452aa1884ea940cd5c98862fb4aaba6','fd24cdff61bfbcfdcbe0f5304cc923900df40302928f17963408ca9f0fd9c266'); +INSERT INTO blocks VALUES(310494,'7dda1d3e12785313d5651ee5314d0aecf17588196f9150b10c55695dbaebee5d',310494000,NULL,NULL,'72d71bd72263699ea9f2b097ad141be5bc394f49d8b0b0a6b2ff6a87b0ee3919','9350c3ba33d0546d1194c5fa767ced28834b26246aedc56d89b1d48ec4f26014','67f896d349a506059dda2bc17af89bc9480e862009abbff09b80846dfdf320b3'); +INSERT INTO blocks VALUES(310495,'4769aa7030f28a05a137a85ef4ee0c1765c37013773212b93ec90f1227168b67',310495000,NULL,NULL,'5a7e5a36882466373d576bb5f4ccd1bc72ecaf548b9589baa803a7275a7a24cd','09e9db121649cacd979fd18bbaa35e519361e727e7e072e2f2f86291160cdb29','ee77de1de0409ad159d6c115b4b456a1b6a60ebec57ad1ec608be95a08c6cd2f'); +INSERT INTO blocks VALUES(310496,'65884816927e8c566655e85c07bc2bc2c7ee26e625742f219939d43238fb31f8',310496000,NULL,NULL,'7ac6121c624b634f44695172761830926afe76bb18c4cc9195773f3a26966941','9eda85cce745579122ba9c6e24b63cd83f2e5161031a34e6ee9bf08b80823cb4','7ea5245c38a6a1c383280a873c7096bd5fdef4e76761dd4c19638ed3279f9820'); +INSERT INTO blocks VALUES(310497,'f1118591fe79b8bf52ccf0c5de9826bfd266b1fdc24b44676cf22bbcc76d464e',310497000,NULL,NULL,'28c6e92b2299b9cbbb5953f8b7ff3de0fe962d15642ba27e43faa64e1935e819','ff8136601b9e0138a999d1f0467af6e8535a2bcdd2b622af7be0178a083b9519','e1c3baf6f308d96b7dfed6e63e9f9c17c88cb210c99cfb00cd530ad529468492'); +INSERT INTO blocks VALUES(310498,'b7058b6d1ddc325a10bf33144937e06ce6025215b416518ae120da9440ae279e',310498000,NULL,NULL,'5fe6cdb0828379bf240fad99c68bba34e1889bbc19605ce5c297b82352264414','b488f6f0e6c233f202ee17c0843236d464144e79c870af88bae56355ae9372b7','3f7f9ab501e9bc06faed0467bb6314f7c7996606a400f5cd69b9e48643b07c9a'); +INSERT INTO blocks VALUES(310499,'1950e1a4d7fc820ed9603f6df6819c3c953c277c726340dec2a4253e261a1764',310499000,NULL,NULL,'b9fcbdafddd46fdda061f6e9f8744b426b6ca37e32b315df1098cbc7899ae9b9','032166892f568bb97f4f69ef5bdf49cc1b15cc9f8c7f6c1f3e1f9d54816ad7e5','d1ca82813949964578289848b69f074dde9adf80eb05c9463d8d875f3b9d3387'); +INSERT INTO blocks VALUES(310500,'54aeaf47d5387964e2d51617bf3af50520a0449410e0d096cf8c2aa9dad5550b',310500000,NULL,NULL,'5ffefc7a2724be6bd697796bb82638ec913c5cbb73627153d1a13b48c7a6c02d','35f4a33840d002ab4e0e44f11c1749ae95b41376927fb346140508b32518edd1','cae2a80d55e87c77e808fbfcc7f52eca235d59030eb8d64458dd6273fb722907'); +-- Triggers and indices on blocks +CREATE INDEX blocks_block_index_block_hash_idx ON blocks (block_index, block_hash) + ; +CREATE INDEX blocks_block_index_idx ON blocks (block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transactions +DROP TABLE IF EXISTS transactions; +CREATE TABLE transactions( + tx_index INTEGER UNIQUE, + tx_hash TEXT UNIQUE, + block_index INTEGER, + block_hash TEXT, + block_time INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + fee INTEGER, + data BLOB, + supported BOOL DEFAULT 1, + FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), + PRIMARY KEY (tx_index, tx_hash, block_index)); +INSERT INTO transactions VALUES(1,'6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); +INSERT INTO transactions VALUES(2,'1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'00000014000000A25BE34B66000000174876E800010000000000000000000F446976697369626C65206173736574',1); +INSERT INTO transactions VALUES(3,'7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'000000140006CAD8DC7F0B6600000000000003E800000000000000000000124E6F20646976697369626C65206173736574',1); +INSERT INTO transactions VALUES(4,'c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001400000003C58E5C5600000000000003E8010000000000000000000E43616C6C61626C65206173736574',1); +INSERT INTO transactions VALUES(5,'90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001400000000082C82E300000000000003E8010000000000000000000C4C6F636B6564206173736574',1); +INSERT INTO transactions VALUES(6,'344dcc8909ca3a137630726d0071dfd2df4f7c855bac150c7d3a8367835c90bc',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001400000000082C82E3000000000000000001000000000000000000044C4F434B',1); +INSERT INTO transactions VALUES(7,'4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000A25BE34B660000000005F5E10007D00000000000000000',1); +INSERT INTO transactions VALUES(8,'6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'00000000000000A25BE34B660000000005F5E100',1); +INSERT INTO transactions VALUES(9,'4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'0000000000000000000000010000000005F5E100',1); +INSERT INTO transactions VALUES(10,'21460d5c07284f9be9baf824927d0d4e4eb790e297f3162305841607b672349b',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000A25BE34B660000000005F5E10007D00000000000000000',1); +INSERT INTO transactions VALUES(11,'1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000000000000000000000000F424007D000000000000DBBA0',1); +INSERT INTO transactions VALUES(12,'a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,1000000,X'0000000A000000000000000000000000000A2C2B00000000000000010000000005F5E10007D00000000000000000',1); +INSERT INTO transactions VALUES(13,'698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'0000000000000000000000010000000011E1A300',1); +INSERT INTO transactions VALUES(14,'0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'00000000000000A25BE34B66000000003B9ACA00',1); +INSERT INTO transactions VALUES(15,'1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'000000000006CAD8DC7F0B660000000000000005',1); +INSERT INTO transactions VALUES(16,'e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1000,7650,X'000000000006CAD8DC7F0B66000000000000000A',1); +INSERT INTO transactions VALUES(17,'bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'000000140000000000033A3E7FFFFFFFFFFFFFFF01000000000000000000104D6178696D756D207175616E74697479',1); +INSERT INTO transactions VALUES(18,'d14388b74b63d93e4477b1fe8426028bb8ab20656703e3ce8deeb23c2fe0b8af',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB33003FF0000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(19,'f9e0527c85a9084d7eda91fc30a49993370d029efea031a8ccccdf846146a660',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','',0,6800,X'0000001E4CC552003FF000000000000000000000046C6F636B',1); +INSERT INTO transactions VALUES(20,'2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000152BB3301000000000000000900000000000000090000000000000000000013B000000064',1); +INSERT INTO transactions VALUES(21,'5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000052BB3301000000000000000900000000000000090000000000000000000013B000000064',1); +INSERT INTO transactions VALUES(102,'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e',310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000352BB33C8000000000000000A000000000000000A0000000000000000000013B0000003E8',1); +INSERT INTO transactions VALUES(103,'16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae',310102,'11e25883fd0479b78ddb1953ef67e3c3d1ffc82bd1f9e918a75c2194f7137f99',310102000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB33023FF0000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(104,'65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b',310103,'559a208afea6dd27b8bfeb031f1bd8f57182dcab6cf55c4089a6c49fb4744f17',310103000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,-99994375,X'',1); +INSERT INTO transactions VALUES(105,'95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff',310104,'55b82e631b61d22a8524981ff3b5e3ab4ad7b732b7d1a06191064334b8f2dfd2',310104000,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,-99994375,X'',1); +INSERT INTO transactions VALUES(106,'e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa',310105,'1d72cdf6c4a02a5f973e6eaa53c28e9e13014b4f5bb13f91621a911b27fe936a',310105000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,-99994375,X'',1); +INSERT INTO transactions VALUES(107,'bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3',310106,'9d39cbe8c8a5357fc56e5c2f95bf132382ddad14cbc8abd54e549d58248140ff',310106000,'mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','mvCounterpartyXXXXXXXXXXXXXXW24Hef',10000,5625,X'',1); +INSERT INTO transactions VALUES(108,'9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec',310107,'51cc04005e49fa49e661946a0e147240b0e5aac174252c96481ab7ddd5487435',310107000,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','',0,6150,X'0000000C000000000000000100000000000000640000000000000064000000000000006400',1); +INSERT INTO transactions VALUES(109,'93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73',310108,'8f2d3861aa42f8e75dc14a23d6046bd89feef0d81996b6e1adc2a2828fbc8b34',310108000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','mvCounterpartyXXXXXXXXXXXXXXW24Hef',31000000,5625,X'',1); +INSERT INTO transactions VALUES(110,'e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e',310109,'d23aaaae55e6a912eaaa8d20fe2a9ad4819fe9dc1ed58977265af58fad89d8f9',310109000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','',0,6800,X'0000001400078A8FE2E5E44100000000000003E8000000000000000000001050534820697373756564206173736574',1); +INSERT INTO transactions VALUES(111,'f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7',310110,'cecc8e4791bd3081995bd9fd67acb6b97415facfd2b68f926a70b22d9a258382',310110000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',5430,7650,X'00000000000000A25BE34B660000000005F5E100',1); +INSERT INTO transactions VALUES(112,'510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186',310111,'fde71b9756d5ba0b6d8b230ee885af01f9c4461a55dbde8678279166a21b20ae',310111000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','',0,5975,X'0000001E52BB33023FF0000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(113,'d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048',310112,'5b06f69bfdde1083785cf68ebc2211b464839033c30a099d3227b490bf3ab251',310112000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',5430,7124,X'00000028000352BB33C8000000000000000A000000000000000A0000000000000000000013B0000003E8',1); +INSERT INTO transactions VALUES(114,'34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63',310113,'63914cf376d3076b697b9234810dfc084ed5a885d5cd188dd5462560da25d5e7',310113000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'00000014000038FEDF6D2C6900000000000003E8010000000000000000000C4C6F636B6564206173736574',1); +INSERT INTO transactions VALUES(115,'025b810fce7735c5869b90846007e5f604f60c1beda4c1695f1c7fbec3d44bc2',310114,'24fc2dded4f811eff58b32cda85d90fb5773e81b9267e9a03c359bc730d82283',310114000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'00000014000038FEDF6D2C69000000000000000001000000000000000000044C4F434B',1); +INSERT INTO transactions VALUES(116,'4ab1a24283c1dbfc710be7b215d64e8a4510ee97af019e210049c25773b50beb',310115,'a632d67ff5f832fe9c3c675f855f08a4969c6d78c0211e71b2a24fe04be5656a',310115000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'00000014000038FEDF6D2C69000000000000000001000000000000000000076368616E676564',1); +INSERT INTO transactions VALUES(117,'27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9',310116,'8495ba36b331473c4f3529681a118a4cc4fa4d51cd9b8dccb1f13e5ef841dd84',310116000,'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); +INSERT INTO transactions VALUES(482,'b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5',310481,'db37d8f98630ebc61767736ae2c523e4e930095bf54259c01de4d36fd60b6f4a',310481000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6375,X'0000000200000000000000010000000005F5E1006F8D6AE8A3B381663118B4E1EFF4CFC7D0954DD6EC68656C6C6F',1); +INSERT INTO transactions VALUES(483,'c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34',310482,'2e27db87dfb6439c006637734e876cc662d1ca74c717756f90f0e535df0787d6',310482000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','',0,6350,X'0000000200000000000000010000000005F5E1006F4838D8B3588C4C7BA7C1D06F866E9B3739C63037FADE0001',1); +INSERT INTO transactions VALUES(487,'3b95e07a2194174ac020de27e8b2b6ee24d5fc120f118df516ba28495657cf14',310486,'d4fbe610cc60987f2d1d35c7d8ad3ce32156ee5fe36ef8cc4f08b46836388862',310486000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','',0,6800,X'0000001E52BB33003FF0000000000000004C4B4009556E69742054657374',1); +INSERT INTO transactions VALUES(488,'41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef',310487,'32aa1b132d0643350bbb62dbd5f38ae0c270d8f491a2012c83b99158d58e464f',310487000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',5430,7650,X'00000028000152BB3301000000000000000900000000000000090000000000000000000013B000000064',1); +INSERT INTO transactions VALUES(489,'870fb08b373705423f31ccd91fdbcabe135ad92d74e709a959dfa2e12f9a6638',310488,'80b8dd5d7ce2e4886e6721095b892a39fb699980fe2bc1c17e747f822f4c4b1b',310488000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','',0,6800,X'0000001E52BB33023FF000000000000000000000096F7074696F6E732030',1); +INSERT INTO transactions VALUES(490,'685d7f99fa76a05201c3239a4e0d9060ea53307b171f6ad7d482a26c73e9c0d1',310489,'2efdb36f986b3e3ccc6cc9b0c1c3cdcb07429fb43cbc0cc3b6c87d1b33f258b6',310489000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','',0,6800,X'0000001E52BB33033FF000000000000000000000046C6F636B',1); +INSERT INTO transactions VALUES(491,'7c437705c315212315c85c0b8ba09d358679c91be20b54f30929c5a6052426af',310490,'e2cb04b8a7368c95359c9d5ff33e64209200fb606de0d64b7c0f67bb1cb8d87c',310490000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'0000001E52BB33043FF000000000000000000000096F7074696F6E732031',1); +INSERT INTO transactions VALUES(492,'74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498',310491,'811abd7cf2b768cfdaa84ab44c63f4463c96a368ead52125bf149cf0c7447b16',310491000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000000000000000000000000C350007D000000000000DBBA0',1); +INSERT INTO transactions VALUES(493,'1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81',310492,'8a09b2faf0a7ad67eb4ab5c948b9769fc87eb2ec5e16108f2cde8bd9e6cf7607',310492000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','',0,1000000,X'0000000A000000000000000000000000000C350000000000000000010000000005F5E10007D00000000000000000',1); +INSERT INTO transactions VALUES(494,'c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a',310493,'c19e2915b750279b2be4b52e57e5ce29f63dffb4e14d9aad30c9e820affc0cbf',310493000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); +INSERT INTO transactions VALUES(495,'321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503',310494,'7dda1d3e12785313d5651ee5314d0aecf17588196f9150b10c55695dbaebee5d',310494000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','',0,6800,X'00000014000000063E985FFD00000000000000640100000000000000000000',1); +INSERT INTO transactions VALUES(496,'02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e',310495,'4769aa7030f28a05a137a85ef4ee0c1765c37013773212b93ec90f1227168b67',310495000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj',5430,7650,X'00000000000000063E985FFD000000000000000A',1); +INSERT INTO transactions VALUES(497,'a35ab1736565aceddbd1d71f92fc7f39d1361006aa9099f731e54e762964d5ba',310496,'65884816927e8c566655e85c07bc2bc2c7ee26e625742f219939d43238fb31f8',310496000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj',5430,7650,X'00000000000000000000000100000015A4018C1E',1); +INSERT INTO transactions VALUES(498,'076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f',310497,'f1118591fe79b8bf52ccf0c5de9826bfd266b1fdc24b44676cf22bbcc76d464e',310497000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6300,X'00000014000000000AA4097D0000000005F5E100010000000000000000000C506172656E74206173736574',1); +INSERT INTO transactions VALUES(499,'0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf',310498,'b7058b6d1ddc325a10bf33144937e06ce6025215b416518ae120da9440ae279e',310498000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6550,X'0000001501530821671B10650000000005F5E10001108E90A57DBA9967C422E83080F22F0C684368696C64206F6620706172656E74',1); +-- Triggers and indices on transactions +CREATE INDEX transactions_block_index_idx ON transactions (block_index) + ; +CREATE INDEX transactions_block_index_tx_index_idx ON transactions (block_index, tx_index) + ; +CREATE INDEX transactions_tx_hash_idx ON transactions (tx_hash) + ; +CREATE INDEX transactions_tx_index_idx ON transactions (tx_index) + ; +CREATE INDEX transactions_tx_index_tx_hash_block_index_idx ON transactions (tx_index, tx_hash, block_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table transaction_outputs +DROP TABLE IF EXISTS transaction_outputs; +CREATE TABLE transaction_outputs( + tx_index, + tx_hash TEXT, + block_index INTEGER, + out_index INTEGER, + destination TEXT, + btc_amount INTEGER, + PRIMARY KEY (tx_hash, out_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000000,310001,2); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92900000000,310002,3); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',1000,310002,3); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92850000000,310003,4); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','CALLABLE',1000,310003,4); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92800000000,310004,5); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','LOCKED',1000,310004,5); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92800000000,310005,6); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92700000000,310006,7); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',99900000000,310007,8); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000,310007,8); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92600000000,310008,9); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,310008,9); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92500000000,310009,10); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92400000000,310010,11); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92100000000,310012,13); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000,310012,13); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',98900000000,310013,14); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000,310013,14); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',995,310014,15); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5,310014,15); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',985,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10,310015,16); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310016,17); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','MAXI',9223372036854775807,310016,17); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92049999991,310019,20); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999991,310020,21); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92049999991,310020,21); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999991,310020,21); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999981,310101,102); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999990,310102,103); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310102,103); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310102,103); +INSERT INTO balances VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138821,310103,104); +INSERT INTO balances VALUES('munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130460,310104,105); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92999122099,310105,106); +INSERT INTO balances VALUES('mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','XCP',14999857,310106,107); +INSERT INTO balances VALUES('munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130360,310107,108); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46499548508,310108,109); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46449548508,310109,110); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','PAYTOSCRIPT',1000,310109,110); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',98800000000,310110,111); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000,310110,111); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46449548498,310112,113); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099,310113,114); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','LOCKEDPREV',1000,310113,114); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099,310114,115); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099,310115,116); +INSERT INTO balances VALUES('tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','XCP',92999030129,310116,117); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91950000000,310481,482); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',199999990,310481,482); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999990,310482,483); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310482,483); +INSERT INTO balances VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138812,310487,488); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91950000000,310491,492); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92995878046,310493,494); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92945878046,310494,495); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',100,310494,495); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',90,310495,496); +INSERT INTO balances VALUES('mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10,310495,496); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',0,310496,497); +INSERT INTO balances VALUES('mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046,310496,497); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91900000000,310497,498); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','PARENT',100000000,310497,498); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91875000000,310498,499); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','A95428956661682277',100000000,310498,499); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table balances +DROP TABLE IF EXISTS balances; +CREATE TABLE balances( + address TEXT, + asset TEXT, + quantity INTEGER, block_index INTEGER, tx_index INTEGER); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',93000000000,310000,1); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92950000000,310001,2); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000000,310001,2); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92900000000,310002,3); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',1000,310002,3); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92850000000,310003,4); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','CALLABLE',1000,310003,4); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92800000000,310004,5); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','LOCKED',1000,310004,5); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92800000000,310005,6); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92700000000,310006,7); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',99900000000,310007,8); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000,310007,8); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92600000000,310008,9); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,310008,9); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92500000000,310009,10); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92400000000,310010,11); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92100000000,310012,13); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000,310012,13); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',98900000000,310013,14); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000,310013,14); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',995,310014,15); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5,310014,15); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',985,310015,16); +INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10,310015,16); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310016,17); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','MAXI',9223372036854775807,310016,17); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92049999991,310019,20); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999991,310020,21); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92049999991,310020,21); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999991,310020,21); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999981,310101,102); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999990,310102,103); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310102,103); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310102,103); +INSERT INTO balances VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138821,310103,104); +INSERT INTO balances VALUES('munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130460,310104,105); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92999122099,310105,106); +INSERT INTO balances VALUES('mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','XCP',14999857,310106,107); +INSERT INTO balances VALUES('munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130360,310107,108); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46499548508,310108,109); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46449548508,310109,110); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','PAYTOSCRIPT',1000,310109,110); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',98800000000,310110,111); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000,310110,111); +INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46449548498,310112,113); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099,310113,114); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','LOCKEDPREV',1000,310113,114); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099,310114,115); +INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099,310115,116); +INSERT INTO balances VALUES('tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','XCP',92999030129,310116,117); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91950000000,310481,482); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',199999990,310481,482); +INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999990,310482,483); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',92050000000,310482,483); +INSERT INTO balances VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138812,310487,488); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91950000000,310491,492); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92995878046,310493,494); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92945878046,310494,495); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',100,310494,495); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',90,310495,496); +INSERT INTO balances VALUES('mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10,310495,496); +INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',0,310496,497); +INSERT INTO balances VALUES('mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046,310496,497); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91900000000,310497,498); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','PARENT',100000000,310497,498); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91875000000,310498,499); +INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','A95428956661682277',100000000,310498,499); +-- Triggers and indices on balances +CREATE INDEX balances_address_asset_idx ON balances (address, asset) + ; +CREATE INDEX balances_address_idx ON balances (address) + ; +CREATE INDEX balances_asset_idx ON balances (asset) + ; +CREATE INDEX balances_block_index_idx ON balances (block_index) + ; +CREATE TRIGGER block_update_balances + BEFORE UPDATE ON balances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table credits +DROP TABLE IF EXISTS credits; +CREATE TABLE credits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + calling_function TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO credits VALUES(310000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',93000000000,'burn','6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',1); +INSERT INTO credits VALUES(310001,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000000,'issuance','1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1',2); +INSERT INTO credits VALUES(310002,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',1000,'issuance','7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584',3); +INSERT INTO credits VALUES(310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','CALLABLE',1000,'issuance','c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140',4); +INSERT INTO credits VALUES(310004,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','LOCKED',1000,'issuance','90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da',5); +INSERT INTO credits VALUES(310007,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000,'send','6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753',8); +INSERT INTO credits VALUES(310008,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'send','4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43',9); +INSERT INTO credits VALUES(310012,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000,'send','698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6',13); +INSERT INTO credits VALUES(310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000,'send','0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132',14); +INSERT INTO credits VALUES(310014,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5,'send','1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a',15); +INSERT INTO credits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10,'send','e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c',16); +INSERT INTO credits VALUES(310016,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','MAXI',9223372036854775807,'issuance','bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39',17); +INSERT INTO credits VALUES(310020,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'filled','5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',21); +INSERT INTO credits VALUES(310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',0,'filled','5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',21); +INSERT INTO credits VALUES(310102,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',9,'bet settled','16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae',103); +INSERT INTO credits VALUES(310102,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',9,'bet settled','16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae',103); +INSERT INTO credits VALUES(310102,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'feed fee','16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae',103); +INSERT INTO credits VALUES(310103,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138821,'burn','65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b',104); +INSERT INTO credits VALUES(310104,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130460,'burn','95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff',105); +INSERT INTO credits VALUES(310105,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92999122099,'burn','e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa',106); +INSERT INTO credits VALUES(310106,'mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','XCP',14999857,'burn','bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3',107); +INSERT INTO credits VALUES(310108,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46499548508,'burn','93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73',109); +INSERT INTO credits VALUES(310109,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','PAYTOSCRIPT',1000,'issuance','e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e',110); +INSERT INTO credits VALUES(310110,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000,'send','f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7',111); +INSERT INTO credits VALUES(310113,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','LOCKEDPREV',1000,'issuance','34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63',114); +INSERT INTO credits VALUES(310116,'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','XCP',92999030129,'burn','27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9',117); +INSERT INTO credits VALUES(310481,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'send','b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5',482); +INSERT INTO credits VALUES(310482,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'send','c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34',483); +INSERT INTO credits VALUES(310493,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92995878046,'burn','c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a',494); +INSERT INTO credits VALUES(310494,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',100,'issuance','321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503',495); +INSERT INTO credits VALUES(310495,'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10,'send','02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e',496); +INSERT INTO credits VALUES(310496,'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046,'send','a35ab1736565aceddbd1d71f92fc7f39d1361006aa9099f731e54e762964d5ba',497); +INSERT INTO credits VALUES(310497,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','PARENT',100000000,'issuance','076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f',498); +INSERT INTO credits VALUES(310498,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','A95428956661682277',100000000,'issuance','0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf',499); +-- Triggers and indices on credits +CREATE TRIGGER block_update_credits + BEFORE UPDATE ON credits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX credits_address_idx ON credits (address) + ; +CREATE INDEX credits_asset_idx ON credits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table debits +DROP TABLE IF EXISTS debits; +CREATE TABLE debits( + block_index INTEGER, + address TEXT, + asset TEXT, + quantity INTEGER, + action TEXT, + event TEXT, tx_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO debits VALUES(310001,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1',2); +INSERT INTO debits VALUES(310002,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584',3); +INSERT INTO debits VALUES(310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140',4); +INSERT INTO debits VALUES(310004,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da',5); +INSERT INTO debits VALUES(310005,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'issuance fee','344dcc8909ca3a137630726d0071dfd2df4f7c855bac150c7d3a8367835c90bc',6); +INSERT INTO debits VALUES(310006,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8',7); +INSERT INTO debits VALUES(310007,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000,'send','6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753',8); +INSERT INTO debits VALUES(310008,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'send','4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43',9); +INSERT INTO debits VALUES(310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','21460d5c07284f9be9baf824927d0d4e4eb790e297f3162305841607b672349b',10); +INSERT INTO debits VALUES(310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a',11); +INSERT INTO debits VALUES(310012,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',300000000,'send','698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6',13); +INSERT INTO debits VALUES(310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',1000000000,'send','0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132',14); +INSERT INTO debits VALUES(310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',5,'send','1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a',15); +INSERT INTO debits VALUES(310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',10,'send','e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c',16); +INSERT INTO debits VALUES(310016,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39',17); +INSERT INTO debits VALUES(310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',9,'bet','2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1',20); +INSERT INTO debits VALUES(310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',9,'bet','5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',21); +INSERT INTO debits VALUES(310101,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',10,'bet','db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e',102); +INSERT INTO debits VALUES(310107,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',100,'open dispenser','9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec',108); +INSERT INTO debits VALUES(310109,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',50000000,'issuance fee','e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e',110); +INSERT INTO debits VALUES(310110,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000,'send','f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7',111); +INSERT INTO debits VALUES(310112,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',10,'bet','d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048',113); +INSERT INTO debits VALUES(310113,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',50000000,'issuance fee','34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63',114); +INSERT INTO debits VALUES(310114,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',0,'issuance fee','025b810fce7735c5869b90846007e5f604f60c1beda4c1695f1c7fbec3d44bc2',115); +INSERT INTO debits VALUES(310115,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',0,'issuance fee','4ab1a24283c1dbfc710be7b215d64e8a4510ee97af019e210049c25773b50beb',116); +INSERT INTO debits VALUES(310481,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'send','b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5',482); +INSERT INTO debits VALUES(310482,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'send','c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34',483); +INSERT INTO debits VALUES(310487,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',9,'bet','41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef',488); +INSERT INTO debits VALUES(310491,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498',492); +INSERT INTO debits VALUES(310494,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',50000000,'issuance fee','321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503',495); +INSERT INTO debits VALUES(310495,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',10,'send','02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e',496); +INSERT INTO debits VALUES(310496,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92945878046,'send','a35ab1736565aceddbd1d71f92fc7f39d1361006aa9099f731e54e762964d5ba',497); +INSERT INTO debits VALUES(310497,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f',498); +INSERT INTO debits VALUES(310498,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',25000000,'issuance fee','0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf',499); +-- Triggers and indices on debits +CREATE TRIGGER block_update_debits + BEFORE UPDATE ON debits BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX debits_address_idx ON debits (address) + ; +CREATE INDEX debits_asset_idx ON debits (asset) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table messages +DROP TABLE IF EXISTS messages; +CREATE TABLE messages( + message_index INTEGER PRIMARY KEY, + block_index INTEGER, + command TEXT, + category TEXT, + bindings TEXT, + timestamp INTEGER); +INSERT INTO messages VALUES(0,310000,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(1,310001,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(2,310002,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(3,310003,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(4,310004,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(5,310005,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(6,310006,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(7,310007,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(8,310008,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(9,310009,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(10,310010,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(11,310011,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(12,310012,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(13,310013,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(14,310014,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(15,310015,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(16,310016,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(17,310017,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(18,310018,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(19,310019,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(20,310020,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(21,310020,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(22,310020,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(23,310020,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(24,310020,'update','bets','[''counterwager_remaining'', ''status'', ''tx_hash'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(25,310019,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(26,310101,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(27,310102,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(28,310102,'insert','bet_match_resolutions','[''bear_credit'', ''bet_match_id'', ''bet_match_type_id'', ''block_index'', ''bull_credit'', ''escrow_less_fee'', ''fee'', ''settled'', ''winner'']',0); +INSERT INTO messages VALUES(29,310102,'insert','bet_matches','[''backward_quantity'', ''block_index'', ''deadline'', ''fee_fraction_int'', ''feed_address'', ''forward_quantity'', ''id'', ''initial_value'', ''leverage'', ''match_expire_index'', ''status'', ''target_value'', ''tx0_address'', ''tx0_bet_type'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_bet_type'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(30,310102,'update','bet_matches','[''bet_match_id'', ''status'']',0); +INSERT INTO messages VALUES(31,310103,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(32,310104,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(33,310105,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(34,310106,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(35,310107,'insert','dispensers','[''asset'', ''block_index'', ''escrow_quantity'', ''give_quantity'', ''give_remaining'', ''oracle_address'', ''origin'', ''satoshirate'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(36,310108,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(37,310109,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(38,310110,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(39,310111,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(40,310112,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(41,310113,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(42,310114,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(43,310115,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(44,310116,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(45,310481,'insert','sends','[''asset'', ''block_index'', ''destination'', ''memo'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(46,310482,'insert','sends','[''asset'', ''block_index'', ''destination'', ''memo'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(47,310486,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(48,310487,'insert','bets','[''bet_type'', ''block_index'', ''counterwager_quantity'', ''counterwager_remaining'', ''deadline'', ''expiration'', ''expire_index'', ''fee_fraction_int'', ''feed_address'', ''leverage'', ''source'', ''status'', ''target_value'', ''tx_hash'', ''tx_index'', ''wager_quantity'', ''wager_remaining'']',0); +INSERT INTO messages VALUES(49,310488,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(50,310488,'insert','replace','[''address'', ''block_index'', ''options'']',0); +INSERT INTO messages VALUES(51,310489,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(52,310490,'insert','broadcasts','[''block_index'', ''fee_fraction_int'', ''locked'', ''source'', ''status'', ''text'', ''timestamp'', ''tx_hash'', ''tx_index'', ''value'']',0); +INSERT INTO messages VALUES(53,310490,'insert','replace','[''address'', ''block_index'', ''options'']',0); +INSERT INTO messages VALUES(54,310491,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(55,310492,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(56,310492,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(57,310492,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(58,310492,'insert','orders','[''block_index'', ''expiration'', ''expire_index'', ''fee_provided'', ''fee_provided_remaining'', ''fee_required'', ''fee_required_remaining'', ''get_asset'', ''get_quantity'', ''get_remaining'', ''give_asset'', ''give_quantity'', ''give_remaining'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(59,310492,'update','orders','[''fee_provided_remaining'', ''fee_required_remaining'', ''get_remaining'', ''give_remaining'', ''status'', ''tx_hash'']',0); +INSERT INTO messages VALUES(60,310492,'insert','order_matches','[''backward_asset'', ''backward_quantity'', ''block_index'', ''fee_paid'', ''forward_asset'', ''forward_quantity'', ''id'', ''match_expire_index'', ''status'', ''tx0_address'', ''tx0_block_index'', ''tx0_expiration'', ''tx0_hash'', ''tx0_index'', ''tx1_address'', ''tx1_block_index'', ''tx1_expiration'', ''tx1_hash'', ''tx1_index'']',0); +INSERT INTO messages VALUES(61,310493,'insert','burns','[''block_index'', ''burned'', ''earned'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(62,310494,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(63,310495,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(64,310496,'insert','sends','[''asset'', ''block_index'', ''destination'', ''quantity'', ''source'', ''status'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(65,310497,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +INSERT INTO messages VALUES(66,310498,'insert','issuances','[''asset'', ''asset_longname'', ''block_index'', ''call_date'', ''call_price'', ''callable'', ''description'', ''divisible'', ''fee_paid'', ''issuer'', ''locked'', ''quantity'', ''reset'', ''source'', ''status'', ''transfer'', ''tx_hash'', ''tx_index'']',0); +-- Triggers and indices on messages +CREATE TRIGGER block_update_messages + BEFORE UPDATE ON messages BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX messages_block_index_idx ON messages (block_index) + ; +CREATE INDEX messages_block_index_message_index_idx ON messages (block_index, message_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_match_expirations +DROP TABLE IF EXISTS order_match_expirations; +CREATE TABLE order_match_expirations( + order_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on order_match_expirations +CREATE TRIGGER block_update_order_match_expirations + BEFORE UPDATE ON order_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_match_expirations_block_index_idx ON order_match_expirations (block_index) + ; +CREATE INDEX order_match_expirations_tx0_address_idx ON order_match_expirations (tx0_address) + ; +CREATE INDEX order_match_expirations_tx1_address_idx ON order_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_matches +DROP TABLE IF EXISTS order_matches; +CREATE TABLE order_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + forward_asset TEXT, + forward_quantity INTEGER, + backward_asset TEXT, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_paid INTEGER, + status TEXT); +INSERT INTO order_matches VALUES('74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498_1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81',492,'74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',493,'1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'BTC',800000,310491,310492,310492,2000,2000,310512,7200,'pending'); +-- Triggers and indices on order_matches +CREATE TRIGGER block_update_order_matches + BEFORE UPDATE ON order_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_matches_backward_asset_idx ON order_matches (backward_asset) + ; +CREATE INDEX order_matches_block_index_idx ON order_matches (block_index) + ; +CREATE INDEX order_matches_forward_asset_idx ON order_matches (forward_asset) + ; +CREATE INDEX order_matches_id_idx ON order_matches (id) + ; +CREATE INDEX order_matches_match_expire_index_idx ON order_matches (match_expire_index) + ; +CREATE INDEX order_matches_status_idx ON order_matches (status) + ; +CREATE INDEX order_matches_tx0_address_forward_asset_idx ON order_matches (tx0_address, forward_asset) + ; +CREATE INDEX order_matches_tx0_hash_idx ON order_matches (tx0_hash) + ; +CREATE INDEX order_matches_tx1_address_backward_asset_idx ON order_matches (tx1_address, backward_asset) + ; +CREATE INDEX order_matches_tx1_hash_idx ON order_matches (tx1_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table order_expirations +DROP TABLE IF EXISTS order_expirations; +CREATE TABLE order_expirations( + order_hash TEXT PRIMARY KEY, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on order_expirations +CREATE TRIGGER block_update_order_expirations + BEFORE UPDATE ON order_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX order_expirations_block_index_idx ON order_expirations (block_index) + ; +CREATE INDEX order_expirations_source_idx ON order_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table orders +DROP TABLE IF EXISTS orders; +CREATE TABLE orders( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + give_asset TEXT, + give_quantity INTEGER, + give_remaining INTEGER, + get_asset TEXT, + get_quantity INTEGER, + get_remaining INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_required INTEGER, + fee_required_remaining INTEGER, + fee_provided INTEGER, + fee_provided_remaining INTEGER, + status TEXT); +INSERT INTO orders VALUES(7,'4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8',310006,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'DIVISIBLE',100000000,100000000,2000,312006,0,0,6800,6800,'open'); +INSERT INTO orders VALUES(10,'21460d5c07284f9be9baf824927d0d4e4eb790e297f3162305841607b672349b',310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'DIVISIBLE',100000000,100000000,2000,312009,0,0,6800,6800,'open'); +INSERT INTO orders VALUES(11,'1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a',310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'BTC',1000000,1000000,2000,312010,900000,900000,6800,6800,'open'); +INSERT INTO orders VALUES(12,'a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6',310011,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BTC',666667,666667,'XCP',100000000,100000000,2000,312011,0,0,1000000,1000000,'open'); +INSERT INTO orders VALUES(492,'74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498',310491,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'BTC',800000,800000,2000,312491,900000,900000,6800,6800,'open'); +INSERT INTO orders VALUES(493,'1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81',310492,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BTC',800000,800000,'XCP',100000000,100000000,2000,312492,0,0,1000000,1000000,'open'); +INSERT INTO orders VALUES(492,'74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498',310492,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,0,'BTC',800000,0,2000,312491,900000,892800,6800,6800,'open'); +INSERT INTO orders VALUES(493,'1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81',310492,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BTC',800000,0,'XCP',100000000,0,2000,312492,0,0,1000000,992800,'open'); +-- Triggers and indices on orders +CREATE TRIGGER block_update_orders + BEFORE UPDATE ON orders BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX orders_block_index_idx ON orders (block_index) + ; +CREATE INDEX orders_expire_index_idx ON orders (expire_index) + ; +CREATE INDEX orders_get_asset_give_asset_idx ON orders (get_asset, give_asset) + ; +CREATE INDEX orders_give_asset_idx ON orders (give_asset) + ; +CREATE INDEX orders_source_give_asset_idx ON orders (source, give_asset) + ; +CREATE INDEX orders_status_idx ON orders (status) + ; +CREATE INDEX orders_tx_hash_idx ON orders (tx_hash) + ; +CREATE INDEX orders_tx_index_tx_hash_idx ON orders (tx_index, tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_expirations +DROP TABLE IF EXISTS bet_match_expirations; +CREATE TABLE bet_match_expirations( + bet_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on bet_match_expirations +CREATE INDEX bet_match_expirations_block_index_idx ON bet_match_expirations (block_index) + ; +CREATE INDEX bet_match_expirations_tx0_address_idx ON bet_match_expirations (tx0_address) + ; +CREATE INDEX bet_match_expirations_tx1_address_idx ON bet_match_expirations (tx1_address) + ; +CREATE TRIGGER block_update_bet_match_expirations + BEFORE UPDATE ON bet_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_matches +DROP TABLE IF EXISTS bet_matches; +CREATE TABLE bet_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_bet_type INTEGER, + tx1_bet_type INTEGER, + feed_address TEXT, + initial_value INTEGER, + deadline INTEGER, + target_value REAL, + leverage INTEGER, + forward_quantity INTEGER, + backward_quantity INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bet_matches VALUES('2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',20,'2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',21,'5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',1,0,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000001,0.0,5040,9,9,310019,310020,310019,100,100,310119,5000000,'pending'); +INSERT INTO bet_matches VALUES('2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',20,'2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',21,'5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',1,0,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000001,0.0,5040,9,9,310019,310020,310102,100,100,310119,5000000,'settled'); +-- Triggers and indices on bet_matches +CREATE INDEX bet_matches_block_index_idx ON bet_matches (block_index) + ; +CREATE INDEX bet_matches_deadline_idx ON bet_matches (deadline) + ; +CREATE INDEX bet_matches_id_idx ON bet_matches (id) + ; +CREATE INDEX bet_matches_status_idx ON bet_matches (status) + ; +CREATE INDEX bet_matches_tx0_address_idx ON bet_matches (tx0_address) + ; +CREATE INDEX bet_matches_tx1_address_idx ON bet_matches (tx1_address) + ; +CREATE TRIGGER block_update_bet_matches + BEFORE UPDATE ON bet_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_match_resolutions +DROP TABLE IF EXISTS bet_match_resolutions; +CREATE TABLE bet_match_resolutions( + bet_match_id TEXT PRIMARY KEY, + bet_match_type_id INTEGER, + block_index INTEGER, + winner TEXT, + settled BOOL, + bull_credit INTEGER, + bear_credit INTEGER, + escrow_less_fee INTEGER, + fee INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +INSERT INTO bet_match_resolutions VALUES('2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',1,310102,'1',9,9,NULL,NULL,0); +-- Triggers and indices on bet_match_resolutions +CREATE TRIGGER block_update_bet_match_resolutions + BEFORE UPDATE ON bet_match_resolutions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bet_expirations +DROP TABLE IF EXISTS bet_expirations; +CREATE TABLE bet_expirations( + bet_index INTEGER PRIMARY KEY, + bet_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on bet_expirations +CREATE INDEX bet_expirations_block_index_idx ON bet_expirations (block_index) + ; +CREATE INDEX bet_expirations_source_idx ON bet_expirations (source) + ; +CREATE TRIGGER block_update_bet_expirations + BEFORE UPDATE ON bet_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table bets +DROP TABLE IF EXISTS bets; +CREATE TABLE bets( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + feed_address TEXT, + bet_type INTEGER, + deadline INTEGER, + wager_quantity INTEGER, + wager_remaining INTEGER, + counterwager_quantity INTEGER, + counterwager_remaining INTEGER, + target_value REAL, + leverage INTEGER, + expiration INTEGER, + expire_index INTEGER, + fee_fraction_int INTEGER, + status TEXT); +INSERT INTO bets VALUES(20,'2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1',310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000001,9,9,9,9,0.0,5040,100,310119,5000000,'open'); +INSERT INTO bets VALUES(21,'5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1388000001,9,9,9,9,0.0,5040,100,310120,5000000,'open'); +INSERT INTO bets VALUES(20,'2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1',310020,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000001,9,0,9,0,0.0,5040,100,310119,5000000,'filled'); +INSERT INTO bets VALUES(21,'5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93',310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1388000001,9,0,9,0,0.0,5040,100,310120,5000000,'filled'); +INSERT INTO bets VALUES(102,'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e',310101,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',3,1388000200,10,10,10,10,0.0,5040,1000,311101,5000000,'open'); +INSERT INTO bets VALUES(113,'d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048',310112,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',3,1388000200,10,10,10,10,0.0,5040,1000,311112,5000000,'open'); +INSERT INTO bets VALUES(488,'41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef',310487,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',1,1388000001,9,9,9,9,0.0,5040,100,310587,5000000,'open'); +-- Triggers and indices on bets +CREATE INDEX bets_block_index_idx ON bets (block_index) + ; +CREATE INDEX bets_expire_index_idx ON bets (expire_index) + ; +CREATE INDEX bets_feed_address_bet_type_idx ON bets (feed_address, bet_type) + ; +CREATE INDEX bets_feed_address_idx ON bets (feed_address) + ; +CREATE INDEX bets_status_idx ON bets (status) + ; +CREATE INDEX bets_tx_hash_idx ON bets (tx_hash) + ; +CREATE INDEX bets_tx_index_tx_hash_idx ON bets (tx_index, tx_hash) + ; +CREATE TRIGGER block_update_bets + BEFORE UPDATE ON bets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table broadcasts +DROP TABLE IF EXISTS broadcasts; +CREATE TABLE broadcasts( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + timestamp INTEGER, + value REAL, + fee_fraction_int INTEGER, + text TEXT, + locked BOOL, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO broadcasts VALUES(18,'d14388b74b63d93e4477b1fe8426028bb8ab20656703e3ce8deeb23c2fe0b8af',310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000000,1.0,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(19,'f9e0527c85a9084d7eda91fc30a49993370d029efea031a8ccccdf846146a660',310018,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH',0,NULL,NULL,NULL,1,'valid'); +INSERT INTO broadcasts VALUES(103,'16462eac6c795cea6e5985ee063867d8c61ae24373df02048186d28118d25bae',310102,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000002,1.0,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(112,'510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186',310111,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',1388000002,1.0,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(487,'3b95e07a2194174ac020de27e8b2b6ee24d5fc120f118df516ba28495657cf14',310486,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',1388000000,1.0,5000000,'Unit Test',0,'valid'); +INSERT INTO broadcasts VALUES(489,'870fb08b373705423f31ccd91fdbcabe135ad92d74e709a959dfa2e12f9a6638',310488,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',1388000002,1.0,0,'options 0',0,'valid'); +INSERT INTO broadcasts VALUES(490,'685d7f99fa76a05201c3239a4e0d9060ea53307b171f6ad7d482a26c73e9c0d1',310489,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',0,NULL,NULL,NULL,1,'valid'); +INSERT INTO broadcasts VALUES(491,'7c437705c315212315c85c0b8ba09d358679c91be20b54f30929c5a6052426af',310490,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',1388000004,1.0,0,'options 1',0,'valid'); +-- Triggers and indices on broadcasts +CREATE TRIGGER block_update_broadcasts + BEFORE UPDATE ON broadcasts BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX broadcasts_block_index_idx ON broadcasts (block_index) + ; +CREATE INDEX broadcasts_status_source_idx ON broadcasts (status, source) + ; +CREATE INDEX broadcasts_status_source_tx_index_idx ON broadcasts (status, source, tx_index) + ; +CREATE INDEX broadcasts_timestamp_idx ON broadcasts (timestamp) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table btcpays +DROP TABLE IF EXISTS btcpays; +CREATE TABLE btcpays( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + btc_amount INTEGER, + order_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on btcpays +CREATE TRIGGER block_update_btcpays + BEFORE UPDATE ON btcpays BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX btcpays_block_index_idx ON btcpays (block_index) + ; +CREATE INDEX btcpays_destination_idx ON btcpays (destination) + ; +CREATE INDEX btcpays_source_idx ON btcpays (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table burns +DROP TABLE IF EXISTS burns; +CREATE TABLE burns( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + burned INTEGER, + earned INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +INSERT INTO burns VALUES(1,'6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',310000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',62000000,93000000000,'valid'); +INSERT INTO burns VALUES(104,'65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b',310103,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',62000000,92999138821,'valid'); +INSERT INTO burns VALUES(105,'95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff',310104,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b',62000000,92999130460,'valid'); +INSERT INTO burns VALUES(106,'e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa',310105,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',62000000,92999122099,'valid'); +INSERT INTO burns VALUES(107,'bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3',310106,'mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK',10000,14999857,'valid'); +INSERT INTO burns VALUES(109,'93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73',310108,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',31000000,46499548508,'valid'); +INSERT INTO burns VALUES(117,'27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9',310116,'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx',62000000,92999030129,'valid'); +INSERT INTO burns VALUES(494,'c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a',310493,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH',62000000,92995878046,'valid'); +-- Triggers and indices on burns +CREATE TRIGGER block_update_burns + BEFORE UPDATE ON burns BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX burns_source_idx ON burns (source) + ; +CREATE INDEX burns_status_idx ON burns (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table cancels +DROP TABLE IF EXISTS cancels; +CREATE TABLE cancels( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + offer_hash TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on cancels +CREATE TRIGGER block_update_cancels + BEFORE UPDATE ON cancels BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX cancels_block_index_idx ON cancels (block_index) + ; +CREATE INDEX cancels_source_idx ON cancels (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dividends +DROP TABLE IF EXISTS dividends; +CREATE TABLE dividends( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset TEXT, + dividend_asset TEXT, + quantity_per_unit INTEGER, + fee_paid INTEGER, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dividends +CREATE TRIGGER block_update_dividends + BEFORE UPDATE ON dividends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dividends_asset_idx ON dividends (asset) + ; +CREATE INDEX dividends_block_index_idx ON dividends (block_index) + ; +CREATE INDEX dividends_source_idx ON dividends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table issuances +DROP TABLE IF EXISTS issuances; +CREATE TABLE "issuances"( + tx_index INTEGER, + tx_hash TEXT, + msg_index INTEGER DEFAULT 0, + block_index INTEGER, + asset TEXT, + quantity INTEGER, + divisible BOOL, + source TEXT, + issuer TEXT, + transfer BOOL, + callable BOOL, + call_date INTEGER, + call_price REAL, + description TEXT, + fee_paid INTEGER, + locked BOOL, + status TEXT, + asset_longname TEXT, + reset BOOL, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index)); +INSERT INTO issuances VALUES(2,'1fc2e5a57f584b2f2edd05676e75c33d03eed1d3098cc0550ea33474e3ec9db1',0,310001,'DIVISIBLE',100000000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Divisible asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(3,'7b1bf5144346279271b1ff78664f118224fe27fd8679d6c1519345f9c6c54584',0,310002,'NODIVISIBLE',1000,0,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'No divisible asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(4,'c26f3a0c4e57e41919ff27aae95a9a9d4d65d34c6da6f1893884a17c8d407140',0,310003,'CALLABLE',1000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Callable asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(5,'90b5734be98b0f2a0bd4b6a269c8db3368e2e387bb890ade239951d05423b4da',0,310004,'LOCKED',1000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Locked asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(6,'344dcc8909ca3a137630726d0071dfd2df4f7c855bac150c7d3a8367835c90bc',0,310005,'LOCKED',0,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Locked asset',0,1,'valid',NULL,0); +INSERT INTO issuances VALUES(17,'bd4e9cbbe69c2db893cd32182a2d315c89c45ba4e31aa5775d1fe42d841cea39',0,310016,'MAXI',9223372036854775807,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Maximum quantity',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(110,'e8baf787b9e4636a3cad0ffeb62992ad7abb160dc6506af0546f566dc178de7e',0,310109,'PAYTOSCRIPT',1000,0,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',0,0,0,0.0,'PSH issued asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(114,'34bce6f409758b3d6fd13282a99b277ef1fdf44a1025d2901075cac0249dbc63',0,310113,'LOCKEDPREV',1000,1,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',0,0,0,0.0,'Locked asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(115,'025b810fce7735c5869b90846007e5f604f60c1beda4c1695f1c7fbec3d44bc2',0,310114,'LOCKEDPREV',0,1,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',0,0,0,0.0,'Locked asset',0,1,'valid',NULL,0); +INSERT INTO issuances VALUES(116,'4ab1a24283c1dbfc710be7b215d64e8a4510ee97af019e210049c25773b50beb',0,310115,'LOCKEDPREV',0,1,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',0,0,0,0.0,'changed',0,0,'valid',NULL,0); +INSERT INTO issuances VALUES(495,'321bed395482e034f2ce0a4dbf28d1f800592a658e26ea91ae9c5b0928204503',0,310494,'DIVIDEND',100,1,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH',0,0,0,0.0,'',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(498,'076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f',0,310497,'PARENT',100000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Parent asset',50000000,0,'valid',NULL,0); +INSERT INTO issuances VALUES(499,'0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf',0,310498,'A95428956661682277',100000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Child of parent',25000000,0,'valid','PARENT.already.issued',0); +-- Triggers and indices on issuances +CREATE TRIGGER block_update_issuances + BEFORE UPDATE ON issuances BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX issuances_asset_longname_idx ON issuances (asset_longname) + ; +CREATE INDEX issuances_asset_status_idx ON issuances (asset, status) + ; +CREATE INDEX issuances_block_index_idx ON issuances (block_index) + ; +CREATE INDEX issuances_source_idx ON issuances (source) + ; +CREATE INDEX issuances_status_asset_tx_index_idx ON issuances (status, asset, tx_index DESC) + ; +CREATE INDEX issuances_status_idx ON issuances (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sends +DROP TABLE IF EXISTS sends; +CREATE TABLE "sends"( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + quantity INTEGER, + status TEXT, + msg_index INTEGER DEFAULT 0, memo BLOB, + PRIMARY KEY (tx_index, msg_index), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), + UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); +INSERT INTO sends VALUES(8,'6e91ae23de2035e3e28c3322712212333592a1f666bcff9dd91aec45d5ea2753',310007,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000,'valid',0,NULL); +INSERT INTO sends VALUES(9,'4fd55abadfdbe77c3bda2431749cca934a29994a179620a62c1b57f28bd62a43',310008,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'valid',0,NULL); +INSERT INTO sends VALUES(13,'698e97e507da8623cf38ab42701853443c8f7fe0d93b4674aabb42f9800ee9d6',310012,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000,'valid',0,NULL); +INSERT INTO sends VALUES(14,'0cfeeb559ed794d067557df0376a6c213b48b174b80cdb2c3c6d365cf538e132',310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000,'valid',0,NULL); +INSERT INTO sends VALUES(15,'1facb0072f16f6bdca64ea859c82b850f58f0ec7ff410d901679772a4727515a',310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5,'valid',0,NULL); +INSERT INTO sends VALUES(16,'e3b6667b7baa515048a7fcf2be7818e3e7622371236b78e19b4b08e2d7e7818c',310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10,'valid',0,NULL); +INSERT INTO sends VALUES(111,'f6a0f819e899b407cbfa07b4eff3d58902af3899abfbaa47d5f31d5b398e76e7',310110,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000,'valid',0,NULL); +INSERT INTO sends VALUES(482,'b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5',310481,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'valid',0,X'68656C6C6F'); +INSERT INTO sends VALUES(483,'c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34',310482,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'valid',0,X'FADE0001'); +INSERT INTO sends VALUES(496,'02156b9a1f643fb48330396274a37620c8abbbe5eddb2f8b53dadd135f5d2e2e',310495,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10,'valid',0,NULL); +INSERT INTO sends VALUES(497,'a35ab1736565aceddbd1d71f92fc7f39d1361006aa9099f731e54e762964d5ba',310496,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046,'valid',0,NULL); +-- Triggers and indices on sends +CREATE TRIGGER block_update_sends + BEFORE UPDATE ON sends BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sends_asset_idx ON sends (asset) + ; +CREATE INDEX sends_block_index_idx ON sends (block_index) + ; +CREATE INDEX sends_destination_idx ON sends (destination) + ; +CREATE INDEX sends_memo_idx ON sends (memo) + ; +CREATE INDEX sends_source_idx ON sends (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_match_expirations +DROP TABLE IF EXISTS rps_match_expirations; +CREATE TABLE rps_match_expirations( + rps_match_id TEXT PRIMARY KEY, + tx0_address TEXT, + tx1_address TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_match_expirations +CREATE TRIGGER block_update_rps_match_expirations + BEFORE UPDATE ON rps_match_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_match_expirations_block_index_idx ON rps_match_expirations (block_index) + ; +CREATE INDEX rps_match_expirations_tx0_address_idx ON rps_match_expirations (tx0_address) + ; +CREATE INDEX rps_match_expirations_tx1_address_idx ON rps_match_expirations (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_expirations +DROP TABLE IF EXISTS rps_expirations; +CREATE TABLE rps_expirations( + rps_index INTEGER PRIMARY KEY, + rps_hash TEXT UNIQUE, + source TEXT, + block_index INTEGER, + FOREIGN KEY (block_index) REFERENCES blocks(block_index)); +-- Triggers and indices on rps_expirations +CREATE TRIGGER block_update_rps_expirations + BEFORE UPDATE ON rps_expirations BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expirations_block_index_idx ON rps_expirations (block_index) + ; +CREATE INDEX rps_expirations_source_idx ON rps_expirations (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rpsresolves +DROP TABLE IF EXISTS rpsresolves; +CREATE TABLE rpsresolves( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + move INTEGER, + random TEXT, + rps_match_id TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on rpsresolves +CREATE TRIGGER block_update_rpsresolves + BEFORE UPDATE ON rpsresolves BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rpsresolves_block_index_idx ON rpsresolves (block_index) + ; +CREATE INDEX rpsresolves_rps_match_id_idx ON rpsresolves (rps_match_id) + ; +CREATE INDEX rpsresolves_source_idx ON rpsresolves (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps_matches +DROP TABLE IF EXISTS rps_matches; +CREATE TABLE rps_matches( + id TEXT, + tx0_index INTEGER, + tx0_hash TEXT, + tx0_address TEXT, + tx1_index INTEGER, + tx1_hash TEXT, + tx1_address TEXT, + tx0_move_random_hash TEXT, + tx1_move_random_hash TEXT, + wager INTEGER, + possible_moves INTEGER, + tx0_block_index INTEGER, + tx1_block_index INTEGER, + block_index INTEGER, + tx0_expiration INTEGER, + tx1_expiration INTEGER, + match_expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps_matches +CREATE TRIGGER block_update_rps_matches + BEFORE UPDATE ON rps_matches BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_matches_id_idx ON rps_matches (id) + ; +CREATE INDEX rps_matches_match_expire_index_idx ON rps_matches (match_expire_index) + ; +CREATE INDEX rps_matches_status_idx ON rps_matches (status) + ; +CREATE INDEX rps_matches_tx0_address_idx ON rps_matches (tx0_address) + ; +CREATE INDEX rps_matches_tx1_address_idx ON rps_matches (tx1_address) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table rps +DROP TABLE IF EXISTS rps; +CREATE TABLE rps( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + possible_moves INTEGER, + wager INTEGER, + move_random_hash TEXT, + expiration INTEGER, + expire_index INTEGER, + status TEXT); +-- Triggers and indices on rps +CREATE TRIGGER block_update_rps + BEFORE UPDATE ON rps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX rps_expire_index_idx ON rps (expire_index) + ; +CREATE INDEX rps_source_idx ON rps (source) + ; +CREATE INDEX rps_status_idx ON rps (status) + ; +CREATE INDEX rps_tx_hash_idx ON rps (tx_hash) + ; +CREATE INDEX rps_tx_index_idx ON rps (tx_index) + ; +CREATE INDEX rps_tx_index_tx_hash_idx ON rps (tx_index, tx_hash) + ; +CREATE INDEX rps_wager_possible_moves_idx ON rps (wager, possible_moves) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table destructions +DROP TABLE IF EXISTS destructions; +CREATE TABLE destructions( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + asset INTEGER, + quantity INTEGER, + tag TEXT, + status TEXT, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on destructions +CREATE TRIGGER block_update_destructions + BEFORE UPDATE ON destructions BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX destructions_source_idx ON destructions (source) + ; +CREATE INDEX destructions_status_idx ON destructions (status) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table assets +DROP TABLE IF EXISTS assets; +CREATE TABLE assets( + asset_id TEXT UNIQUE, + asset_name TEXT UNIQUE, + block_index INTEGER, + asset_longname TEXT); +INSERT INTO assets VALUES('0','BTC',NULL,NULL); +INSERT INTO assets VALUES('1','XCP',NULL,NULL); +INSERT INTO assets VALUES('697326324582','DIVISIBLE',310001,NULL); +INSERT INTO assets VALUES('1911882621324134','NODIVISIBLE',310002,NULL); +INSERT INTO assets VALUES('16199343190','CALLABLE',310003,NULL); +INSERT INTO assets VALUES('137134819','LOCKED',310004,NULL); +INSERT INTO assets VALUES('211518','MAXI',310016,NULL); +INSERT INTO assets VALUES('2122675428648001','PAYTOSCRIPT',310109,NULL); +INSERT INTO assets VALUES('62667321322601','LOCKEDPREV',310113,NULL); +INSERT INTO assets VALUES('26819977213','DIVIDEND',310494,NULL); +INSERT INTO assets VALUES('178522493','PARENT',310497,NULL); +INSERT INTO assets VALUES('95428956661682277','A95428956661682277',310498,'PARENT.already.issued'); +-- Triggers and indices on assets +CREATE INDEX assets_asset_id_idx ON assets (asset_id) + ; +CREATE UNIQUE INDEX assets_asset_longname_idx ON assets (asset_longname) + ; +CREATE INDEX assets_asset_name_idx ON assets (asset_name) + ; +CREATE TRIGGER block_update_assets + BEFORE UPDATE ON assets BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table addresses +DROP TABLE IF EXISTS addresses; +CREATE TABLE addresses( + address TEXT UNIQUE, + options INTEGER, + block_index INTEGER); +INSERT INTO addresses VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',0,310488); +INSERT INTO addresses VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',1,310490); +-- Triggers and indices on addresses +CREATE INDEX addresses_address_idx ON addresses (address) + ; +CREATE TRIGGER block_update_addresses + BEFORE UPDATE ON addresses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table sweeps +DROP TABLE IF EXISTS sweeps; +CREATE TABLE sweeps( + tx_index INTEGER PRIMARY KEY, + tx_hash TEXT UNIQUE, + block_index INTEGER, + source TEXT, + destination TEXT, + flags INTEGER, + status TEXT, + memo BLOB, + fee_paid INTEGER, + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on sweeps +CREATE TRIGGER block_update_sweeps + BEFORE UPDATE ON sweeps BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX sweeps_block_index_idx ON sweeps (block_index) + ; +CREATE INDEX sweeps_destination_idx ON sweeps (destination) + ; +CREATE INDEX sweeps_memo_idx ON sweeps (memo) + ; +CREATE INDEX sweeps_source_idx ON sweeps (source) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispensers +DROP TABLE IF EXISTS dispensers; +CREATE TABLE dispensers( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + asset TEXT, + give_quantity INTEGER, + escrow_quantity INTEGER, + satoshirate INTEGER, + status INTEGER, + give_remaining INTEGER, + oracle_address TEXT, + last_status_tx_hash TEXT, + origin TEXT, + dispense_count INTEGER DEFAULT 0); +INSERT INTO dispensers VALUES(108,'9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec',310107,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',100,100,100,0,100,NULL,NULL,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b',0); +-- Triggers and indices on dispensers +CREATE TRIGGER block_update_dispensers + BEFORE UPDATE ON dispensers BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispensers_asset_idx ON dispensers (asset) + ; +CREATE INDEX dispensers_block_index_idx ON dispensers (block_index) + ; +CREATE INDEX dispensers_give_remaining_idx ON dispensers (give_remaining) + ; +CREATE INDEX dispensers_last_status_tx_hash_idx ON dispensers (last_status_tx_hash) + ; +CREATE INDEX dispensers_source_asset_origin_idx ON dispensers (source, asset, origin) + ; +CREATE INDEX dispensers_source_idx ON dispensers (source) + ; +CREATE INDEX dispensers_source_origin_idx ON dispensers (source, origin) + ; +CREATE INDEX dispensers_status_block_index_idx ON dispensers (status, block_index) + ; +CREATE INDEX dispensers_status_idx ON dispensers (status) + ; +CREATE INDEX dispensers_tx_hash_idx ON dispensers (tx_hash) + ; +CREATE INDEX dispensers_tx_index_idx ON dispensers (tx_index) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenses +DROP TABLE IF EXISTS dispenses; +CREATE TABLE dispenses ( + tx_index INTEGER, + dispense_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, dispense_index, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenses +CREATE TRIGGER block_update_dispenses + BEFORE UPDATE ON dispenses BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenses_block_index_idx ON dispenses (block_index) + ; +CREATE INDEX dispenses_dispenser_tx_hash_idx ON dispenses (dispenser_tx_hash) + ; +CREATE INDEX dispenses_tx_hash_idx ON dispenses (tx_hash) + ; + +COMMIT TRANSACTION; +PRAGMA page_size=4096; +-- PRAGMA encoding='UTF-8'; +-- PRAGMA auto_vacuum=FULL; +-- PRAGMA max_page_count=4294967294; + +BEGIN TRANSACTION; + +-- Table dispenser_refills +DROP TABLE IF EXISTS dispenser_refills; +CREATE TABLE dispenser_refills( + tx_index INTEGER, + tx_hash TEXT, + block_index INTEGER, + source TEXT, + destination TEXT, + asset TEXT, + dispense_quantity INTEGER, + dispenser_tx_hash TEXT, + PRIMARY KEY (tx_index, tx_hash, source, destination), + FOREIGN KEY (tx_index, tx_hash, block_index) + REFERENCES transactions(tx_index, tx_hash, block_index)); +-- Triggers and indices on dispenser_refills +CREATE TRIGGER block_update_dispenser_refills + BEFORE UPDATE ON dispenser_refills BEGIN + SELECT RAISE(FAIL, "UPDATES NOT ALLOWED"); + END; +CREATE INDEX dispenser_refills_block_index_idx ON dispenser_refills (block_index) + ; +CREATE INDEX dispenser_refills_tx_hash_idx ON dispenser_refills (tx_hash) + ; + +COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/unspent_outputs.json b/counterparty-lib/counterpartylib/test/fixtures/unspent_outputs.json similarity index 94% rename from counterpartylib/test/fixtures/unspent_outputs.json rename to counterparty-lib/counterpartylib/test/fixtures/unspent_outputs.json index 9bc1eb9fca..b3bb66cefb 100644 --- a/counterpartylib/test/fixtures/unspent_outputs.json +++ b/counterparty-lib/counterpartylib/test/fixtures/unspent_outputs.json @@ -360,5 +360,25 @@ "txid": "eac206b369d8130892c8be2d52f7bd9e3e0324870262daf3a19264246068ed2b", "value": 5608646, "vout": 0 + }, + { + "address": "3H2JUpX9BcKYus2oNDFE4aNqp7r7iLAji9", + "amount": 0.00016550, + "confirmations": 6, + "scriptPubKey": "a914a82f9c564b792ee927af9e6d068daea1ba55a30087", + "txhex": "010000000102d2b137e49e930ef3e436b342713d8d07bd378e773c915a5938993d81dc7e6000000000fdab0147304402207848293e88563750f647e949cb594cdbec0beb4070faac73040d77d479420f8302201e0ac32788e98bd984279102b7382576d7ddb4b125d1d507725cbd12d97a2908014d60014d1401434e5452505254590300010042276049e5518791be2ffe2c301f5dfe9ef85dd0400001720034b0410000000000000001500000006a79811e000000000000000054000079cec1665f4800000000000000050000000ca91f2d660000000000000005402736c8de6e34d54000000000000001500c5e4c71e081ceb00000000000000054000000045dc03ec4000000000000000500004af1271cf5fc00000000000000054001e71f8464432780000000000000015000002e1e4191f0d0000000000000005400012bc4aaac2a54000000000000001500079c7e774e411c00000000000000054000000045dc0a6f00000000000000015000002e1e486f661000000000000000540001c807abe13908000000000000000475410426156245525daa71f2e84a40797bcf28099a2c508662a8a33324a703597b9aa2661a79a82ffb4caaa9b15f4094622fbfa85f8b9dc7381f991f5a265421391cc3ad0075740087ffffffff0100000000000000000e6a0c31d52bf3b404aefaf596cfd000000000", + "txid": "d90dc8637fd2ab9ae39b7c2929c793c5d28d7dea672afb02fb4001637085e9a1", + "value": 16550, + "vout": 0 + }, + { + "address": "1JDogZS6tQcSxwfxhv6XKKjcyicYA4Feev", + "amount": 0.00016550, + "confirmations": 6, + "scriptPubKey": "76a914bce6191bf2fd5981313cae869e9fafe164f7dbaf88ac", + "txhex": "01000000015cd3715eecfdbbdafa258af5c8c11c856a484bfe24590238a7f59400ec4f91ee010000008b4830450221008b0c689720948228c6fbca58caaf8aedfbefe6ecc696642dafdefa7bcef1f05a02200d8e85f82fd63eaf7b2a66b095eed2064eb562cc86fb188f19c59048192d1fcc01410426156245525daa71f2e84a40797bcf28099a2c508662a8a33324a703597b9aa2661a79a82ffb4caaa9b15f4094622fbfa85f8b9dc7381f991f5a265421391cc3ffffffff02a64000000000000017a914a82f9c564b792ee927af9e6d068daea1ba55a3008776712c00000000001976a914bce6191bf2fd5981313cae869e9fafe164f7dbaf88ac00000000", + "txid": "607edc813d9938595a913c778e37bd078d3d7142b336e4f30e939ee437b1d202", + "value": 16550, + "vout": 0 } ] diff --git a/counterpartylib/test/fixtures/vectors.py b/counterparty-lib/counterpartylib/test/fixtures/vectors.py similarity index 80% rename from counterpartylib/test/fixtures/vectors.py rename to counterparty-lib/counterpartylib/test/fixtures/vectors.py index 9144abe5f6..2bfe5a5b4d 100644 --- a/counterpartylib/test/fixtures/vectors.py +++ b/counterparty-lib/counterpartylib/test/fixtures/vectors.py @@ -18,9 +18,11 @@ from counterpartylib.lib import config from counterpartylib.lib import exceptions from counterpartylib.lib import script +from counterpartylib.lib.kickstart.blocks_parser import BlockchainParser from counterpartylib.lib.messages import issuance from counterpartylib.lib.api import APIError -from counterpartylib.lib.util import (DebitError, CreditError, QuantityError, RPCError) +from counterpartylib.lib.util import (QuantityError, RPCError) +from counterpartylib.lib.ledger import (DebitError, CreditError) from fractions import Fraction from counterpartylib.lib import address @@ -174,7 +176,8 @@ }} ] }, { - 'in': ({'supported': 1, 'data': b'\x00\x00\x00(\x00\x02R\xbb3\xc8\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\xb0\x00\x00\x03\xe8', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'destination': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'btc_amount': 5430, 'block_index': DP['default_block_index'], 'block_hash': '46ac6d09237c7961199068fdd13f1508d755483e07c57a4c8f7ff18eb33a05c93ca6a86fa2e2af82fb77a5c337146bb37e279797a3d11970aec4693c46ea5a58', 'tx_index': 502, 'tx_hash': '30b9ca8488a931dffa1d8d3ac8f1c51360a29cedb7c703840becc8a95f81188c', 'block_time': 310501000, 'fee': 10000},), + 'in': ( + {'supported': 1, 'data': b'\x00\x00\x00(\x00\x02R\xbb3\xc8\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\xb0\x00\x00\x03\xe8', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'destination': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'btc_amount': 5430, 'block_index': DP['default_block_index'], 'block_hash': '46ac6d09237c7961199068fdd13f1508d755483e07c57a4c8f7ff18eb33a05c93ca6a86fa2e2af82fb77a5c337146bb37e279797a3d11970aec4693c46ea5a58', 'tx_index': 502, 'tx_hash': '30b9ca8488a931dffa1d8d3ac8f1c51360a29cedb7c703840becc8a95f81188c', 'block_time': 310501000, 'fee': 10000},), 'records': [ {'table': 'bets', 'values': { 'bet_type': 2, @@ -197,7 +200,7 @@ }}, {'table': 'bets', 'values': { 'bet_type': 3, - 'block_index': 310101, + 'block_index': DP['default_block_index'], 'counterwager_quantity': 10, 'counterwager_remaining': 0, 'deadline': 1388000200, @@ -209,7 +212,7 @@ 'source': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'status': 'filled', 'target_value': 0.0, - 'tx_hash': 'aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305', + 'tx_hash': 'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e', 'tx_index': 102, 'wager_quantity': 10, 'wager_remaining': 0, @@ -231,7 +234,7 @@ }], # TODO: Test match by calling parse. Add all skipping modes 'match': [{ - 'in': ({'tx_index': 99999999},), + 'in': ({'tx_index': 99999999, 'tx_hash':'fakehash'},), 'out': None }, { 'in': ({'block_hash': '46ac6d09237c7961199068fdd13f1508d755483e07c57a4c8f7ff18eb33a05c93ca6a86fa2e2af82fb77a5c337146bb37e279797a3d11970aec4693c46ea5a58', @@ -261,14 +264,23 @@ # }} # ] # }], + 'cancel_bet': [{ - 'in': ({'counterwager_quantity': 10, 'wager_remaining': 10, 'target_value': 0.0, 'source': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'feed_address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'counterwager_remaining': 10, 'tx_index': 102, 'block_index': 310101, 'deadline': 1388000200, 'bet_type': 3, 'expiration': 1000, 'expire_index': 311101, 'tx_hash': 'aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305', 'leverage': 5040, 'wager_quantity': 10, 'fee_fraction_int': 5000000, 'status': 'open'}, 'filled', DP['default_block_index']), + 'in': ( + { + 'counterwager_quantity': 10, + 'wager_remaining': 10, + 'target_value': 0.0, 'source': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'feed_address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'counterwager_remaining': 10, 'tx_index': 102, 'block_index': 310101, 'deadline': 1388000200, 'bet_type': 3, 'expiration': 1000, 'expire_index': 311101, 'tx_hash': 'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e', 'leverage': 5040, 'wager_quantity': 10, 'fee_fraction_int': 5000000, 'status': 'open' + }, + 'filled', + DP['default_block_index'], + 0), 'records': [ {'table': 'bets', 'values': { 'bet_type': 3, 'expiration': 1000, 'expire_index': 311101, - 'block_index': 310101, + 'block_index': 310500, 'deadline': 1388000200, 'counterwager_quantity': 10, 'wager_remaining': 10, @@ -281,21 +293,25 @@ 'wager_quantity': 10, 'source': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'target_value': 0.0, - 'tx_hash': 'aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305', + 'tx_hash': 'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e', }} ] }], 'cancel_bet_match': [{ - 'in': ({'tx0_block_index': 310019, 'backward_quantity': 9, 'initial_value': 1, 'tx1_expiration': 100, 'id': 'c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0', 'feed_address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'status': 'settled', 'leverage': 5040, 'target_value': 0.0, 'fee_fraction_int': 5000000, 'tx0_address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'deadline': 1388000001, 'tx1_bet_type': 0, 'tx1_address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'tx0_index': 20, 'tx1_hash': 'acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0', 'tx0_hash': 'c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d', 'block_index': 310020, 'forward_quantity': 9, 'match_expire_index': 310119, 'tx1_block_index': 310020, 'tx0_expiration': 100, 'tx1_index': 21, 'tx0_bet_type': 1}, 'filled', DP['default_block_index']), + 'in': ( + {'tx0_block_index': 310019, 'backward_quantity': 9, 'initial_value': 1, 'tx1_expiration': 100, 'id': '2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93', 'feed_address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'status': 'settled', 'leverage': 5040, 'target_value': 0.0, 'fee_fraction_int': 5000000, 'tx0_address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'deadline': 1388000001, 'tx1_bet_type': 0, 'tx1_address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'tx0_index': 20, 'tx1_hash': '5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93', 'tx0_hash': '2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1', 'block_index': 310020, 'forward_quantity': 9, 'match_expire_index': 310119, 'tx1_block_index': 310020, 'tx0_expiration': 100, 'tx1_index': 21, 'tx0_bet_type': 1}, + 'filled', + DP['default_block_index'], + 0), 'records': [ {'table': 'bet_matches', 'values': { 'backward_quantity': 9, - 'block_index': 310020, + 'block_index': 310500, 'deadline': 1388000001, 'fee_fraction_int': 5000000, 'feed_address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'forward_quantity': 9, - 'id': 'c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0', + 'id': '2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1_5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93', 'initial_value': 1, 'leverage': 5040, 'match_expire_index': 310119, @@ -305,98 +321,88 @@ 'tx0_bet_type': 1, 'tx0_block_index': 310019, 'tx0_expiration': 100, - 'tx0_hash': 'c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d', + 'tx0_hash': '2a2169991597036b6dad687ea1feffd55465a204466f40c35cbba811cb3109b1', 'tx0_index': 20, 'tx1_address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'tx1_bet_type': 0, 'tx1_block_index': 310020, 'tx1_expiration': 100, - 'tx1_hash': 'acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0', + 'tx1_hash': '5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93', 'tx1_index': 21, }} ] }], }, - 'blocks': { - 'parse_tx': [{ - 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc-mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj', 'supported': 1, 'block_index': DP['default_block_index'], 'fee': 10000, 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'data': b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00', 'tx_index': 502, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'},), - 'out': None - }, { - 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1, 'block_index': DP['default_block_index'], 'fee': 10000, 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'data': b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00', 'tx_index': 502, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns-mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj'},), - 'out': None - }], - 'get_next_tx_index': [{ - 'in': (), - 'out': 500 - }], - 'last_db_index': [{ - 'in': (), - 'out': DP['default_block_index'] - 1 - }], + 'gettxinfo': { 'get_tx_info': [ # data in OP_CHECKSIG script { - 'in': (b'0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0636150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac36150000000000001976a9147da51ea175f108a1c63588683dc4c43a7146c46788ac36150000000000001976a9147da51ea175f108a1c6358868173e34e8ca75a06788ac36150000000000001976a9147da51ea175f108a1c637729895c4c468ca75a06788ac36150000000000001976a9147fa51ea175f108a1c63588682ed4c468ca7fa06788ace24ff505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000',), + 'in': (BlockchainParser().deserialize_tx('0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0636150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac36150000000000001976a9147da51ea175f108a1c63588683dc4c43a7146c46788ac36150000000000001976a9147da51ea175f108a1c6358868173e34e8ca75a06788ac36150000000000001976a9147da51ea175f108a1c637729895c4c468ca75a06788ac36150000000000001976a9147fa51ea175f108a1c63588682ed4c468ca7fa06788ace24ff505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000', use_txid=True), + DP['default_block_index']), 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 5430, 10000, b'\x00\x00\x00(\x00\x00R\xbb3d\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x10\x00\x00\x00\n', - None) + []) }, # data in OP_CHECKMULTISIG script { - 'in': (b'0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae4286f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000',), + 'in': (BlockchainParser().deserialize_tx('0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae4286f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000', use_txid=True), + DP['default_block_index']), 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 5430, 10000, b'\x00\x00\x00(\x00\x00R\xbb3d\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x10\x00\x00\x00\n', - None) + []) }, # data in OP_CHECKMULTISIG script, destination = p2sh { - 'in': (b'0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae4286f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000',), + 'in': (BlockchainParser().deserialize_tx('0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae4286f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000', use_txid=True), + DP['default_block_index']), 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy', 5430, 10000, b'\x00\x00\x00(\x00\x00R\xbb3d\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x10\x00\x00\x00\n', - None) + []) }, { # 2 sources is actually invalid, but pre-first_input_is_source this was the consensus! 'mock_protocol_changes': {'first_input_is_source': False}, 'comment': 'data in OP_CHECKMULTISIG script , without first_input_is_source, 2 sources', - 'in': (b'0100000002ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff5ef833190e74ad47d8ae693f841a8b1b500ded7e23ee66b29898b72ec4914fdc0100000000ffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753aed2fe7c11000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000',), + 'in': (BlockchainParser().deserialize_tx('0100000002ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff5ef833190e74ad47d8ae693f841a8b1b500ded7e23ee66b29898b72ec4914fdc0100000000ffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753aed2fe7c11000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000', use_txid=True), + DP['default_block_index']), 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns-mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH', '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy', 5430, 10000, b'\x00\x00\x00(\x00\x00R\xbb3d\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x10\x00\x00\x00\n', - None) + []) }, { 'comment': 'data in OP_CHECKMULTISIG script, with first_input_is_source, 1 source', - 'in': (b'0100000002ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff5ef833190e74ad47d8ae693f841a8b1b500ded7e23ee66b29898b72ec4914fdc0100000000ffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753aed2fe7c11000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000',), + 'in': (BlockchainParser().deserialize_tx('0100000002ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff5ef833190e74ad47d8ae693f841a8b1b500ded7e23ee66b29898b72ec4914fdc0100000000ffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753aed2fe7c11000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000', use_txid=True), + DP['default_block_index']), 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy', 5430, 10000, b'\x00\x00\x00(\x00\x00R\xbb3d\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x10\x00\x00\x00\n', - None) + []) } ], - 'get_tx_info1': [ + 'get_tx_info_legacy': [ # data in OP_CHECKSIG script { - 'in': (b'0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0636150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac36150000000000001976a9147da51ea175f108a1c63588683dc4c43a7146c46788ac36150000000000001976a9147da51ea175f108a1c6358868173e34e8ca75a06788ac36150000000000001976a9147da51ea175f108a1c637729895c4c468ca75a06788ac36150000000000001976a9147fa51ea175f108a1c63588682ed4c468ca7fa06788ace24ff505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000', DP['default_block_index']), + 'in': (BlockchainParser().deserialize_tx('0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0636150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac36150000000000001976a9147da51ea175f108a1c63588683dc4c43a7146c46788ac36150000000000001976a9147da51ea175f108a1c6358868173e34e8ca75a06788ac36150000000000001976a9147da51ea175f108a1c637729895c4c468ca75a06788ac36150000000000001976a9147fa51ea175f108a1c63588682ed4c468ca7fa06788ace24ff505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000', use_txid=True), DP['default_block_index']), 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 5430, 10000, b'\x00\x00\x00(\x00\x00R\xbb3d\x00TESTXXXX\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00TESTXXXX\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00TESTXXXX\x00\x00\x00;\x10\x00\x00\x00\n\x9b\xb3Q\x92(6\xc8\x86\x81i\x87\xe1\x0b\x03\xb8_8v\x8b', - None), + []), }, # # data in OP_CHECKMULTISIG script, unsupported by get_tx_info1 # { @@ -409,97 +415,134 @@ # 'error': (exceptions.DecodeError, 'no prefix') # } ], - 'get_tx_info2': [ + 'get_tx_info_new': [ # data in OP_CHECKSIG script { - 'in': (b'0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0636150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac36150000000000001976a9147da51ea175f108a1c63588683dc4c43a7146c46788ac36150000000000001976a9147da51ea175f108a1c6358868173e34e8ca75a06788ac36150000000000001976a9147da51ea175f108a1c637729895c4c468ca75a06788ac36150000000000001976a9147fa51ea175f108a1c63588682ed4c468ca7fa06788ace24ff505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000',), + 'in': (BlockchainParser().deserialize_tx('0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0636150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac36150000000000001976a9147da51ea175f108a1c63588683dc4c43a7146c46788ac36150000000000001976a9147da51ea175f108a1c6358868173e34e8ca75a06788ac36150000000000001976a9147da51ea175f108a1c637729895c4c468ca75a06788ac36150000000000001976a9147fa51ea175f108a1c63588682ed4c468ca7fa06788ace24ff505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000', use_txid=True), + DP['default_block_index'],), 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 5430, 10000, b'\x00\x00\x00(\x00\x00R\xbb3d\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x10\x00\x00\x00\n', - None) + []) }, # data in OP_CHECKMULTISIG script { - 'in': (b'0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae4286f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000',), + 'in': (BlockchainParser().deserialize_tx('0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae4286f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000', use_txid=True), + DP['default_block_index'],), 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 5430, 10000, b'\x00\x00\x00(\x00\x00R\xbb3d\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x10\x00\x00\x00\n', - None) + []) }, # data in OP_CHECKMULTISIG script, destination = p2sh, unsupported by get_tx_info2 { - 'in': (b'0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae4286f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000',), - 'error': (exceptions.DecodeError, 'unrecognised output type') - } - ], - 'get_tx_info3': [ + 'in': (BlockchainParser().deserialize_tx('0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae4286f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000', use_txid=True), + DP['default_block_index'],), + 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', + '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy', + 5430, + 10000, + b'\x00\x00\x00(\x00\x00R\xbb3d\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x10\x00\x00\x00\n', + []) + }, + #'get_tx_info3' # data in OP_CHECKSIG script { - 'in': (b'0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0636150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac36150000000000001976a9147da51ea175f108a1c63588683dc4c43a7146c46788ac36150000000000001976a9147da51ea175f108a1c6358868173e34e8ca75a06788ac36150000000000001976a9147da51ea175f108a1c637729895c4c468ca75a06788ac36150000000000001976a9147fa51ea175f108a1c63588682ed4c468ca7fa06788ace24ff505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000',), + 'in': ( + BlockchainParser().deserialize_tx('0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0636150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac36150000000000001976a9147da51ea175f108a1c63588683dc4c43a7146c46788ac36150000000000001976a9147da51ea175f108a1c6358868173e34e8ca75a06788ac36150000000000001976a9147da51ea175f108a1c637729895c4c468ca75a06788ac36150000000000001976a9147fa51ea175f108a1c63588682ed4c468ca7fa06788ace24ff505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000', use_txid=True), + DP['default_block_index'], + None, + True), 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 5430, 10000, b'\x00\x00\x00(\x00\x00R\xbb3d\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x10\x00\x00\x00\n', - None) + []) }, # data in OP_CHECKMULTISIG script { - 'in': (b'0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae4286f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000',), + 'in': (BlockchainParser().deserialize_tx('0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae4286f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000', use_txid=True), + DP['default_block_index'], + None, + True), 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 5430, 10000, b'\x00\x00\x00(\x00\x00R\xbb3d\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x10\x00\x00\x00\n', - None) + []) }, # data in OP_CHECKMULTISIG script, destination = p2sh, unsupported by get_tx_info2 { - 'in': (b'0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae4286f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000',), + 'in': (BlockchainParser().deserialize_tx('0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87781e000000000000695121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae4286f505000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000', use_txid=True), + DP['default_block_index'], + None, + True), 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy', 5430, 10000, b'\x00\x00\x00(\x00\x00R\xbb3d\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x10\x00\x00\x00\n', - None) + []) }, { - 'in': ('0100000001aee668de98ef5f37d4962b620b0ec3deed8bbd4c2fb8ddedaf36c2e8ca5e51a7060000001976a914f3a6b6e4a093e5a5b9da76977a5270fd4d62553e88acffffffff04781e000000000000695121027c6a5e4412be80b5ccd5aa0ea685a21e7a577a5e390d138288841d06514b47992103b00007171817fb044e8a5464e3e274210dd64cf68cca9ea9c3e06df384aae6b22103d928d7d5bbe6f435da935ed382a0061c4a22bdc9b60a2ce6deb7d0f134d22eef53ae781e000000000000695121037c6a5e4412be80b5cc13bde2d9b04fd2cd1fc7ff664c0d3b6d8133163857b08f2103bb6fba40bee91bb02b54835b32f14b9e04016bfa34411ec64f09e3a9586efd5d2103d928d7d5bbe6f435da935ed382a0061c4a22bdc9b60a2ce6deb7d0f134d22eef53ae781e00000000000069512102696a5e4412be80b5ccd6aa0ac9a95e43ca49a21d40f762fadc1aab1c25909fb02102176c68252c6b855d7967aee372f14b772c963b2aa0411ec64f09e3a951eefd3e2103d928d7d5bbe6f435da935ed382a0061c4a22bdc9b60a2ce6deb7d0f134d22eef53aea8d37700000000001976a914f3a6b6e4a093e5a5b9da76977a5270fd4d62553e88ac00000000',), + 'in': (BlockchainParser().deserialize_tx('0100000001aee668de98ef5f37d4962b620b0ec3deed8bbd4c2fb8ddedaf36c2e8ca5e51a7060000001976a914f3a6b6e4a093e5a5b9da76977a5270fd4d62553e88acffffffff04781e000000000000695121027c6a5e4412be80b5ccd5aa0ea685a21e7a577a5e390d138288841d06514b47992103b00007171817fb044e8a5464e3e274210dd64cf68cca9ea9c3e06df384aae6b22103d928d7d5bbe6f435da935ed382a0061c4a22bdc9b60a2ce6deb7d0f134d22eef53ae781e000000000000695121037c6a5e4412be80b5cc13bde2d9b04fd2cd1fc7ff664c0d3b6d8133163857b08f2103bb6fba40bee91bb02b54835b32f14b9e04016bfa34411ec64f09e3a9586efd5d2103d928d7d5bbe6f435da935ed382a0061c4a22bdc9b60a2ce6deb7d0f134d22eef53ae781e00000000000069512102696a5e4412be80b5ccd6aa0ac9a95e43ca49a21d40f762fadc1aab1c25909fb02102176c68252c6b855d7967aee372f14b772c963b2aa0411ec64f09e3a951eefd3e2103d928d7d5bbe6f435da935ed382a0061c4a22bdc9b60a2ce6deb7d0f134d22eef53aea8d37700000000001976a914f3a6b6e4a093e5a5b9da76977a5270fd4d62553e88ac00000000', use_txid=True), + DP['default_block_index'], + None, + True), 'error': (exceptions.BTCOnlyError, "no data and not unspendable") #'out': (0,) } ] }, + 'blocks': { + 'parse_tx': [{ + 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc-mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj', 'supported': 1, 'block_index': DP['default_block_index'], 'fee': 10000, 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'data': b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00', 'tx_index': 502, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'},), + 'out': None + }, { + 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1, 'block_index': DP['default_block_index'], 'fee': 10000, 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'data': b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00', 'tx_index': 502, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns-mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj'},), + 'out': None + }], + 'get_next_tx_index': [{ + 'in': (), + 'out': 500 + }], + 'last_db_index': [{ + 'in': (), + 'out': DP['default_block_index'] - 1 + }], + }, 'cancel': { 'compose': [{ - 'in': (ADDR[1], 'aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305'), - 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', [], b'\x00\x00\x00F\xaa\xc8E\xaaN\xb4#+\xe4\x18\xd7\x05\x86u_{\x13-\xc3=A\x8d\xa3\xbc\x96\xce\xd4\xf7\x95p\xa3\x05') + 'in': (ADDR[1], 'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e'), + 'out': ('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', [], b'\x00\x00\x00F\xdbN\xa0\x92\xbe\xa6\x03n=\x1e_n\xc8c\xdb\x9b\x90\x02R\xb4\xf4\xd6\xd9\xfa\xa6\x16S#\xf43\xc5\x1e') }, { 'in': (P2SH_ADDR[0], 'd79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048'), 'out': (P2SH_ADDR[0], [], b'\x00\x00\x00F\xd7\x9bY\x0eN\xc3\xe7L\xbc>\xb4\xd0\xf9V\xcez\xbb\x0e:\xf2\xcc\xac\x85\xff\x90\xed\x8a\xcf\x13\xf2\xe0H') }, { 'in': (ADDR[1], 'foobar'), - 'error': (exceptions.ComposeError, "['no open offer with that hash']") + 'error': (exceptions.ComposeError, ['no open offer with that hash']) }, { - 'in': ('foobar', 'aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305'), - 'error': (exceptions.ComposeError, "['incorrect source address']") + 'in': ('foobar', 'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e'), + 'error': (exceptions.ComposeError, ['incorrect source address']) }, { - 'in': (ADDR[1], 'acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0'), - 'error': (exceptions.ComposeError, "['offer not open']") + 'in': (ADDR[1], '5c6562ddad0bc8a1faaded18813a65522cd273709acd190cf9d3271817eefc93'), + 'error': (exceptions.ComposeError, ['offer not open']) }], 'parse': [{ - 'in': ({'block_index': DP['default_block_index'], 'btc_amount': 0, 'source': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'data': b'\x00\x00\x00F\xaa\xc8E\xaaN\xb4#+\xe4\x18\xd7\x05\x86u_{\x13-\xc3=A\x8d\xa3\xbc\x96\xce\xd4\xf7\x95p\xa3\x05', 'block_hash': '46ac6d09237c7961199068fdd13f1508d755483e07c57a4c8f7ff18eb33a05c93ca6a86fa2e2af82fb77a5c337146bb37e279797a3d11970aec4693c46ea5a58', 'tx_index': 502, 'fee': 10000, 'block_time': 310501000, 'tx_hash': 'fb645106e276bfa1abd587f4a251b26f491a2a9ae61ca46a669794109728b122', 'destination': '', 'supported': 1},), + 'in': ({'block_index': DP['default_block_index'], 'btc_amount': 0, 'source': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'data': b'\x00\x00\x00F\xdbN\xa0\x92\xbe\xa6\x03n=\x1e_n\xc8c\xdb\x9b\x90\x02R\xb4\xf4\xd6\xd9\xfa\xa6\x16S#\xf43\xc5\x1e', 'block_hash': '46ac6d09237c7961199068fdd13f1508d755483e07c57a4c8f7ff18eb33a05c93ca6a86fa2e2af82fb77a5c337146bb37e279797a3d11970aec4693c46ea5a58', 'tx_index': 502, 'fee': 10000, 'block_time': 310501000, 'tx_hash': 'fb645106e276bfa1abd587f4a251b26f491a2a9ae61ca46a669794109728b122', 'destination': '', 'supported': 1},), 'out': None }, { - 'in': ({'block_index': DP['default_block_index'], 'btc_amount': 0, 'source': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'data': b'\x00\x00\x00F\xaa\xc8E\xaaN\xb4#+\xe4\x18\xd7\x05\x86u_{\x13-\xc3=A\x8d\xa3\xbc\x96\xce\xd4\xf7\x95p\xa3\x05', 'block_hash': '46ac6d09237c7961199068fdd13f1508d755483e07c57a4c8f7ff18eb33a05c93ca6a86fa2e2af82fb77a5c337146bb37e279797a3d11970aec4693c46ea5a58', 'tx_index': 502, 'fee': 10000, 'block_time': 310501000, 'tx_hash': 'fb645106e276bfa1abd587f4a251b26f491a2a9ae61ca46a669794109728b122', 'destination': '', 'supported': 1},), + 'in': ({'block_index': DP['default_block_index'], 'btc_amount': 0, 'source': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'data': b'\x00\x00\x00F\xdbN\xa0\x92\xbe\xa6\x03n=\x1e_n\xc8c\xdb\x9b\x90\x02R\xb4\xf4\xd6\xd9\xfa\xa6\x16S#\xf43\xc5\x1e', 'block_hash': '46ac6d09237c7961199068fdd13f1508d755483e07c57a4c8f7ff18eb33a05c93ca6a86fa2e2af82fb77a5c337146bb37e279797a3d11970aec4693c46ea5a58', 'tx_index': 502, 'fee': 10000, 'block_time': 310501000, 'tx_hash': 'fb645106e276bfa1abd587f4a251b26f491a2a9ae61ca46a669794109728b122', 'destination': '', 'supported': 1},), 'records': [ {'table': 'cancels', 'values': { 'block_index': DP['default_block_index'], - 'offer_hash': 'aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305', + 'offer_hash': 'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e', 'source': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'status': 'valid', 'tx_hash': 'fb645106e276bfa1abd587f4a251b26f491a2a9ae61ca46a669794109728b122', @@ -509,7 +552,7 @@ 'bet_type': 3, 'expiration': 1000, 'expire_index': 311101, - 'block_index': 310101, + 'block_index': DP['default_block_index'], 'deadline': 1388000200, 'counterwager_quantity': 10, 'wager_remaining': 10, @@ -522,7 +565,7 @@ 'wager_quantity': 10, 'source': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'target_value': 0.0, - 'tx_hash': 'aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305', + 'tx_hash': 'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e', }} ] }], @@ -754,7 +797,7 @@ }}, {'table': 'bets', 'values': { 'bet_type': 3, - 'block_index': 310101, + 'block_index': DP['default_block_index'], 'counterwager_quantity': 10, 'counterwager_remaining': 10, 'deadline': 1388000200, @@ -766,7 +809,7 @@ 'source': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'status': 'dropped', 'target_value': 0.0, - 'tx_hash': 'aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305', + 'tx_hash': 'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e', 'tx_index': 102, 'wager_quantity': 10, 'wager_remaining': 10, @@ -905,7 +948,7 @@ }}, {'table': 'bets', 'values': { 'bet_type': 3, - 'block_index': 310101, + 'block_index': DP['default_block_index'], 'counterwager_quantity': 10, 'counterwager_remaining': 10, 'deadline': 1388000200, @@ -917,7 +960,7 @@ 'source': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'status': 'dropped', 'target_value': 0.0, - 'tx_hash': 'aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305', + 'tx_hash': 'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e', 'tx_index': 102, 'wager_quantity': 10, 'wager_remaining': 10, @@ -957,7 +1000,7 @@ 'source': ADDR[4], 'status': 'open', 'target_value': 0.0, - 'tx_hash': '2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275', + 'tx_hash': '41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef', 'tx_index': 488, 'wager_quantity': 9, 'wager_remaining': 9}} @@ -1003,6 +1046,26 @@ 'address': ADDR[4] }} ] + }, { + 'comment': 'test malformed message with incorrect length', + 'mock_protocol_changes': {'broadcast_pack_text': True}, + 'in': ({'btc_amount': 1, 'block_hash': '46ac6d09237c7961199068fdd13f1508d755483e07c57a4c8f7ff18eb33a05c93ca6a86fa2e2af82fb77a5c337146bb37e279797a3d11970aec4693c46ea5a58', 'source': ADDR[4], 'destination': '', 'block_index': DP['default_block_index'], 'fee': 10000, 'supported': 1, 'block_time': 310501000, 'tx_hash': '6b4a62b80f35b0e66df4591c8a445d453d995609e2df12afe93e742bea10dd86', 'tx_index': 502, + 'data': b'\x00\x00\x00\x1e^\xa6\xf5\x00?\xf0\x00\x00\x00\x00\x00\x00\x00LK@#A 28 CHARACTERS LONG TEXT'},), + 'out': None, + 'records': [ + {'table': 'broadcasts', 'values': { + 'block_index': DP['default_block_index'], + 'fee_fraction_int': 0, + 'locked': 0, + 'source': ADDR[4], + 'status': 'invalid: could not unpack text', + 'text': None, + 'timestamp': 0, + 'tx_hash': '6b4a62b80f35b0e66df4591c8a445d453d995609e2df12afe93e742bea10dd86', + 'tx_index': 502, + 'value': None, + }} + ] }], }, 'burn': { @@ -1268,11 +1331,11 @@ 'in': (ADDR[0], ADDR[1], 'PARENT.already.issued', 100000000), 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', None)], - bytes.fromhex('0000000001530821671b10650000000005f5e100')) + binascii.unhexlify('0000000001530821671b10650000000005f5e100')) }, { 'comment': 'send to a REQUIRE_MEMO address, without memo', 'in': (ADDR[0], ADDR[6], 'XCP', 100000000), - 'error': (exceptions.ComposeError, '[\'destination requires memo\']') + 'error': (exceptions.ComposeError, ['destination requires memo']) }, { 'comment': 'send to a REQUIRE_MEMO address, with memo text, before enhanced_send activation', 'in': ({'source': ADDR[0], 'destination': ADDR[6], 'asset': 'XCP', 'quantity': 100000000, 'memo': '12345', 'use_enhanced_send': True}), @@ -1515,156 +1578,168 @@ }] }, 'issuance': { + #validate (db, source, destination, asset, quantity, divisible, lock, reset, callable_, call_date, call_price, description, subasset_parent, subasset_longname=None, block_index=None): + #validate (db, source, destination, asset, quantity, divisible, ,callable_, call_date, call_price, description, block_index) 'validate': [{ - 'in': (ADDR[0], None, 'ASSET', 1000, True, False, None, None, '', None, None, DP['default_block_index']), - 'out': (0, 0.0, [], 50000000, '', True, False, None) + 'in': (ADDR[0], None, 'ASSET', 1000, True, None, None, False, None, None, '', None, None, DP['default_block_index']), + 'out': (0, 0.0, [], 50000000, '', True, False, False, False, None) }, { - 'in': (P2SH_ADDR[0], None, 'ASSET', 1000, True, False, None, None, '', None, None, DP['default_block_index']), - 'out': (0, 0.0, [], 50000000, '', True, False, None) + 'in': (P2SH_ADDR[0], None, 'ASSET', 1000, True, None, None, False, None, None, '', None, None, DP['default_block_index']), + 'out': (0, 0.0, [], 50000000, '', True, False, False, False, None) }, { - 'in': (ADDR[2], None, 'DIVIDEND', 1000, False, False, None, None, '', None, None, DP['default_block_index']), - 'out': (0, 0.0, ['cannot change divisibility'], 0, '', False, True, None) + 'in': (ADDR[2], None, 'DIVIDEND', 1000, False, None, None, False, None, None, '', None, None, DP['default_block_index']), + 'out': (0, 0.0, ['cannot change divisibility'], 0, '', False, False, False, True, None) }, { - 'in': (ADDR[2], None, 'DIVIDEND', 1000, True, True, None, None, '', None, None, DP['default_block_index']), - 'out': (0, 0.0, ['cannot change callability'], 0, '', True, True, None) + # disabled for now because conftest.ALWAYS_LATEST_PROTOCOL_CHANGES = True + # + # 'in': (ADDR[2], None, 'DIVIDEND', 1000, True, None, None, True, None, None, '', None, None, DP['default_block_index']), + # 'out': (0, 0.0, ['cannot change callability'], 0, '', True, True, False, False, None) + #}, { + 'in': (ADDR[0], None, 'BTC', 1000, True, None, None, False, None, None, '', None, None, DP['default_block_index']), + 'out': (0, 0.0, ['cannot issue BTC or XCP'], 50000000, '', True, False, False, False, None) }, { - 'in': (ADDR[0], None, 'BTC', 1000, True, False, None, None, '', None, None, DP['default_block_index']), - 'out': (0, 0.0, ['cannot issue BTC or XCP'], 50000000, '', True, False, None) + 'in': (ADDR[0], None, 'XCP', 1000, True, None, None, False, None, None, '', None, None, DP['default_block_index']), + 'out': (0, 0.0, ['cannot issue BTC or XCP'], 50000000, '', True, False, False, False, None) }, { - 'in': (ADDR[0], None, 'XCP', 1000, True, False, None, None, '', None, None, DP['default_block_index']), - 'out': (0, 0.0, ['cannot issue BTC or XCP'], 50000000, '', True, False, None) - }, { - 'in': (ADDR[0], None, 'NOSATOSHI', 1000.5, True, False, None, None, '', None, None, DP['default_block_index']), + 'in': (ADDR[0], None, 'NOSATOSHI', 1000.5, True, None, None, False, None, None, '', None, None, DP['default_block_index']), 'out': (0, 0.0, ['quantity must be in satoshis'], 0, '', True, None, None) }, { - 'in': (ADDR[0], None, 'CALLPRICEFLOAT', 1000, True, False, None, 100.0, '', None, None, DP['default_block_index']), - 'out': (0, 0.0, [], 0, '', True, False, None) + 'in': (ADDR[0], None, 'CALLPRICEFLOAT', 1000, True, None, None, False, None, 100.0, '', None, None, DP['default_block_index']), + 'out': (0, 0.0, [], 0, '', True, False, False, False, None) }, { - 'in': (ADDR[0], None, 'CALLPRICEINT', 1000, True, False, None, 100, '', None, None, DP['default_block_index']), - 'out': (0, 0.0, [], 50000000, '', True, False, None) + 'in': (ADDR[0], None, 'CALLPRICEINT', 1000, True, None, None, False, None, 100, '', None, None, DP['default_block_index']), + 'out': (0, 0.0, [], 50000000, '', True, False, False, False, None) }, { - 'in': (ADDR[0], None, 'CALLPRICESTR', 1000, True, False, None, 'abc', '', None, None, DP['default_block_index']), + 'in': (ADDR[0], None, 'CALLPRICESTR', 1000, True, None, None, False, None, 'abc', '', None, None, DP['default_block_index']), 'out': (0, 'abc', ['call_price must be a float'], 0, '', True, None, None) }, { - 'in': (ADDR[0], None, 'CALLDATEINT', 1000, True, False, 1409401723, None, '', None, None, DP['default_block_index']), - 'out': (0, 0.0, [], 50000000, '', True, False, None) + 'in': (ADDR[0], None, 'CALLDATEINT', 1000, True, None, None, False, 1409401723, None, '', None, None, DP['default_block_index']), + 'out': (0, 0.0, [], 50000000, '', True, False, False, False, None) }, { - 'in': (ADDR[0], None, 'CALLDATEFLOAT', 1000, True, False, 0.9 * 1409401723, None, '', None, None, DP['default_block_index']), + 'in': (ADDR[0], None, 'CALLDATEFLOAT', 1000, True, None, None, False, 0.9 * 1409401723, None, '', None, None, DP['default_block_index']), 'out': (1268461550.7, 0.0, ['call_date must be epoch integer'], 0, '', True, None, None) }, { - 'in': (ADDR[0], None, 'CALLDATESTR', 1000, True, False, 'abc', None, '', None, None, DP['default_block_index']), + 'in': (ADDR[0], None, 'CALLDATESTR', 1000, True, None, None, False, 'abc', None, '', None, None, DP['default_block_index']), 'out': ('abc', 0.0, ['call_date must be epoch integer'], 0, '', True, None, None) }, { - 'in': (ADDR[0], None, 'NEGVALUES', -1000, True, True, -1409401723, -DP['quantity'], '', None, None, DP['default_block_index']), - 'out': (-1409401723, -100000000.0, ['negative quantity', 'negative call price', 'negative call date'], 50000000, '', True, False, None) + 'in': (ADDR[0], None, 'NEGVALUES', -1000, True, None, None, True, -1409401723, -DP['quantity'], '', None, None, DP['default_block_index']), + 'out': (-1409401723, -100000000.0, ['negative quantity', 'negative call price', 'negative call date'], 50000000, '', True, False, False, False, None) }, { - 'in': (ADDR[2], None, 'DIVISIBLE', 1000, True, False, None, None, 'Divisible asset', None, None, DP['default_block_index']), - 'out': (0, 0.0, ['issued by another address'], 0, 'Divisible asset', True, True, None) + 'in': (ADDR[2], None, 'DIVISIBLE', 1000, True, None, None, False, None, None, 'Divisible asset', None, None, DP['default_block_index']), + 'out': (0, 0.0, ['issued by another address'], 0, 'Divisible asset', True, False, False, True, None) }, { - 'in': (ADDR[0], None, 'LOCKED', 1000, True, False, None, None, 'Locked asset', None, None, DP['default_block_index']), - 'out': (0, 0.0, ['locked asset and non‐zero quantity'], 0, 'Locked asset', True, True, None) + 'in': (ADDR[0], None, 'LOCKED', 1000, True, None, None, False, None, None, 'Locked asset', None, None, DP['default_block_index']), + 'out': (0, 0.0, ['locked asset and non‐zero quantity'], 0, 'Locked asset', True, False, False, True, None) }, { - 'in': (ADDR[0], None, 'BSSET', 1000, True, False, None, None, 'LOCK', None, None, DP['default_block_index']), - 'out': (0, 0.0, ['cannot lock a non‐existent asset'], 50000000, 'LOCK', True, False, None) + 'in': (ADDR[0], None, 'BSSET', 1000, True, None, None, False, None, None, 'LOCK', None, None, DP['default_block_index']), + 'out': (0, 0.0, ['cannot lock a non‐existent asset'], 50000000, 'LOCK', True, False, False, False, None) }, { - 'in': (ADDR[0], ADDR[1], 'BSSET', 1000, True, False, None, None, '', None, None, DP['default_block_index']), - 'out': (0, 0.0, ['cannot transfer a non‐existent asset', 'cannot issue and transfer simultaneously'], 50000000, '', True, False, None) + # Now it's possible to issue and transfer simultaneously + 'in': (ADDR[0], ADDR[1], 'BSSET', 1000, True, None, None, False, None, None, '', None, None, DP['default_block_index']), + 'out': (0, 0.0, [], 50000000, '', True, False, False, False, None) }, { - 'in': (ADDR[2], None, 'BSSET', 1000, True, False, None, None, '', None, None, DP['default_block_index']), - 'out': (0, 0.0, ['insufficient funds'], 50000000, '', True, False, None) + 'in': (ADDR[2], None, 'BSSET', 1000, True, None, None, False, None, None, '', None, None, DP['default_block_index']), + 'out': (0, 0.0, ['insufficient funds'], 50000000, '', True, False, False, False, None) }, { - 'in': (ADDR[0], None, 'BSSET', 2**63, True, False, None, None, '', None, None, DP['default_block_index']), - 'out': (0, 0.0, ['total quantity overflow', 'integer overflow'], 50000000, '', True, False, None) + 'in': (ADDR[0], None, 'BSSET', 2**63, True, None, None, False, None, None, '', None, None, DP['default_block_index']), + 'out': (0, 0.0, ['total quantity overflow', 'integer overflow'], 50000000, '', True, False, False, False, None) }, { - 'in': (ADDR[0], ADDR[1], 'DIVISIBLE', 1000, True, False, None, None, 'Divisible asset', None, None, DP['default_block_index']), - 'out': (0, 0.0, ['cannot issue and transfer simultaneously'], 0, 'Divisible asset', True, True, None) + # Now it's possible to issue and transfer simultaneously + 'in': (ADDR[0], ADDR[1], 'DIVISIBLE', 1000, True, None, None, False, None, None, 'Divisible asset', None, None, DP['default_block_index']), + 'out': (0, 0.0, [], 0, 'Divisible asset', True, False, False, True, None) }, { - 'in': (ADDR[0], None, 'MAXIMUM', 2**63-1, True, False, None, None, 'Maximum quantity', None, None, DP['default_block_index']), - 'out': (0, 0.0, [], 50000000, 'Maximum quantity', True, False, None) + 'in': (ADDR[0], None, 'MAXIMUM', 2**63-1, True, None, None, False, None, None, 'Maximum quantity', None, None, DP['default_block_index']), + 'out': (0, 0.0, [], 50000000, 'Maximum quantity', True, False, False, False, None) }, { 'comment': 'total + quantity has to be lower than MAX_INT', - 'in': (ADDR[0], None, 'DIVISIBLE', 2**63-1, True, False, None, None, 'Maximum quantity', None, None, DP['default_block_index']), - 'out': (0, 0.0, ['total quantity overflow'], 0, 'Maximum quantity', True, True, None) + 'in': (ADDR[0], None, 'DIVISIBLE', 2**63-1, True, None, None, False, None, None, 'Maximum quantity', None, None, DP['default_block_index']), + 'out': (0, 0.0, ['total quantity overflow'], 0, 'Maximum quantity', True, False, False, True, None) }, { - 'in': (ADDR[0], None, 'A{}'.format(26**12 + 1), 1000, True, False, None, None, 'description', 'NOTFOUND', 'NOTFOUND.child1', DP['default_block_index']), - 'out': (0, 0.0, ['parent asset not found'], 25000000, 'description', True, False, None) + 'in': (ADDR[0], None, f'A{26 ** 12 + 1}', 1000, True, None, None, False, None, None, 'description', 'NOTFOUND', 'NOTFOUND.child1', DP['default_block_index']), + 'out': (0, 0.0, ['parent asset not found'], 25000000, 'description', True, False, False, False, None) }, { - 'in': (ADDR[1], None, 'A{}'.format(26**12 + 1), 100000000, True, False, None, None, 'description', 'PARENT', 'PARENT.child1', DP['default_block_index']), - 'out': (0, 0.0, ['parent asset owned by another address'], 25000000, 'description', True, False, None) + 'in': (ADDR[1], None, f'A{26 ** 12 + 1}', 100000000, True, None, None, False, None, None, 'description', 'PARENT', 'PARENT.child1', DP['default_block_index']), + 'out': (0, 0.0, ['parent asset owned by another address'], 25000000, 'description', True, False, False, False, None) }, { - 'in': (ADDR[0], None, 'A{}'.format(26**12 + 1), 100000000, True, False, None, None, 'description', 'NOTFOUND', 'NOTFOUND.child1', DP['default_block_index']), - 'out': (0, 0.0, ['parent asset not found'], 25000000, 'description', True, False, None) + 'in': (ADDR[0], None, f'A{26 ** 12 + 1}', 100000000, True, None, None, False, None, None, 'description', 'NOTFOUND', 'NOTFOUND.child1', DP['default_block_index']), + 'out': (0, 0.0, ['parent asset not found'], 25000000, 'description', True, False, False, False, None) }, { 'comment': 'A subasset name must be unique', - 'in': (ADDR[0], None, 'A{}'.format(26**12 + 1), 100000000, True, False, None, None, 'description', 'PARENT', 'PARENT.already.issued', DP['default_block_index']), - 'out': (0, 0.0, ['subasset already exists'], 25000000, 'description', True, False, None) + 'in': (ADDR[0], None, f'A{26 ** 12 + 1}', 100000000, True, None, None, False, None, None, 'description', 'PARENT', 'PARENT.already.issued', DP['default_block_index']), + 'out': (0, 0.0, ['subasset already exists'], 25000000, 'description', True, False, False, False, None) }, { 'comment': 'cannot change subasset name through a reissuance description modification', - 'in': (ADDR[0], None, 'A{}'.format(26**12 + 101), 200000000, True, False, None, None, 'description', 'PARENT', 'PARENT.changed.name', DP['default_block_index']), - 'out': (0, 0.0, [], 0, 'description', True, True, 'PARENT.already.issued') + 'in': (ADDR[0], None, f'A{26 ** 12 + 101}', 200000000, True, None, None, False, None, None, 'description', 'PARENT', 'PARENT.changed.name', DP['default_block_index']), + 'out': (0, 0.0, [], 0, 'description', True, False, False, True, 'PARENT.already.issued') }, { - 'in': (ADDR[0], None, 'UNRELATED', 1000, True, False, None, None, 'description', 'PARENT', 'PARENT.child1', DP['default_block_index']), - 'out': (0, 0.0, ['a subasset must be a numeric asset'], 25000000, 'description', True, False, None) + 'in': (ADDR[0], None, 'UNRELATED', 1000, True, None, None, False, None, None, 'description', 'PARENT', 'PARENT.child1', DP['default_block_index']), + 'out': (0, 0.0, ['a subasset must be a numeric asset'], 25000000, 'description', True, False, False, False, None) }, { # before protocol change, reissuing a quantity of a locked asset was allowed if the description was changed 'comment': 'allow reissuance of locked asset before fix', - 'in': (ADDR[6], None, 'LOCKEDPREV', 1000, True, False, None, None, 'Locked prev', None, None, DP['default_block_index']), - 'out': (0, 0.0, [], 0, 'Locked prev', True, True, None) + 'in': (ADDR[6], None, 'LOCKEDPREV', 1000, True, None, None, False, None, None, 'Locked prev', None, None, DP['default_block_index']), + 'out': (0, 0.0, [], 0, 'Locked prev', True, False, False, True, None) }, { # after protocol change, reissuing quantities for a locked asset is never allowed 'comment': 'disallow reissuance of locked asset after fix', 'mock_protocol_changes': {'issuance_lock_fix': True}, - 'in': (ADDR[6], None, 'LOCKEDPREV', 1000, True, False, None, None, 'Locked prev', None, None, DP['default_block_index']), - 'out': (0, 0.0, ['locked asset and non‐zero quantity'], 0, 'Locked prev', True, True, None) + 'in': (ADDR[6], None, 'LOCKEDPREV', 1000, True, None, None, False, None, None, 'Locked prev', None, None, DP['default_block_index']), + 'out': (0, 0.0, ['locked asset and non‐zero quantity'], 0, 'Locked prev', True, False, False, True, None) }], + #compose (db, source, transfer_destination, asset, quantity, divisible, lock, reset=None, description=None) 'compose': [{ - 'in': (ADDR[0], None, 'ASSET', 1000, True, ''), + 'in': (ADDR[0], None, 'ASSET', 1000, True, False, None, ''), 'error': (exceptions.AssetNameError, 'non‐numeric asset name starts with ‘A’') }, { - 'in': (ADDR[0], None, 'BSSET1', 1000, True, ''), - 'error': (exceptions.AssetNameError, "('invalid character:', '1')") + 'in': (ADDR[0], None, 'BSSET1', 1000, True, False, None, ''), + 'error': (exceptions.AssetNameError, "invalid character:") }, { - 'in': (ADDR[0], None, 'SET', 1000, True, ''), + 'in': (ADDR[0], None, 'SET', 1000, True, False, None, ''), 'error': (exceptions.AssetNameError, 'too short') }, { - 'in': (ADDR[0], None, 'BSSET', 1000, True, ''), - 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') + 'in': (ADDR[0], None, 'BSSET', 1000, True, False, None, ''), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x16\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00') + }, { + 'in': (ADDR[0], None, 'BASSET', 1000, True, False, None, ''), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x16\x00\x00\x00\x00\x00\xbaOs\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00') }, { - 'in': (P2SH_ADDR[0], None, 'BSSET', 1000, True, ''), - 'out': (P2SH_ADDR[0], [], b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') + 'in': (P2SH_ADDR[0], None, 'BSSET', 1000, True, False, None, ''), + 'out': (P2SH_ADDR[0], [], b'\x00\x00\x00\x16\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00') }, { - 'in': (ADDR[0], None, 'BSSET', 1000, True, 'description much much much longer than 42 letters'), - 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00description much much much longer than 42 letters') + 'in': (ADDR[0], None, 'BSSET', 1000, True, False, None, 'description much much much longer than 42 letters'), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x16\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00description much much much longer than 42 letters') }, { - 'in': (ADDR[0], ADDR[1], 'DIVISIBLE', 0, True, ''), - 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', None)], b'\x00\x00\x00\x14\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') + 'in': (ADDR[0], ADDR[1], 'DIVISIBLE', 0, True, False, None, ''), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', None)], b'\x00\x00\x00\x16\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00') }, { - 'in': (MULTISIGADDR[0], None, 'BSSET', 1000, True, ''), - 'out': ('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', [], b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') + 'in': (MULTISIGADDR[0], None, 'BSSET', 1000, True, False, None, ''), + 'out': ('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', [], b'\x00\x00\x00\x16\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00') }, { - 'in': (ADDR[0], MULTISIGADDR[0], 'DIVISIBLE', 0, True, ''), - 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', None)], b'\x00\x00\x00\x14\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') + 'in': (ADDR[0], MULTISIGADDR[0], 'DIVISIBLE', 0, True, False, None, ''), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', None)], b'\x00\x00\x00\x16\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00') }, { - 'in': (ADDR[0], None, 'MAXIMUM', 2**63-1, True, 'Maximum quantity'), - 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x14\x00\x00\x00\x00\xdd\x96\xd2t\x7f\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10Maximum quantity') + 'in': (ADDR[0], None, 'MAXIMUM', 2**63-1, True, False, None, 'Maximum quantity'), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x16\x00\x00\x00\x00\xdd\x96\xd2t\x7f\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00Maximum quantity') }, { - 'in': (ADDR[0], None, 'A{}'.format(2**64 - 1), 1000, None, None), - 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x14\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') + 'in': (ADDR[0], None, f'A{2 ** 64 - 1}', 1000, None, False, None, None), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x16\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0NULL') }, { - 'in': (ADDR[0], None, 'A{}'.format(2**64), 1000, True, ''), + 'in': (ADDR[0], None, f'A{2 ** 64}', 1000, True, False, None, ''), 'error': (exceptions.AssetNameError, 'numeric asset name not in range') }, { - 'in': (ADDR[0], None, 'A{}'.format(26**12), 1000, True, ''), + 'in': (ADDR[0], None, f'A{26 ** 12}', 1000, True, False, None, ''), 'error': (exceptions.AssetNameError, 'numeric asset name not in range') }, { 'comment': 'basic child asset', - 'in': (ADDR[0], None, 'PARENT.child1', 100000000, True, ''), - 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], bytes.fromhex('0000001501530821671b10010000000005f5e100010a57c6f36de23a1f5f4c46')) + 'in': (ADDR[0], None, 'PARENT.child1', 100000000, True, False, None, ''), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], binascii.unhexlify('0000001701530821671b10010000000005f5e100010a57c6f36de23a1f5f4c46')) + # 00000017|01530821671b1001|0000000005f5e100|01|0a|57c6f36de23a1f5f4c46 # 00000015|01530821671b1001|0000000005f5e100|01|0a|57c6f36de23a1f5f4c46 }, { 'comment': 'basic child asset with description', - 'in': (ADDR[0], None, 'PARENT.child1', 100000000, True, 'hello world'), - 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], bytes.fromhex('0000001501530821671b10010000000005f5e100010a57c6f36de23a1f5f4c4668656c6c6f20776f726c64')) + 'in': (ADDR[0], None, 'PARENT.child1', 100000000, True, False, None, 'hello world'), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], binascii.unhexlify('0000001701530821671b10010000000005f5e100010a57c6f36de23a1f5f4c4668656c6c6f20776f726c64')) + # 00000017|01530821671b1001|0000000005f5e100|01|0a|57c6f36de23a1f5f4c46|68656c6c6f20776f726c64 # 00000015|01530821671b1001|0000000005f5e100|01|0a|57c6f36de23a1f5f4c46|68656c6c6f20776f726c64 # | | | | | | | # | | | | | | └─── Description - "hello world" @@ -1675,35 +1750,48 @@ # | └────────────────── asset name (8 bytes) - Numeric asset A95428956661682177 (26**12 + 1) # └────────────────── Type ID (4 bytes) - type 21/subasset }, { - 'in': (ADDR[0], None, 'PARENT.a.b.c', 1000, True, ''), - 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], bytes.fromhex('0000001501530821671b100100000000000003e8010a014a74856171ca3c559f')) + 'in': (ADDR[0], None, 'PARENT.a.b.c', 1000, True, False, None, ''), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], binascii.unhexlify('0000001701530821671b100100000000000003e8010a014a74856171ca3c559f')) + # 00000017|01530821671b1001|00000000000003e8|01|0a|014a74856171ca3c559f # 00000015|01530821671b1001|00000000000003e8|01|0a|014a74856171ca3c559f }, { - 'in': (ADDR[0], None, 'PARENT.a-zA-Z0-9.-_@!', 1000, True, ''), - 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], bytes.fromhex('0000001501530821671b100100000000000003e801108e90a57dba99d3a77b0a2470b1816edb')) - # 00000015|01530821671b1001|00000000000003e8|01|10|8e90a57dba99d3a77b0a2470b1816edb + 'in': (ADDR[0], None, 'PARENT.a-zA-Z0-9.-_@!', 1000, True, False, None, ''), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], binascii.unhexlify('0000001701530821671b100100000000000003e801108e90a57dba99d3a77b0a2470b1816edb')) + # 00000017|01530821671b1001|00000000000003e8|01|10|8e90a57dba99d3a77b0a2470b1816edb }, { 'comment': 'make sure compose catches asset name syntax errors', - 'in': (ADDR[0], None, 'BADASSETx.child1', 1000, True, ''), - 'error': (exceptions.AssetNameError, "('parent asset name contains invalid character:', 'x')") + 'in': (ADDR[0], None, 'BADASSETx.child1', 1000, True, False, None, ''), + 'error': (exceptions.AssetNameError, "parent asset name contains invalid character:") }, { 'comment': 'make sure compose catches validation errors', - 'in': (ADDR[1], None, 'PARENT.child1', 1000, True, ''), - 'error': (exceptions.ComposeError, "['parent asset owned by another address']") + 'in': (ADDR[1], None, 'PARENT.child1', 1000, True, False, None, ''), + 'error': (exceptions.ComposeError, ['parent asset owned by another address']) }, { 'comment': 'referencing parent asset by name composes a reissuance', - 'in': (ADDR[0], None, 'PARENT.already.issued', 1000, True, ''), - 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x14\x01S\x08!g\x1b\x10e\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') + 'in': (ADDR[0], None, 'PARENT.already.issued', 1000, True, False, None, ''), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x16\x01S\x08!g\x1b\x10e\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00') }, { 'comment': 'basic child asset with compact message type id', 'mock_protocol_changes': {'short_tx_type_id': True}, - 'in': (ADDR[0], None, 'PARENT.child1', 100000000, True, ''), - 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], bytes.fromhex('1501530821671b10010000000005f5e100010a57c6f36de23a1f5f4c46')) - # 15|01530821671b1001|0000000005f5e100|01|0a|57c6f36de23a1f5f4c46 + 'in': (ADDR[0], None, 'PARENT.child1', 100000000, True, False, None, ''), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], binascii.unhexlify('1701530821671b10010000000005f5e100010a57c6f36de23a1f5f4c46')) + # 17|01530821671b1001|0000000005f5e100|01|0a|57c6f36de23a1f5f4c46 + }, { + 'in': (ADDR[0], None, f'A{26 ** 12 + 101}', 200000000, True, None, None, 'description'), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x16\x01S\x08!g\x1b\x10e\x00\x00\x00\x00\x0b\xeb\xc2\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00description') + }, { + 'in': (ADDR[0], ADDR[1], 'DIVISIBLEB', 0, True, False, None, 'second divisible asset'), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', None)], b'\x00\x00\x00\x16\x00\x00\x10}U\x15\xa8]\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00second divisible asset') + }, { + 'in': (ADDR[0], None, 'DIVISIBLEC', 0, True, True, None, 'third divisible asset'), + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x16\x00\x00\x10}U\x15\xa8^\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00third divisible asset') }], 'parse': [{ 'comment': 'first', - 'in': ({'supported': 1, 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'data': b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\xbaOs\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'btc_amount': None, 'destination': None, 'block_time': 155409000, 'block_index': DP['default_block_index'], 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'fee': 10000, 'tx_index': 502, 'block_hash': DP['default_block_hash']}, issuance.ID,), + 'in': ({'supported': 1, 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'data': b'\x00\x00\x00\x16\x00\x00\x00\x00\x00\xbaOs\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00', + 'btc_amount': None, 'destination': None, 'block_time': 155409000, 'block_index': DP['default_block_index'], + 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'fee': 10000, 'tx_index': 502, 'block_hash': DP['default_block_hash']}, issuance.ID,), 'records': [ {'table': 'issuances', 'values': { 'asset': 'BASSET', @@ -1739,15 +1827,19 @@ }} ] }, { - 'in': ({'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_time': 155409000, 'btc_amount': 7800, 'supported': 1, 'tx_index': 502, 'block_index': DP['default_block_index'], 'data': b'\x00\x00\x00\x14\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'block_hash': DP['default_block_hash'], 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'fee': 10000, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'}, issuance.ID,), + 'in': ({'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_time': 155409000, 'btc_amount': 7800, + 'supported': 1, 'tx_index': 502, 'block_index': DP['default_block_index'], + 'data': b'\x00\x00\x00\x16\x00\x00\x10}U\x15\xa8]\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00second divisible asset', + 'block_hash': DP['default_block_hash'], 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'fee': 10000, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'}, issuance.ID,), 'records': [ {'table': 'issuances', 'values': { - 'asset': 'DIVISIBLE', + 'asset': 'DIVISIBLEB', 'asset_longname': None, 'block_index': DP['default_block_index'], - 'description': '', + 'description': 'second divisible asset', 'divisible': 1, - 'fee_paid': 0, + 'fee_paid': 50000000, 'issuer': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'locked': 0, 'quantity': 0, @@ -1759,17 +1851,20 @@ }} ] }, { - 'in': ({'tx_index': 502, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'data': b'\x00\x00\x00\x14\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04LOCK', 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'fee': 10000, 'destination': None, 'supported': 1, 'block_index': DP['default_block_index'], 'btc_amount': None}, issuance.ID,), + 'in': ({'tx_index': 502, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'data': b'\x00\x00\x00\x16\x00\x00\x10}U\x15\xa8^\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00third divisible asset', + 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'fee': 10000, + 'destination': None, 'supported': 1, 'block_index': DP['default_block_index'], 'btc_amount': None}, issuance.ID,), 'records': [ {'table': 'issuances', 'values': { - 'asset': 'DIVISIBLE', + 'asset': 'DIVISIBLEC', 'asset_longname': None, 'block_index': DP['default_block_index'], - 'description': 'Divisible asset', + 'description': 'third divisible asset', 'divisible': 1, - 'fee_paid': 0, + 'fee_paid': 50000000, 'issuer': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', - 'locked': 1, + 'locked': 0, # lock arg ignored 'quantity': 0, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'status': 'valid', @@ -1779,7 +1874,10 @@ }} ] }, { - 'in': ({'data': b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'supported': 1, 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'block_index': DP['default_block_index'], 'destination': '', 'source': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', 'btc_amount': 0, 'tx_index': 502, 'block_hash': DP['default_block_hash'], 'block_time': 155409000, 'fee': 10000}, issuance.ID,), + 'in': ({'data': b'\x00\x00\x00\x16\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0NULL', + 'supported': 1, 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'block_index': DP['default_block_index'], 'destination': '', + 'source': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', 'btc_amount': 0, 'tx_index': 502, 'block_hash': DP['default_block_hash'], 'block_time': 155409000, 'fee': 10000}, issuance.ID,), 'records': [ {'table': 'issuances', 'values': { 'asset': 'BSSET', @@ -1815,7 +1913,13 @@ }} ] }, { - 'in': ({'fee': 10000, 'block_time': 155409000, 'data': b'\x00\x00\x00\x14\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'block_index': DP['default_block_index'], 'block_hash': DP['default_block_hash'], 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'btc_amount': 7800, 'tx_index': 502, 'destination': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', 'supported': 1, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'}, issuance.ID,), + 'in': ({'fee': 10000, 'block_time': 155409000, + 'data': b'\x00\x00\x00\x16\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00', + 'block_index': DP['default_block_index'], 'block_hash': DP['default_block_hash'], + 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'btc_amount': 7800, 'tx_index': 502, + 'destination': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', + 'supported': 1, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'}, issuance.ID,), 'records': [ {'table': 'issuances', 'values': { 'asset': 'DIVISIBLE', @@ -1843,7 +1947,7 @@ }} ] }, { - 'in': ({'data': b'\x00\x00\x00\x14\x00\x00\x00\x00\xdd\x96\xd2t\x7f\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10Maximum quantity', 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.ID,), + 'in': ({'data': b'\x00\x00\x00\x16\x00\x00\x00\x00\xdd\x96\xd2t\x7f\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00Maximum quantity', 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.ID,), 'records': [ {'table': 'issuances', 'values': { 'asset': 'MAXIMUM', @@ -1878,7 +1982,7 @@ }} ] }, { - 'in': ({'data': b'\x00\x00\x00\x14\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'tx_index': 502, 'tx_hash': '4188c1f7aaae56ce3097ef256cdbcb644dd43c84e237b4add4f24fd4848cb2c7', 'destination': '', 'fee': 10000, 'btc_amount': 0, 'block_time': 2815010000000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1, 'block_index': DP['default_block_index'], 'block_hash': '8e80b430efbe3e1b7cc13d7ec51c1e47a16b0fa23d6dd3c939fb6c4d4cfa311e1f25072500f5f9872373b54c72424b3557fccd68915d00c0afb6523702e11b6a'}, issuance.ID,), + 'in': ({'data': b'\x00\x00\x00\x16\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0NULL', 'tx_index': 502, 'tx_hash': '4188c1f7aaae56ce3097ef256cdbcb644dd43c84e237b4add4f24fd4848cb2c7', 'destination': '', 'fee': 10000, 'btc_amount': 0, 'block_time': 2815010000000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1, 'block_index': DP['default_block_index'], 'block_hash': '8e80b430efbe3e1b7cc13d7ec51c1e47a16b0fa23d6dd3c939fb6c4d4cfa311e1f25072500f5f9872373b54c72424b3557fccd68915d00c0afb6523702e11b6a'}, issuance.ID,), 'records': [ {'table': 'issuances', 'values': { 'asset': 'A18446744073709551615', @@ -1921,7 +2025,7 @@ # | | └───── quantity (8 bytes) - 100000000 # | └────────────────── asset name (8 bytes) - BBB (invalid) # └────────────────── Type ID (4 bytes) - type 20/issuance - 'in': ({'data': bytes.fromhex('0000001400000000000002bf0000000005f5e10001'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.ID,), + 'in': ({'data': binascii.unhexlify('0000001400000000000002bf0000000005f5e10001'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.ID,), 'records': [ {'table': 'issuances', 'values': { 'asset': None, @@ -1942,10 +2046,10 @@ ] }, { 'comment': 'first time issuance of subasset', - 'in': ({'data': bytes.fromhex('0000001501530821671b10010000000005f5e100010a57c6f36de23a1f5f4c46'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), + 'in': ({'data': binascii.unhexlify('0000001501530821671b10010000000005f5e100010a57c6f36de23a1f5f4c46'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), 'records': [ {'table': 'issuances', 'values': { - 'asset': 'A{}'.format(26**12 + 1), + 'asset': f'A{26 ** 12 + 1}', 'asset_longname': 'PARENT.child1', 'block_index': DP['default_block_index'], 'description': '', @@ -1962,7 +2066,7 @@ }}, {'table': 'credits', 'values': { 'address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', - 'asset': 'A{}'.format(26**12 + 1), + 'asset': f'A{26 ** 12 + 1}', 'block_index': DP['default_block_index'], 'calling_function': 'issuance', 'event': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace', @@ -1978,17 +2082,17 @@ }}, {'table': 'assets', 'values': { 'asset_id': int(26**12 + 1), - 'asset_name': 'A{}'.format(26**12 + 1), + 'asset_name': f'A{26 ** 12 + 1}', 'block_index': DP['default_block_index'], 'asset_longname': 'PARENT.child1', }} ] }, { 'comment': 'first time issuance of subasset with description', - 'in': ({'data': bytes.fromhex('0000001501530821671b10010000000005f5e100010a57c6f36de23a1f5f4c4668656c6c6f20776f726c64'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), + 'in': ({'data': binascii.unhexlify('0000001501530821671b10010000000005f5e100010a57c6f36de23a1f5f4c4668656c6c6f20776f726c64'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), 'records': [ {'table': 'issuances', 'values': { - 'asset': 'A{}'.format(26**12 + 1), + 'asset': f'A{26 ** 12 + 1}', 'asset_longname': 'PARENT.child1', 'block_index': DP['default_block_index'], 'description': 'hello world', @@ -2005,7 +2109,7 @@ }}, {'table': 'credits', 'values': { 'address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', - 'asset': 'A{}'.format(26**12 + 1), + 'asset': f'A{26 ** 12 + 1}', 'block_index': DP['default_block_index'], 'calling_function': 'issuance', 'event': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace', @@ -2021,14 +2125,14 @@ }}, {'table': 'assets', 'values': { 'asset_id': int(26**12 + 1), - 'asset_name': 'A{}'.format(26**12 + 1), + 'asset_name': f'A{26 ** 12 + 1}', 'block_index': DP['default_block_index'], 'asset_longname': 'PARENT.child1', }} ] }, { 'comment': 'subassets not enabled yet', - 'in': ({'data': bytes.fromhex('0000001501530821671b10010000000005f5e100010a57c6f36de23a1f5f4c46'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), + 'in': ({'data': binascii.unhexlify('0000001501530821671b10010000000005f5e100010a57c6f36de23a1f5f4c46'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), 'mock_protocol_changes': {'subassets': False}, 'records': [ {'table': 'issuances', 'values': { @@ -2050,7 +2154,7 @@ ] }, { 'comment': 'invalid subasset length', - 'in': ({'data': bytes.fromhex('0000001501530821671b10010000000005f5e10001f057c6f36de23a1f5f4c46'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), + 'in': ({'data': binascii.unhexlify('0000001501530821671b10010000000005f5e10001f057c6f36de23a1f5f4c46'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), 'records': [ {'table': 'issuances', 'values': { 'asset': None, @@ -2071,7 +2175,7 @@ ] }, { 'comment': 'first time issuance of subasset with description', - 'in': ({'data': bytes.fromhex('0000001501530821671b10010000000005f5e100010c0631798cf0c65f1507f66fdf'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), + 'in': ({'data': binascii.unhexlify('0000001501530821671b10010000000005f5e100010c0631798cf0c65f1507f66fdf'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), 'records': [ {'table': 'issuances', 'values': { 'asset': None, @@ -2092,7 +2196,7 @@ ] }, { 'comment': 'missing subasset name', - 'in': ({'data': bytes.fromhex('0000001501530821671b10010000000005f5e100010c'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), + 'in': ({'data': binascii.unhexlify('0000001501530821671b10010000000005f5e100010c'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), 'records': [ {'table': 'issuances', 'values': { 'asset': None, @@ -2113,7 +2217,7 @@ ] }, { 'comment': 'subasset length of zero', - 'in': ({'data': bytes.fromhex('0000001501530821671b10010000000005f5e1000100'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), + 'in': ({'data': binascii.unhexlify('0000001501530821671b10010000000005f5e1000100'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), 'records': [ {'table': 'issuances', 'values': { 'asset': None, @@ -2134,7 +2238,7 @@ ] }, { 'comment': 'bad subasset B.bad', - 'in': ({'data': bytes.fromhex('0000001501530821671b10010000000005f5e100010509cad71adf'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), + 'in': ({'data': binascii.unhexlify('0000001501530821671b10010000000005f5e100010509cad71adf'), 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.SUBASSET_ID,), 'records': [ {'table': 'issuances', 'values': { 'asset': None, @@ -2155,17 +2259,17 @@ ] }, { 'comment': 'reissuance of subasset adds asset_longname to issuances table', - 'in': ({'data': b'\x00\x00\x00\x14\x01S\x08!g\x1b\x10e\x00\x00\x00\x02T\x0b\xe4\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.ID,), + 'in': ({'data': b'\x00\x00\x00\x16\x01S\x08!g\x1b\x10e\x00\x00\x00\x00\x0b\xeb\xc2\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00description', 'block_time': 155409000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'btc_amount': 0, 'fee': 10000, 'supported': 1, 'tx_index': 502, 'destination': '', 'tx_hash': '71da4fac29d6442ef3ff13f291860f512a888161ae9e574f313562851912aace'}, issuance.ID,), 'records': [ {'table': 'issuances', 'values': { - 'asset': 'A{}'.format(26**12 + 101), + 'asset': f'A{26 ** 12 + 101}', 'asset_longname': 'PARENT.already.issued', 'block_index': DP['default_block_index'], - 'description': '', + 'description': 'description', 'fee_paid': 0, 'issuer': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'locked': 0, - 'quantity': 10000000000, + 'quantity': 200000000, 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'status': 'valid', 'transfer': 0, 'divisible': 1, @@ -2178,32 +2282,18 @@ 'dividend': { 'validate': [{ 'in': (ADDR[0], DP['quantity'] * 1000, 'DIVISIBLE', 'XCP', DP['default_block_index']), - 'out': (1200000000000, - [ - {'address_quantity': 100000000, 'dividend_quantity': 100000000000, 'address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'}, - {'address_quantity': 1000000000, 'dividend_quantity': 1000000000000, 'address': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'}, - {'address_quantity': 100000000, 'dividend_quantity': 100000000000, 'address': '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy'} - ], - ['insufficient funds (XCP)'], - 0) + 'out': (None, None, ['insufficient funds (XCP)'], 0) }, { 'in': (ADDR[0], DP['quantity'] * -1000, 'DIVISIBLE', 'XCP', DP['default_block_index']), - 'out': (-1200000000000, - [ - {'address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'dividend_quantity': -100000000000, 'address_quantity': 100000000}, - {'address': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', 'dividend_quantity': -1000000000000, 'address_quantity': 1000000000}, - {'address': '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy', 'dividend_quantity': -100000000000, 'address_quantity': 100000000} - ], - ['non‐positive quantity per unit'], - 0) + 'out': (None, None, ['non‐positive quantity per unit'],0) }, { 'comment': 'cannot pay dividends to holders of BTC', 'in': (ADDR[0], DP['quantity'], 'BTC', 'XCP', DP['default_block_index']), - 'out': (None, None, ['cannot pay dividends to holders of BTC', 'no such asset, BTC.'], 0) + 'out': (None, None, ['cannot pay dividends to holders of BTC', 'only issuer can pay dividends'], 0) }, { 'comment': 'cannot pay dividends to holders of XCP', 'in': (ADDR[0], DP['quantity'], 'XCP', 'XCP', DP['default_block_index']), - 'out': (None, None, ['cannot pay dividends to holders of XCP', 'no such asset, XCP.'], 0) + 'out': (None, None, ['cannot pay dividends to holders of XCP', 'only issuer can pay dividends', 'insufficient funds (XCP)'], 0) }, { 'comment': 'no such asset, NOASSET', 'in': (ADDR[0], DP['quantity'], 'NOASSET', 'XCP', DP['default_block_index']), @@ -2211,60 +2301,29 @@ }, { 'comment': 'non‐positive quantity per unit', 'in': (ADDR[0], 0, 'DIVISIBLE', 'XCP', DP['default_block_index']), - 'out': (0, - [ - {'dividend_quantity': 0, 'address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'address_quantity': 100000000}, - {'dividend_quantity': 0, 'address': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', 'address_quantity': 1000000000}, - {'dividend_quantity': 0, 'address': '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy', 'address_quantity': 100000000} - ], - ['non‐positive quantity per unit', 'zero dividend'], - 0) + 'out': (None, None, ['non‐positive quantity per unit', 'zero dividend'], 0) }, { 'in': (ADDR[1], DP['quantity'], 'DIVISIBLE', 'XCP', DP['default_block_index']), - 'out': (99900000000, - [ - {'address_quantity': 98800000000, 'address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'dividend_quantity': 98800000000}, - {'address_quantity': 1000000000, 'address': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', 'dividend_quantity': 1000000000}, - {'address_quantity': 100000000, 'address': '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy', 'dividend_quantity': 100000000} - ], - ['only issuer can pay dividends', 'insufficient funds (XCP)'], - 0) + 'out': (None, None, ['only issuer can pay dividends', 'insufficient funds (XCP)'], 0) }, { 'in': (ADDR[0], DP['quantity'], 'DIVISIBLE', 'NOASSET', DP['default_block_index']), 'out': (None, None, ['no such dividend asset, NOASSET.'], 0) }, { 'in': (ADDR[0], 8359090909, 'DIVISIBLE', 'XCP', DP['default_block_index']), - 'out': (100309090908, - [ - {'address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'dividend_quantity': 8359090909, 'address_quantity': 100000000}, - {'address': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', 'dividend_quantity': 83590909090, 'address_quantity': 1000000000}, - {'address': '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy', 'dividend_quantity': 8359090909, 'address_quantity': 100000000}, - ], - ['insufficient funds (XCP)'], - 0) + 'out': (None, None, ['insufficient funds (XCP)'], 0) }, { 'in': (ADDR[2], 100000000, 'DIVIDEND', 'DIVIDEND', DP['default_block_index']), - 'out': (10, - [ - {'address_quantity': 10, 'address': 'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj', 'dividend_quantity': 10}, - ], - ['insufficient funds (XCP)'], - 20000) + 'out': (None, None, ['insufficient funds (XCP)'], 0) }, { 'in': (ADDR[2], 2 ** 63, 'DIVIDEND', 'DIVIDEND', DP['default_block_index']), - 'out': (922337203685, - [ - {'address_quantity': 10, 'address': 'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj', 'dividend_quantity': 922337203685}, - ], - ['integer overflow', 'insufficient funds (DIVIDEND)'], - 0) + 'out': (None, None, ['integer overflow', 'insufficient funds (DIVIDEND)'], 0) }], 'compose': [{ 'in': (ADDR[0], DP['quantity'], 'DIVISIBLE', 'XCP'), 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x002\x00\x00\x00\x00\x05\xf5\xe1\x00\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x01') }, { 'in': (ADDR[0], 1, 'DIVISIBLE', 'PARENT.already.issued'), - 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], bytes.fromhex('000000320000000000000001000000a25be34b6601530821671b1065')) + 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], binascii.unhexlify('000000320000000000000001000000a25be34b6601530821671b1065')) }], 'parse': [{ 'comment': 'dividend 1', @@ -2438,7 +2497,7 @@ 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\n\x00\x00\x00\x00\x00\x03:>\x7f\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00\x00\n\x00\x00\x00\x00\x00\r\xbb\xa0') }, { 'in': (ADDR[0], 'MAXI', 2**63 - 1, 'XCP', DP['quantity'], DP['expiration'], 2 ** 63), - 'error': (exceptions.ComposeError, "['integer overflow']") + 'error': (exceptions.ComposeError, ['integer overflow']) }, { 'in': (ADDR[0], 'MAXI', 2**63, 'XCP', DP['quantity'], DP['expiration'], DP['fee_required']), 'error': (exceptions.ComposeError, 'insufficient funds') @@ -2446,12 +2505,12 @@ 'comment': 'give subasset', 'in': (ADDR[0], 'PARENT.already.issued', 100000000, 'XCP', DP['small'], DP['expiration'], DP['fee_required']), 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], - bytes.fromhex('0000000a01530821671b10650000000005f5e10000000000000000010000000002faf080000a00000000000dbba0')) + binascii.unhexlify('0000000a01530821671b10650000000005f5e10000000000000000010000000002faf080000a00000000000dbba0')) }, { 'comment': 'get subasset', 'in': (ADDR[0], 'XCP', DP['small'], 'PARENT.already.issued', 100000000, DP['expiration'], DP['fee_required']), 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], - bytes.fromhex('0000000a00000000000000010000000002faf08001530821671b10650000000005f5e100000a00000000000dbba0')) + binascii.unhexlify('0000000a00000000000000010000000002faf08001530821671b10650000000005f5e100000a00000000000dbba0')) }], 'parse': [{ 'comment': '1', @@ -2485,13 +2544,13 @@ 'fee_paid': 0, 'forward_asset': 'XCP', 'forward_quantity': 100000000, - 'id': 'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'id': '4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'match_expire_index': DP['default_block_index'] + 20, 'status': 'completed', 'tx0_address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'tx0_block_index': DP['default_block_index'] - 495, 'tx0_expiration': 2000, - 'tx0_hash': 'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3', + 'tx0_hash': '4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8', 'tx0_index': 7, 'tx1_address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'tx1_block_index': DP['default_block_index'], @@ -2504,7 +2563,7 @@ 'asset': 'XCP', 'block_index': DP['default_block_index'], 'calling_function': 'order match', - 'event': 'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'event': '4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'quantity': 100000000, }}, {'table': 'debits', 'values': { @@ -2520,7 +2579,7 @@ 'asset': 'DIVISIBLE', 'block_index': DP['default_block_index'], 'calling_function': 'order match', - 'event': 'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'event': '4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'quantity': 100000000, }}, {'table': 'credits', 'values': { @@ -2536,7 +2595,7 @@ 'asset': 'DIVISIBLE', 'block_index': DP['default_block_index'], 'calling_function': 'filled', - 'event': 'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3', + 'event': '4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8', 'quantity': 0, }} ] @@ -2582,13 +2641,13 @@ 'fee_paid': 0, 'forward_asset': 'XCP', 'forward_quantity': 100000000, - 'id': 'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'id': '4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'match_expire_index': DP['default_block_index'] + 20, 'status': 'completed', 'tx0_address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'tx0_block_index': DP['default_block_index'] - 495, 'tx0_expiration': 2000, - 'tx0_hash': 'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3', + 'tx0_hash': '4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8', 'tx0_index': 7, 'tx1_address': P2SH_ADDR[0], 'tx1_block_index': DP['default_block_index'], @@ -2601,7 +2660,7 @@ 'asset': 'XCP', 'block_index': DP['default_block_index'], 'calling_function': 'order match', - 'event': 'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'event': '4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'quantity': 100000000, }}, {'table': 'debits', 'values': { @@ -2617,7 +2676,7 @@ 'asset': 'DIVISIBLE', 'block_index': DP['default_block_index'], 'calling_function': 'order match', - 'event': 'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'event': '4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'quantity': 100000000, }}, {'table': 'credits', 'values': { @@ -2633,7 +2692,7 @@ 'asset': 'DIVISIBLE', 'block_index': DP['default_block_index'], 'calling_function': 'filled', - 'event': 'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3', + 'event': '4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8', 'quantity': 0, }} ] @@ -2667,13 +2726,13 @@ 'fee_paid': 9000, 'forward_asset': 'XCP', 'forward_quantity': 100000000, - 'id': 'c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'id': '1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'match_expire_index': DP['default_block_index'] + 20, 'status': 'pending', 'tx0_address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'tx0_block_index': DP['default_block_index'] - 491, 'tx0_expiration': 2000, - 'tx0_hash': 'c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145', + 'tx0_hash': '1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a', 'tx0_index': 11, 'tx1_address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'tx1_block_index': DP['default_block_index'], @@ -2712,13 +2771,13 @@ 'fee_paid': 0, 'forward_asset': 'BTC', 'forward_quantity': 666666, - 'id': '601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'id': 'a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'match_expire_index': DP['default_block_index'] + 20, 'status': 'pending', 'tx0_address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'tx0_block_index': 310011, 'tx0_expiration': 2000, - 'tx0_hash': '601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e', + 'tx0_hash': 'a1768d7db2db3b9732b26df8c04db4b9a8535a1e5cf684a680e81e7c06f394b6', 'tx0_index': 12, 'tx1_address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'tx1_block_index': DP['default_block_index'], @@ -2877,13 +2936,13 @@ 'fee_paid': 9000, 'forward_asset': 'XCP', 'forward_quantity': 100000000, - 'id': 'c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'id': '1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'match_expire_index': DP['default_block_index'] + 20, 'status': 'pending', 'tx0_address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'tx0_block_index': DP['default_block_index'] - 491, 'tx0_expiration': 2000, - 'tx0_hash': 'c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145', + 'tx0_hash': '1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a', 'tx0_index': 11, 'tx1_address': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', 'tx1_block_index': DP['default_block_index'], @@ -2922,13 +2981,13 @@ 'fee_paid': 9000, 'forward_asset': 'XCP', 'forward_quantity': 100000000, - 'id': 'c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'id': '1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a_db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'match_expire_index': DP['default_block_index'] + 20, 'status': 'pending', 'tx0_address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'tx0_block_index': DP['default_block_index'] - 491, 'tx0_expiration': 2000, - 'tx0_hash': 'c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145', + 'tx0_hash': '1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a', 'tx0_index': 11, 'tx1_address': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', 'tx1_block_index': DP['default_block_index'], @@ -3008,7 +3067,7 @@ 'records': [ {'not': True, # NOT 'table': 'orders', 'values': { - 'tx_hash': '0ec7da68a67e165693afd6c97566f8f509d302bceec8d1be0100335718a40fe5' + 'tx_hash': '0ec7da68a67e165693afd6c97566f8f509d302bceec8d1be0100335718a40fe5' }}, ] }], @@ -3021,47 +3080,47 @@ 'validate': [ { 'in': (ADDR[6], ADDR[5], 1, None, DP['burn_start']), - 'out': [] + 'out': ([], 50000000.0) }, { 'in': (ADDR[6], ADDR[5], 2, None, DP['burn_start']), - 'out': [] + 'out': ([], 50000000.0) }, { 'in': (ADDR[6], ADDR[5], 3, None, DP['burn_start']), - 'out': [] + 'out': ([], 50000000.0) }, { 'in': (ADDR[6], ADDR[5], 1, 'test', DP['burn_start']), - 'out': [] + 'out': ([], 50000000.0) }, { 'in': (ADDR[6], ADDR[5], 1, b'test', DP['burn_start']), - 'out': [] + 'out': ([], 50000000.0) }, { 'in': (ADDR[6], ADDR[5], 0, None, DP['burn_start']), - 'out': ['must specify which kind of transfer in flags'] + 'out': (['must specify which kind of transfer in flags'], 50000000.0) }, { 'in': (ADDR[6], ADDR[6], 1, None, DP['burn_start']), - 'out': ['destination cannot be the same as source'] + 'out': (['destination cannot be the same as source'], 50000000.0) }, { 'in': (ADDR[6], ADDR[5], 8, None, DP['burn_start']), - 'out': ['invalid flags 8'] + 'out': (['invalid flags 8'], 50000000.0) }, { 'in': (ADDR[6], ADDR[5], 1, '012345678900123456789001234567890012345', DP['burn_start']), - 'out': ['memo too long'] + 'out': (['memo too long'], 50000000.0) }, { 'in': (ADDR[7], ADDR[5], 1, None, DP['burn_start']), - 'out': ['insufficient XCP balance for sweep. Need 0.5 XCP for antispam fee'] + 'out': (['insufficient XCP balance for sweep. Need 0.5 XCP for antispam fee'], 50000000.0) }, { 'in': (ADDR[8], ADDR[5], 1, None, DP['burn_start']), - 'out': ['insufficient XCP balance for sweep. Need 0.5 XCP for antispam fee'] + 'out': (['insufficient XCP balance for sweep. Need 0.5 XCP for antispam fee'], 50000000.0) } ], 'compose': [ @@ -3087,7 +3146,7 @@ }, { 'in': (ADDR[8], ADDR[5], 1, None), - 'error': (exceptions.ComposeError, "['insufficient XCP balance for sweep. Need 0.5 XCP for antispam fee']") + 'error': (exceptions.ComposeError, ['insufficient XCP balance for sweep. Need 0.5 XCP for antispam fee']) } ], 'unpack': [ @@ -3224,36 +3283,48 @@ 'dispenser': { 'validate': [ { - 'in': (ADDR[0], config.XCP, 100, 100, 100, 0, None, DP['burn_start']), + 'in': (ADDR[0], config.XCP, 100, 100, 100, 0, None, DP['burn_start'], None), 'out': (1, None) }, { - 'in': (ADDR[0], config.XCP, 200, 100, 100, 0, None, DP['burn_start']), + 'in': (ADDR[0], config.XCP, 200, 100, 100, 0, None, DP['burn_start'], None), 'out': (None, ['escrow_quantity must be greater or equal than give_quantity']) }, { - 'in': (ADDR[0], config.BTC, 100, 100, 100, 0, None, DP['burn_start']), - 'out': (None, ['cannot dispense %s' % config.BTC]) + 'in': (ADDR[0], config.BTC, 100, 100, 100, 0, None, DP['burn_start'], None), + 'out': (None, [f'cannot dispense {config.BTC}']) }, { - 'in': (ADDR[0], config.XCP, 100, 100, 100, 5, None, DP['burn_start']), + 'in': (ADDR[0], config.XCP, 100, 100, 100, 5, None, DP['burn_start'], None), 'out': (None, ['invalid status 5']) }, { - 'in': (ADDR[0], 'PARENT', 100, 1000000000, 100, 0, None, DP['burn_start']), + 'in': (ADDR[0], 'PARENT', 100, 1000000000, 100, 0, None, DP['burn_start'], None), 'out': (None, ["address doesn't has enough balance of PARENT (100000000 < 1000000000)"]) }, { - 'in': (ADDR[5], config.XCP, 100, 100, 120, 0, None, DP['burn_start']), - 'out': (None, ['address has a dispenser already opened for asset %s with a different mainchainrate' % config.XCP]) + 'in': (ADDR[5], config.XCP, 100, 100, 120, 0, None, DP['burn_start'], None), + 'out': (None, [f'address has a dispenser already opened for asset {config.XCP} with a different mainchainrate']) }, { - 'in': (ADDR[5], config.XCP, 120, 120, 100, 0, None, DP['burn_start']), - 'out': (None, ['address has a dispenser already opened for asset %s with a different give_quantity' % config.XCP]) + 'in': (ADDR[5], config.XCP, 120, 120, 100, 0, None, DP['burn_start'], None), + 'out': (None, [f'address has a dispenser already opened for asset {config.XCP} with a different give_quantity']) }, { - 'in': (ADDR[0], 'PARENT', 0, 0, 0, 10, None, DP['burn_start']), + 'in': (ADDR[0], 'PARENT', 0, 0, 0, 10, None, DP['burn_start'], None), 'out': (None, ['address doesnt has an open dispenser for asset PARENT']) + }, + { + 'in': (ADDR[0], config.XCP, config.MAX_INT + 1, 100, 100, 0, None, DP['burn_start'], None), + 'out': (None, ['escrow_quantity must be greater or equal than give_quantity', 'integer overflow']) + }, + { + 'in': (ADDR[0], config.XCP, 100, config.MAX_INT + 1, 100, 0, None, DP['burn_start'], None), + 'out': (None, ["address doesn't has enough balance of XCP (91875000000 < 9223372036854775808)", 'integer overflow']) + }, + { + 'in': (ADDR[0], config.XCP, 100, 100, config.MAX_INT + 1, 0, None, DP['burn_start'], None), + 'out': (None, ['integer overflow']) } ], 'compose': [ @@ -3268,6 +3339,10 @@ { 'in': (ADDR[0], 'PARENT', 100, 10000, 2345, 0), 'out': (ADDR[0], [], b'\x00\x00\x00\x0c\x00\x00\x00\x00\n\xa4\t}\x00\x00\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\'\x10\x00\x00\x00\x00\x00\x00\t)\x00') + }, + { + 'in': (ADDR[0], config.XCP, config.MAX_INT + 1, 100, 100, 0), + 'error': (exceptions.ComposeError, ['escrow_quantity must be greater or equal than give_quantity', 'integer overflow']) } ], 'parse': [ @@ -3316,7 +3391,7 @@ { 'table': 'dispensers', 'values': { # Some values here correspond to the original TX that opened the dispenser 'tx_index': 108, 'tx_hash': '9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec', - 'block_index': 310107, + 'block_index': DP['default_block_index'], 'source': ADDR[5], 'asset': config.XCP, 'give_quantity': 100, @@ -3335,6 +3410,20 @@ }} ] }, + { + 'mock_protocol_changes': { 'dispensers': True }, + 'in': ({ + 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', + 'source': ADDR[5], 'supported': 1, 'block_index': 2344638, + 'fee': 10000, 'block_time': 155409000, 'block_hash': DP['default_block_hash'], + 'btc_amount': 0, 'tx_index': 503, 'destination': '', + # compose(ADDR[0], config.XCP, 100, 100, config.MAX_INT + 1, 0) + # generated with overflow checking commented out + 'data': b'\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00d\x80\x00\x00\x00\x00\x00\x00\x00\x00' + },), + #'error': ("Warning", "Not storing [dispenser] tx [db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d]: invalid: address has a dispenser already opened for asset XCP with a different mainchainrate; integer overflow") + 'out': None + }, ], 'is_dispensable': [ { @@ -3362,7 +3451,7 @@ { 'table': 'dispensers', 'values': { # Some values here correspond to the original TX that opened the dispenser 'tx_index': 108, 'tx_hash': '9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec', - 'block_index': 310107, + 'block_index': DP['default_block_index'], 'source': ADDR[5], 'asset': config.XCP, 'give_quantity': 100, @@ -3375,7 +3464,7 @@ 'calling_function': 'dispense', 'address': ADDR[0], 'asset': config.XCP, - 'block_index': DP['default_block_index'] - 1, + 'block_index': DP['default_block_index'], 'event': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'quantity': 100, }} @@ -3394,7 +3483,7 @@ { 'table': 'dispensers', 'values': { # Some values here correspond to the original TX that opened the dispenser 'tx_index': 108, 'tx_hash': '9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec', - 'block_index': 310107, + 'block_index': DP['default_block_index'], 'source': ADDR[5], 'asset': config.XCP, 'give_quantity': 100, @@ -3407,7 +3496,7 @@ 'calling_function': 'dispense', 'address': ADDR[0], 'asset': config.XCP, - 'block_index': DP['default_block_index'] - 1, + 'block_index': DP['default_block_index'], 'event': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'quantity': 100, }} @@ -3465,7 +3554,7 @@ 'out': (b'\xa9\x14Bd\xcf\xd7\xebe\xf8\xcb\xbd\xba\x98\xbd\x98\x15\xd5F\x1f\xad\x8d~\x87', None) }, { 'in': (P2WPKH_ADDR[0],), - 'out': (b'\xa9\x14u\x1ev\xe8\x19\x91\x96\xd4T\x94\x1cE\xd1\xb3\xa3#\xf1C;\xd6\x87', b'\x00\x14u\x1ev\xe8\x19\x91\x96\xd4T\x94\x1cE\xd1\xb3\xa3#\xf1C;\xd6') + 'out': (b'\x00\x14u\x1ev\xe8\x19\x91\x96\xd4T\x94\x1cE\xd1\xb3\xa3#\xf1C;\xd6', b'\xa9\x14u\x1ev\xe8\x19\x91\x96\xd4T\x94\x1cE\xd1\xb3\xa3#\xf1C;\xd6\x87') }], 'make_fully_valid': [{ 'in': (b'T\xdaT\x0f\xb2f;u\xe6\xc3\xcca\x19\n\xd0\xc2C\x16C\xba\xb2\x8c\xedx<\xd9@y\xbb\xe7$',), @@ -3494,10 +3583,10 @@ 'in': (('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', [('mvCounterpartyXXXXXXXXXXXXXXW24Hef', 62000000)], None), {'encoding': 'multisig', 'fee_provided': 1.0}), 'error': (exceptions.TransactionError, 'Fee provided must be in satoshis.') }, { - 'in': (('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', [('mvCounterpartyXXXXXXXXXXXXXXW24Hef', 5429)], None), {'encoding': 'singlesig', 'regular_dust_size': DP['regular_dust_size']}), + 'in': (('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', [('mvCounterpartyXXXXXXXXXXXXXXW24Hef', config.DEFAULT_REGULAR_DUST_SIZE - 1)], None), {'encoding': 'singlesig', 'regular_dust_size': DP['regular_dust_size']}), 'error': (exceptions.TransactionError, 'Destination output is dust.') }, { - 'in': (('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', [('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', 7799)], None), {'encoding': 'multisig'}), + 'in': (('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', [('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', config.DEFAULT_MULTISIG_DUST_SIZE - 1)], None), {'encoding': 'multisig'}), 'error': (exceptions.TransactionError, 'Destination output is dust.') }, { 'in': (('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', [('mvCounterpartyXXXXXXXXXXXXXXW24Hef', 62000000)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\xfa\xf0\x80'), {'encoding': 'foobar'}), @@ -3508,7 +3597,7 @@ 'error': (exceptions.TransactionError, 'One `OP_RETURN` output per transaction.') }, { 'in': (('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', [('mvCounterpartyXXXXXXXXXXXXXXW24Hef', 2**30)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\xfa\xf0\x80'), {'encoding': 'multisig'}), - 'error': (exceptions.BalanceError, 'Insufficient BTC at address mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns. (Need approximately 10.73761799 BTC.) To spend unconfirmed coins, use the flag `--unconfirmed`. (Unconfirmed coins cannot be spent from multi‐sig addresses.)') + 'error': (exceptions.BalanceError, 'Insufficient BTC at address mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns. (Need approximately 10.73754999 BTC.) To spend unconfirmed coins, use the flag `--unconfirmed`. (Unconfirmed coins cannot be spent from multi‐sig addresses.)') }, { 'comment': 'opreturn encoding with maximum possible data that fits in 80 bytes opreturn (72 bytes of data + 8 bytes for PREFIX)', 'in': (('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', [('mvCounterpartyXXXXXXXXXXXXXXW24Hef', 62000000)], b'\x00' * 72), {'encoding': 'opreturn'}), @@ -3528,58 +3617,58 @@ }, { 'comment': 'send', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\xfa\xf0\x80'), {'encoding': 'multisig', 'regular_dust_size': DP['regular_dust_size']}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e0000000000006951210262415bf04af834423d3dd7ada4dc727a030865759f9fba5aee78c9ea71e58798210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae840dea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace8030000000000006951210262415bf04af834423d3dd7ada4dc727a030865759f9fba5aee78c9ea71e58798210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1428ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'send with custom input which is too low', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\xfa\xf0\x80'), {'encoding': 'multisig', 'regular_dust_size': DP['regular_dust_size'], 'custom_inputs': [{'address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'txhex': '0100000002eff195acdf2bbd215daa8aca24eb667b563a731d34a9ab75c8d8df5df08be29b000000006c493046022100ec6fa8316a4f5cfd69816e31011022acce0933bd3b01248caa8b49e60de1b98a022100987ba974b2a4f9976a8d61d94009cb7f7986a827dc5730e999de1fb748d2046c01210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ffffffffeff195acdf2bbd215daa8aca24eb667b563a731d34a9ab75c8d8df5df08be29b010000006a47304402201f8fb2d62df22592cb8d37c68ab26563dbb8e270f7f8409ac0f6d7b24ddb5c940220314e5c767fd12b20116528c028eab2bfbad30eb963bd849993410049cf14a83d01210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ffffffff02145fea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac0000000000000000346a32544553540000000a00000000000000010000000005f5e1000000000000000000000000000bebc2000032000000000000271000000000', 'confirmations': 74, 'vout': 0, 'scriptPubKey': '76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac', 'txid': 'ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1', 'amount': 0.00001, 'account': ''}]}), - 'error': (exceptions.BalanceError, 'Insufficient BTC at address mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc. (Need approximately 0.0002088 BTC.) To spend unconfirmed coins, use the flag `--unconfirmed`. (Unconfirmed coins cannot be spent from multi‐sig addresses.)') + 'error': (exceptions.BalanceError, 'Insufficient BTC at address mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc. (Need approximately 0.0001408 BTC.) To spend unconfirmed coins, use the flag `--unconfirmed`. (Unconfirmed coins cannot be spent from multi‐sig addresses.)') }, { 'comment': 'send with custom input', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\xfa\xf0\x80'), {'encoding': 'multisig', 'regular_dust_size': DP['regular_dust_size'], 'custom_inputs': [{'address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'txhex': '0100000002eff195acdf2bbd215daa8aca24eb667b563a731d34a9ab75c8d8df5df08be29b000000006c493046022100ec6fa8316a4f5cfd69816e31011022acce0933bd3b01248caa8b49e60de1b98a022100987ba974b2a4f9976a8d61d94009cb7f7986a827dc5730e999de1fb748d2046c01210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ffffffffeff195acdf2bbd215daa8aca24eb667b563a731d34a9ab75c8d8df5df08be29b010000006a47304402201f8fb2d62df22592cb8d37c68ab26563dbb8e270f7f8409ac0f6d7b24ddb5c940220314e5c767fd12b20116528c028eab2bfbad30eb963bd849993410049cf14a83d01210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ffffffff02145fea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac0000000000000000346a32544553540000000a00000000000000010000000005f5e1000000000000000000000000000bebc2000032000000000000271000000000', 'confirmations': 74, 'vout': 0, 'scriptPubKey': '76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac', 'txid': 'ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1', 'amount': 1.9990914, 'account': ''}]}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e0000000000006951210262415bf04af834423d3dd7ada4dc727a030865759f9fba5aee78c9ea71e58798210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae840dea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace8030000000000006951210262415bf04af834423d3dd7ada4dc727a030865759f9fba5aee78c9ea71e58798210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1428ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'send with multisig encoding and bytespersigop enabled for address with multiple UTXOs', 'mock_protocol_changes': {'bytespersigop': True}, 'in': (('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', [('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\xfa\xf0\x80'), {'encoding': 'multisig', 'regular_dust_size': DP['regular_dust_size']}), - 'out': '0100000002ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff85497c27fbc3ecfbfb41f49cbf983e252a91636ec92f2863cb7eb755a33afcb9000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e0000000000006951210372a51ea175f108a1c635886815c4c468ca75a06798f864a1fad446f893f5fef121023260e421a30202f2e76f46acdb292c652371ca48b97460f7928ade8ecb02ea66210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753aec2319f06000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000' + 'out': '0100000002ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff85497c27fbc3ecfbfb41f49cbf983e252a91636ec92f2863cb7eb755a33afcb9000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace8030000000000006951210372a51ea175f108a1c635886815c4c468ca75a06798f864a1fad446f893f5fef121023260e421a30202f2e76f46acdb292c652371ca48b97460f7928ade8ecb02ea66210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae524c9f06000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000' }, { 'comment': 'send, different dust pubkey', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\xfa\xf0\x80'), {'encoding': 'multisig', 'regular_dust_size': DP['regular_dust_size'], 'dust_return_pubkey': '0319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e0000000000006951210262415bf04af834423d3dd7ada4dc727a030865759f9fba5aee78c9ea71e58798210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae840dea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace8030000000000006951210262415bf04af834423d3dd7ada4dc727a030865759f9fba5aee78c9ea71e58798210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae1428ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'send, burn dust pubkey', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\xfa\xf0\x80'), {'encoding': 'multisig', 'regular_dust_size': DP['regular_dust_size'], 'dust_return_pubkey': False}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e0000000000006951210262415bf04af834423d3dd7ada4dc727a030865759f9fba5aee78c9ea71e58798210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe724472111111111111111111111111111111111111111111111111111111111111111111153ae840dea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace8030000000000006951210262415bf04af834423d3dd7ada4dc727a030865759f9fba5aee78c9ea71e58798210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe724472111111111111111111111111111111111111111111111111111111111111111111153ae1428ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'send from P2SH address, multsig encoding, no dust pubkey', 'in': ((P2SH_ADDR[0], [('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\xfa\xf0\x80'), {'encoding': 'multisig', 'dust_return_pubkey': False, 'regular_dust_size': DP['regular_dust_size']}), - 'out': '01000000015001af2c4c3bc2c43b6233261394910d10fb157a082d9b3038c65f2d01e4ff200000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e0000000000006951210397b51de78b0f3a171f5ed27fff56d17dcba739c8b00035c8bbb9c380fdc4ed1321036932bcbeac2a4d8846b7feb4bf93b2b88efd02f2d8dc1fc0067bcc972257e3912111111111111111111111111111111111111111111111111111111111111111111153ae708ff5050000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000' + 'out': '01000000015001af2c4c3bc2c43b6233261394910d10fb157a082d9b3038c65f2d01e4ff200000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace8030000000000006951210397b51de78b0f3a171f5ed27fff56d17dcba739c8b00035c8bbb9c380fdc4ed1321036932bcbeac2a4d8846b7feb4bf93b2b88efd02f2d8dc1fc0067bcc972257e3912111111111111111111111111111111111111111111111111111111111111111111153ae00aaf5050000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000' }, { 'comment': 'send to P2SH address', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [(P2SH_ADDR[0], None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\xfa\xf0\x80'), {'encoding': 'multisig', 'regular_dust_size': DP['regular_dust_size']}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87781e0000000000006951210262415bf04af834423d3dd7ada4dc727a030865759f9fba5aee78c9ea71e58798210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae840dea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03361500000000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87e8030000000000006951210262415bf04af834423d3dd7ada4dc727a030865759f9fba5aee78c9ea71e58798210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1428ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'send dest multisig', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00'), {'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e0000000000006951210362415bf04af834423d3dd7ada4dc727a030865759f9fba5aee7fc6fbf1e5875a210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4204ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee8030000000000006951210362415bf04af834423d3dd7ada4dc727a030865759f9fba5aee7fc6fbf1e5875a210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae6239ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'send dest multisig exact_fee', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00'), {'encoding': 'multisig', 'exact_fee': 1}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e0000000000006951210362415bf04af834423d3dd7ada4dc727a030865759f9fba5aee7fc6fbf1e5875a210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae2322ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee8030000000000006951210362415bf04af834423d3dd7ada4dc727a030865759f9fba5aee7fc6fbf1e5875a210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4357ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'send dest opreturn', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00'), {'encoding': 'opreturn'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000000000001e6a1c2a504df746f83442653dd7ada4dc727a030865749e9fba5aeb8fd21aed26ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000000000001e6a1c2a504df746f83442653dd7ada4dc727a030865749e9fba5aeb8fd21a7d41ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'send dest pubkeyhash', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00'), {'encoding': 'pubkeyhash', 'regular_dust_size': DP['regular_dust_size']}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff04781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae36150000000000001976a9146d415bf04af834423d3dd7ada4dc727a0308657588ac36150000000000001976a9146f415bf04af834423d3cd7ada4dc778fe208657588ac93f9e90b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff04e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae36150000000000001976a9146d415bf04af834423d3dd7ada4dc727a0308657588ac36150000000000001976a9146f415bf04af834423d3cd7ada4dc778fe208657588ac2314ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'send dest 1-of-1', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_1', None)], b'\x00\x00\x00\x00\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x00'), {'encoding': 'multisig'}), @@ -3587,67 +3676,67 @@ }, { 'comment': 'send source multisig', 'in': (('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', [('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00'), {'encoding': 'multisig', 'regular_dust_size': DP['regular_dust_size']}), - 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e0000000000006951210334caf7ca87f0fd78a01d9a0d68221e55beef3722da8be72d254dd351c26108892102bc14528340c27d005aa9e2913fd8c032ffa94625307a450077125d580099b57d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae708ff505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' + 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace8030000000000006951210334caf7ca87f0fd78a01d9a0d68221e55beef3722da8be72d254dd351c26108892102bc14528340c27d005aa9e2913fd8c032ffa94625307a450077125d580099b57d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae00aaf505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' }, { 'comment': 'send source and dest multisig', 'in': (('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', [('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00'), {'encoding': 'multisig'}), - 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004751210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52ae781e0000000000006951210334caf7ca87f0fd78a01d9a0d68221e55beef3722da8be72d254dd351c26108892102bc14528340c27d005aa9e2913fd8c032ffa94625307a450077125d580099b57d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae2e86f505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' + 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004751210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52aee8030000000000006951210334caf7ca87f0fd78a01d9a0d68221e55beef3722da8be72d254dd351c26108892102bc14528340c27d005aa9e2913fd8c032ffa94625307a450077125d580099b57d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4ebbf505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' }, { 'comment': 'maximum quantity send', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', None)], b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03:>\x7f\xff\xff\xff\xff\xff\xff\xff'), {'encoding': 'multisig', 'regular_dust_size': DP['regular_dust_size']}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e0000000000006951210362415bf04af834423d3dd7ada4dc727a0308664fa0e045a51185cce50ee58717210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae840dea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace8030000000000006951210362415bf04af834423d3dd7ada4dc727a0308664fa0e045a51185cce50ee58717210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1428ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'issuance', - 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'), {'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e0000000000006951210359415bf04af834423d3dd7adb0dc727a03086e897d9fba5aee7a331919e4871d210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0c26ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x16\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0NULL'), {'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e8030000000000006951210355415bf04af834423d3dd7adb2dc727a03086e897d9fba5aee7a331919e48780210254da540fb2663b75268d992d550ad0c2431643bab28ced783cd94079bbe7244d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9c40ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'issuance', - 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', None)], b'\x00\x00\x00\x14\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'), {'encoding': 'multisig', 'regular_dust_size': DP['regular_dust_size']}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e0000000000006951210259415bf04af834423d3dd7adb0dc727aa153863ef89fba5aee7a331af1e4873a210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae840dea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', None)], b'\x00\x00\x00\x16\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0NULL'), {'encoding': 'multisig', 'regular_dust_size': DP['regular_dust_size']}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace8030000000000006951210355415bf04af834423d3dd7adb2dc727aa153863ef89fba5aee7a331af1e48750210254da540fb2663b75268d992d550ad0c2431643bab28ced783cd94079bbe7244d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae1428ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'multisig issuance', - 'in': (('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', [], b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'), {'encoding': 'multisig'}), - 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e000000000000695121030fcaf7ca87f0fd78a01d9a0d7c221e55beef3cde388be72d254826b32a6008cb2102bc14528340c27d005aa9e2913fd8c032ffa94625307a450077125d580099b57d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef8a7f505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' + 'in': (('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', [], b'\x00\x00\x00\x16\x00\x00\x00\x00\x00\x0b\xfc\xe3\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0NULL'), {'encoding': 'multisig'}), + 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e8030000000000006951210203caf7ca87f0fd78a01d9a0d7e221e55beef3cde388be72d254826b32a6008b62103bc14528340c27d009ae7b7dd73d8c032ffa94625307a450077125d580099b55a210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae88c2f505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' }, { 'comment': 'maximum quantity issuance', - 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x14\x00\x00\x00\x00\xdd\x96\xd2t\x7f\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10Maximum quantity'), {'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e0000000000006951210249415bf04af834423d3dd7adb0dc727a03d5f3a7eae045a51185cce50ee4877e210354da540fb2663b75f68ead197067a5af636736dbdcf8840c45d94079bbe724cb210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0c26ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x16\x00\x00\x00\x00\xdd\x96\xd2t\x7f\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0NULL'), {'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e8030000000000006951210355415bf04af834423d3dd7adb2dc727a03d5f3a7eae045a51185cce50ee487c2210254da540fb2663b75268d992d550ad0c2431643bab28ced783cd94079bbe7244d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9c40ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'transfer asset to multisig', - 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', None)], b'\x00\x00\x00\x14\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'), {'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e0000000000006951210259415bf04af834423d3dd7adb0dc727aa153863ef89fba5aee7a331af1e4873a210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4204ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', None)], b'\x00\x00\x00\x16\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0NULL'), {'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee8030000000000006951210355415bf04af834423d3dd7adb2dc727aa153863ef89fba5aee7a331af1e48750210254da540fb2663b75268d992d550ad0c2431643bab28ced783cd94079bbe7244d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae6239ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'order', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00'), {'encoding': 'multisig','fee_provided': DP['fee_provided']}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e0000000000006951210348415bf04af834423d3dd7adaedc727a030865759e9fba5aee78c9ea71e5870f210354da540fb2673b75e6c3c994f80ad0c8431643bab28ced783cd94079bbe72445210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae5cfeda0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e8030000000000006951210348415bf04af834423d3dd7adaedc727a030865759e9fba5aee78c9ea71e5870f210354da540fb2673b75e6c3c994f80ad0c8431643bab28ced783cd94079bbe72445210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeec18db0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'multisig order', 'in': (('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', [], b'\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00'), {'encoding': 'multisig','fee_provided': DP['fee_provided']}), - 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e000000000000695121021ecaf7ca87f0fd78a01d9a0d62221e55beef3722db8be72d254adc40426108d02103bc14528340c37d005aa9e764ded8c038ffa94625307a450077125d580099b53b210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4880e605000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' + 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e803000000000000695121021ecaf7ca87f0fd78a01d9a0d62221e55beef3722db8be72d254adc40426108d02103bc14528340c37d005aa9e764ded8c038ffa94625307a450077125d580099b53b210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed89ae605000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' }, { 'comment': 'multisig order', 'in': (('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', [], b'\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x06B,@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xfa\xf0\x80\x00\n\x00\x00\x00\x00\x00\r\xbb\xa0'), {'encoding': 'multisig'}), - 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e000000000000695121031ecaf7ca87f0fd78a01d9a0d62221e55beef3722da8be72d254e649c8261083d2102bc14528340c27d005aa9e06bcf58c038ffa946253077fea077125d580099b5bb210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef8a7f505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' + 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e803000000000000695121031ecaf7ca87f0fd78a01d9a0d62221e55beef3722da8be72d254e649c8261083d2102bc14528340c27d005aa9e06bcf58c038ffa946253077fea077125d580099b5bb210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae88c2f505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' }, { 'comment': 'maximum quantity order', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\n\x00\x00\x00\x00\x00\x03:>\x7f\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x05\xf5\xe1\x00\x00\n\x00\x00\x00\x00\x00\r\xbb\xa0'), {'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e0000000000006951210248415bf04af834423d3dd7adaedc727a0308664fa0e045a51185cce50ee58759210354da540fb2673b75e6c3c994f80ad0c8431643bab28156d83cd94079bbe72452210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0c26ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e8030000000000006951210248415bf04af834423d3dd7adaedc727a0308664fa0e045a51185cce50ee58759210354da540fb2673b75e6c3c994f80ad0c8431643bab28156d83cd94079bbe72452210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9c40ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'dividend', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x002\x00\x00\x00\x00\x05\xf5\xe1\x00\x00\x00\x00\xa2[\xe3Kf\x00\x00\x00\x00\x00\x00\x00\x01'), {'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e000000000000695121035a415bf04af834423d3dd7ad96dc727a030d90949e9fba5a4c21d05197e58735210254da540fb2673b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe7246f210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0c26ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e803000000000000695121035a415bf04af834423d3dd7ad96dc727a030d90949e9fba5a4c21d05197e58735210254da540fb2673b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe7246f210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9c40ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'dividend', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x002\x00\x00\x00\x00\x00\x00\x00\x01\x00\x06\xca\xd8\xdc\x7f\x0bf\x00\x00\x00\x00\x00\x00\x00\x01'), {'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e000000000000695121025a415bf04af834423d3dd7ad96dc727a030865759f9fbc9036a64c1197e587c8210254da540fb2673b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe7246f210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0c26ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e803000000000000695121025a415bf04af834423d3dd7ad96dc727a030865759f9fbc9036a64c1197e587c8210254da540fb2673b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe7246f210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9c40ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'free issuance', - 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x14\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'), {'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e0000000000006951210259415bf04af834423d3dd7adb0238d85fcf79a8a619fba5aee7a331919e487e8210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0c26ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x16\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x03\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0NULL'), {'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e8030000000000006951210255415bf04af834423d3dd7adb2238d85fcf79a8a619fba5aee7a331919e4870d210254da540fb2663b75268d992d550ad0c2431643bab28ced783cd94079bbe7244d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9c40ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }, { 'comment': 'large broadcast', 'in': (('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], b'\x00\x00\x00\x1e^\xa6\xf5\x00?\xf0\x00\x00\x00\x00\x00\x00\x00LK@lOver 80 characters test test test test test test test test test test test test test test test test test test'), {}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff04781e0000000000006951210343415bf04af834423d3dd7adba82d48f033795759e9fba5aee7a7f51b189c8c0210322bf262f8a561b168ea2be007a7eb5b0303637dfc1f8cd0c59aa3459cf825784210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae781e0000000000006951210343415bf04af834423d49f7d9c1af065a776d1601beebdf299a5a477f8291a7c4210220bf277b92125e0692e3b8046a7ef0b62665379ac6e99e0c1cad250acfc750c9210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae781e0000000000006951210361415bf04af834423d58a4d984a8170977281110edeb9a2e8b09473a8580f45d210220da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe724dc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4ad9e90b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff04e8030000000000006951210343415bf04af834423d3dd7adba82d48f033795759e9fba5aee7a7f51b189c8c0210322bf262f8a561b168ea2be007a7eb5b0303637dfc1f8cd0c59aa3459cf825784210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee8030000000000006951210343415bf04af834423d49f7d9c1af065a776d1601beebdf299a5a477f8291a7c4210220bf277b92125e0692e3b8046a7ef0b62665379ac6e99e0c1cad250acfc750c9210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aee8030000000000006951210361415bf04af834423d58a4d984a8170977281110edeb9a2e8b09473a8580f45d210220da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe724dc210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aefa28ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' }], }, 'api': { @@ -3696,7 +3785,7 @@ }, { 'comment': 'standard send with no memo', 'in': ('sends', [{'field':'block_index','op':'=','value':'310496'}], 'AND', None, None, None, None, None, 1000, 0, True), - 'out': [{'tx_index': 497, 'tx_hash': '1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6', 'block_index': 310496, 'source': 'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH', 'destination': 'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj', 'asset': 'XCP', 'quantity': 92945878046, 'status': 'valid', 'memo': None, 'memo_hex': None, 'msg_index': 0}] + 'out': [{'tx_index': 497, 'tx_hash': 'a35ab1736565aceddbd1d71f92fc7f39d1361006aa9099f731e54e762964d5ba', 'block_index': 310496, 'source': 'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH', 'destination': 'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj', 'asset': 'XCP', 'quantity': 92945878046, 'status': 'valid', 'memo': None, 'memo_hex': None, 'msg_index': 0}] }, { 'comment': 'with memo', 'in': ('sends', [{'field':'block_index','op':'=','value':'310481'}], 'AND', None, None, None, None, None, 1000, 0, True), @@ -3739,7 +3828,7 @@ }, { 'comment': 'invalid bitcoin address: bad checksum', 'in': ('mnMrocns5kBjPZxRxXb5A1gx7gAoRZWPP7',), - 'error': (script.Base58ChecksumError, 'Checksum mismatch: 0x00285aa2 ≠ 0x00285aa1') + 'error': (script.Base58Error, 'invalid base58 string') }, { 'comment': 'valid multi‐sig', 'in': ('1_mnMrocns5kBjPZxRxXb5A1gx7gAoRZWPP6_mnMrocns5kBjPZxRxXb5A1gx7gAoRZWPP6_2',), @@ -3765,20 +3854,17 @@ 'in': (bitcoinlib.core.CScript(bitcoinlib.core.x('5121035ca51ea175f108a1c63588683dc4c43a7146c46799f864a300263c0813f5fe352102309a14a1a30202f2e76f46acdb2917752371ca42b97460f7928ade8ecb02ea17210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97753ae')),), 'out': "1_mjH9amw2tJrsrw76PVvCkCQ18V4pZCVtm5_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_mvgph5nejRWUVvbzyq7TU9ENpJyV97ua37_3" }, - # when input is already an address, return None (don't raise) { 'in': ('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH',), - 'out': None + 'error': (exceptions.DecodeError, 'invalid script') }, - # when input is a list of addresses, return None (don't raise) { 'in': (['mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH', 'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH'],), - 'out': None + 'error': (exceptions.DecodeError, 'invalid script') }, - # when input is op_return with garbage data (a message with incorrect OP_PUSH), return None (don't raise) { 'in': (bitcoinlib.core.CScript(bitcoinlib.core.x('6a53657466697665207361797320686921')),), - 'error': (exceptions.PushDataDecodeError, 'invalid pushdata due to truncation') + 'error': (exceptions.DecodeError, 'invalid script') }, { 'comment': 'p2pkh', 'in': (bitcoinlib.core.CScript(bitcoinlib.core.x('76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac')),), @@ -3789,7 +3875,7 @@ 'out': '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy' }], 'get_asm': [{ - 'in': ([],), + 'in': (b'',), 'error': (exceptions.DecodeError, 'empty output') }], 'base58_encode': [{ @@ -3836,11 +3922,11 @@ }, { 'comment': 'wrong version byte', 'in': ('26UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM', b'\x00'), - 'error': (script.VersionByteError, 'incorrect version byte') + 'error': (script.Base58Error, 'invalid base58 string') }, { 'comment': 'invalid mainnet bitcoin address: bad checksum', 'in': ('16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvN', b'\x00'), - 'error': (script.Base58ChecksumError, 'Checksum mismatch: 0xd61967f7 ≠ 0xd61967f6') + 'error': (script.Base58Error, 'invalid base58 string') }, { 'comment': 'valid testnet bitcoin address that we use in many tests', 'in': (ADDR[0], b'\x6f'), @@ -3848,7 +3934,7 @@ }, { 'comment': 'invalid mainnet bitcoin address: invalid character', 'in': ('16UwLL9Risc3QfPqBUvKofHmBQ7wMtjv0', b'\x00'), - 'error': (script.Base58Error, "Not a valid Base58 character: ‘0’") + 'error': (script.Base58Error, "invalid base58 string") }], # base58_decode is the raw decoding, we use the test cases from base58_check_decode 'base58_decode': [{ @@ -4029,131 +4115,7 @@ 'out': ['02513522cbf07b0bd553b0d8f8414c476c9275334fd3edfa368386412e3a193558'] }] }, - 'util': { - 'api': [{ - 'in': ('create_burn', {'source': ADDR[1], 'quantity': DP['burn_quantity'], 'encoding': 'multisig'}), - 'out': '0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac87bf4302000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000' - }, { - 'in': ('create_send', {'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small'], 'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e0000000000006951210262415bf04af834423d3dd7ada4dc727a030865759f9fba5aee78c9ea71e58798210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae840dea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' - }, { - 'in': ('create_send', {'source': P2SH_ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small'], 'encoding': 'multisig', 'dust_return_pubkey': False, 'regular_dust_size': DP['regular_dust_size']}), - 'out': '01000000015001af2c4c3bc2c43b6233261394910d10fb157a082d9b3038c65f2d01e4ff200000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e0000000000006951210397b51de78b0f3a171f5ed27fff56d17dcba739c8b00035c8bbb9c380fdc4ed1321036932bcbeac2a4d8846b7feb4bf93b2b88efd02f2d8dc1fc0067bcc972257e3912111111111111111111111111111111111111111111111111111111111111111111153ae708ff5050000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000' - }, { - 'in': ('create_issuance', {'source': ADDR[0], 'transfer_destination': None, 'asset': 'BSSET', 'quantity': 1000, 'divisible': True, 'description': '', 'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e0000000000006951210359415bf04af834423d3dd7adb0dc727a03086e897d9fba5aee7a331919e4871d210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0c26ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' - }, { - 'in': ('create_issuance', {'source': ADDR[0], 'transfer_destination': ADDR[1], 'asset': 'DIVISIBLE', 'quantity': 0, 'divisible': True, 'description': '', 'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac781e0000000000006951210259415bf04af834423d3dd7adb0dc727aa153863ef89fba5aee7a331af1e4873a210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae840dea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' - }, { - 'in': ('create_order', {'source': ADDR[0], 'give_asset': 'BTC', 'give_quantity': DP['small'], 'get_asset': 'XCP', 'get_quantity': DP['small'] * 2, 'expiration': DP['expiration'], 'fee_required': 0, 'fee_provided': DP['fee_provided'], 'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e0000000000006951210348415bf04af834423d3dd7adaedc727a030865759e9fba5aee78c9ea71e5870f210354da540fb2673b75e6c3c994f80ad0c8431643bab28ced783cd94079bbe72445210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae5cfeda0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' - }, { - 'in': ('create_order', {'source': ADDR[0], 'give_asset': 'XCP', 'give_quantity': round(DP['small'] * 2.1), 'get_asset': 'BTC', 'get_quantity': DP['small'], 'expiration': DP['expiration'], 'fee_required': DP['fee_required'], 'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e0000000000006951210248415bf04af834423d3dd7adaedc727a030865759f9fba5aee7c7136b1e58715210354da540fb2663b75e6c3ce9be98ad0c8431643bab28156d83cd94079bbe72460210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0c26ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' - }, { - 'in': ('create_burn', {'source': MULTISIGADDR[0], 'quantity': int(DP['quantity'] / 2), 'encoding': 'multisig'}), - 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0280f0fa02000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac87dafa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' - }, { - 'in': ('create_send', {'source': ADDR[0], 'destination': MULTISIGADDR[0], 'asset': 'XCP', 'quantity': DP['quantity'], 'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e0000000000006951210362415bf04af834423d3dd7ada4dc727a030865759f9fba5aee7fc6fbf1e5875a210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4204ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' - }, { - 'in': ('create_send', {'source': MULTISIGADDR[0], 'destination': ADDR[0], 'asset': 'XCP', 'quantity': DP['quantity'], 'encoding': 'multisig'}), - 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0336150000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac781e0000000000006951210334caf7ca87f0fd78a01d9a0d68221e55beef3722da8be72d254dd351c26108892102bc14528340c27d005aa9e2913fd8c032ffa94625307a450077125d580099b57d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae708ff505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' - }, { - 'in': ('create_send', {'source': MULTISIGADDR[0], 'destination': MULTISIGADDR[1], 'asset': 'XCP', 'quantity': DP['quantity'], 'encoding': 'multisig'}), - 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03781e0000000000004751210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52ae781e0000000000006951210334caf7ca87f0fd78a01d9a0d68221e55beef3722da8be72d254dd351c26108892102bc14528340c27d005aa9e2913fd8c032ffa94625307a450077125d580099b57d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae2e86f505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' - }, { - 'in': ('create_issuance', {'source': MULTISIGADDR[0], 'transfer_destination': None, 'asset': 'BSSET', 'quantity': 1000, 'divisible': True, 'description': '', 'encoding': 'multisig'}), - 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e000000000000695121030fcaf7ca87f0fd78a01d9a0d7c221e55beef3cde388be72d254826b32a6008cb2102bc14528340c27d005aa9e2913fd8c032ffa94625307a450077125d580099b57d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef8a7f505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' - }, { - 'in': ('create_issuance', {'source': ADDR[0], 'transfer_destination': MULTISIGADDR[0], 'asset': 'DIVISIBLE', 'quantity': 0, 'divisible': True, 'description': '', 'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03781e0000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae781e0000000000006951210259415bf04af834423d3dd7adb0dc727aa153863ef89fba5aee7a331af1e4873a210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4204ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' - }, { - 'in': ('create_issuance', {'source': ADDR[0], 'asset': 'A{}'.format(2**64 - 1), 'quantity': 1000, 'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e0000000000006951210259415bf04af834423d3dd7adb0238d85fcf79a8a619fba5aee7a331919e487e8210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0c26ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' - }, { - 'comment': '1', - 'in': ('create_order', {'source': MULTISIGADDR[0], 'give_asset': 'BTC', 'give_quantity': DP['small'], 'get_asset': 'XCP', 'get_quantity': DP['small'] * 2, 'expiration': DP['expiration'], 'fee_required': 0, 'fee_provided': DP['fee_provided'], 'encoding': 'multisig'}), - 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e000000000000695121021ecaf7ca87f0fd78a01d9a0d62221e55beef3722db8be72d254adc40426108d02103bc14528340c37d005aa9e764ded8c038ffa94625307a450077125d580099b53b210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4880e605000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' - }, { - 'in': ('create_order', {'source': MULTISIGADDR[0], 'give_asset': 'XCP', 'give_quantity': round(DP['small'] * 2.1), 'get_asset': 'BTC', 'get_quantity': DP['small'], 'expiration': DP['expiration'], 'fee_required': DP['fee_required'], 'encoding': 'multisig'}), - 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02781e000000000000695121031ecaf7ca87f0fd78a01d9a0d62221e55beef3722da8be72d254e649c8261083d2102bc14528340c27d005aa9e06bcf58c038ffa946253077fea077125d580099b5bb210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aef8a7f505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' - }, { - 'in': ('create_dividend', {'source': ADDR[0], 'quantity_per_unit': DP['quantity'], 'asset': 'DIVISIBLE', 'dividend_asset': 'XCP', 'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e000000000000695121035a415bf04af834423d3dd7ad96dc727a030d90949e9fba5a4c21d05197e58735210254da540fb2673b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe7246f210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0c26ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' - }, { - 'in': ('create_dividend', {'source': ADDR[0], 'quantity_per_unit': 1, 'asset': 'NODIVISIBLE', 'dividend_asset': 'XCP', 'encoding': 'multisig'}), - 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02781e000000000000695121025a415bf04af834423d3dd7ad96dc727a030865759f9fbc9036a64c1197e587c8210254da540fb2673b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe7246f210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae0c26ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' - - # CIP 9 enhanced_send tests - - }, { - 'comment': 'standard op return send', - 'mock_protocol_changes': {'enhanced_sends': False}, - 'in': ('create_send', {'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small']}), - 'out': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'03'+'3615000000000000'+'19'+'76a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac'+'0000000000000000'+'1e'+'6a1c2a504df746f83442653dd7ada4dc727a030865749e9fba5aec80c39a'+'2f30ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000' - }, { - 'comment': 'standard op return send (with API parameter)', - 'mock_protocol_changes': {'enhanced_sends': True}, - 'in': ('create_send', {'use_enhanced_send': False, 'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small']}), - 'out': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'03'+'3615000000000000'+'19'+'76a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac'+'0000000000000000'+'1e'+'6a1c2a504df746f83442653dd7ada4dc727a030865749e9fba5aec80c39a'+'2f30ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000' - }, { - 'comment': 'CIP 9 enhanced_send (op_return)', - 'mock_protocol_changes': {'enhanced_sends': True}, - 'in': ('create_send', {'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small']}), - 'out': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'02'+'0000000000000000'+'33'+'6a312a504df746f83442653dd7afa4dc727a030865749e9fba5aec80c39a9e68edbc79e78ed45723c1072c38aededa458f95fa'+'aa46ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000' - }, { - 'comment': 'CIP 9 enhanced_send with memo', - 'mock_protocol_changes': {'enhanced_sends': True}, - 'in': ('create_send', {'memo': 'hello', 'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small']}), - 'out': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'02'+'0000000000000000'+'38'+'6a36'+'2a504df746f83442653dd7afa4dc727a030865749e9fba5aec80c39a9e68edbc79e78ed45723c1072c38aededa458f95fa2bdfdee082'+'2d46ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000' - }, { - 'comment': 'CIP 9 enhanced_send with memo as hex', - 'mock_protocol_changes': {'enhanced_sends': True}, - 'in': ('create_send', {'memo': '0102030405', 'memo_is_hex': True, 'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small']}), - 'out': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'02'+'0000000000000000'+'38'+'6a36'+'2a504df746f83442653dd7afa4dc727a030865749e9fba5aec80c39a9e68edbc79e78ed45723c1072c38aededa458f95fa42b8b188e8'+'2d46ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000' - }, { - 'comment': 'CIP 9 enhanced_send before enabled', - 'mock_protocol_changes': {'enhanced_sends': False}, - 'in': ('create_send', {'memo': '0102030405', 'memo_is_hex': True, 'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small']}), - 'error': (RPCError, 'Error composing send transaction via API: enhanced sends are not enabled (-32001)') - }, { - 'comment': 'CIP 9 enhanced send to a REQUIRE_MEMO address without memo', - 'mock_protocol_changes': {'enhanced_sends': True, 'options_require_memo': True}, - 'in': ('create_send', {'source': ADDR[0], 'destination': ADDR[6], 'asset': 'XCP', 'quantity': DP['small']}), - 'error': (RPCError, "Error composing send transaction via API: ['destination requires memo'] (-32001)") - }, { - 'comment': 'CIP 9 enhanced send to a REQUIRE_MEMO address with memo', - 'mock_protocol_changes': {'enhanced_sends': True, 'options_require_memo': True}, - 'in': ('create_send', {'memo': '0102030405', 'memo_is_hex': True, 'source': ADDR[0], 'destination': ADDR[6], 'asset': 'XCP', 'quantity': DP['small']}), - 'out': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'02'+'0000000000000000'+'38'+'6a36'+'2a504df746f83442653dd7afa4dc727a030865749e9fba5aec80c39a9e56174ca4a68af644972baced7a9ef02e467cb63542b8b188e8'+'2d46ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000' - - # get_tx_info API method - - }, { - 'comment': 'get_tx_info for a legacy send', - 'in': ('get_tx_info', {'tx_hex': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'03'+'3615000000000000'+'19'+'76a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac'+'0000000000000000'+'1e'+'6a1c2a504df746f83442653dd7ada4dc727a030865749e9fba5aec80c39a'+'2f30ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000'}), - 'out': ['mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 5430, 6575, '0000000000000000000000010000000002faf080'] - }, { - 'comment': 'get_tx_info for an enhanced send', - 'mock_protocol_changes': {'enhanced_sends': True,}, - 'in': ('get_tx_info', {'tx_hex': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'02'+'0000000000000000'+'33'+'6a312a504df746f83442653dd7afa4dc727a030865749e9fba5aec80c39a9e68edbc79e78ed45723c1072c38aededa458f95fa'+'aa46ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000'}), - 'out': ['mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', '', 0, 6250, '0000000200000000000000010000000002faf0806f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec'] - - # unpack API method - - }, { - 'comment': 'Unpack a data hex for a legacy send', - 'in': ('unpack', {'data_hex': '0000000000000000000000010000000002faf080'}), - 'out': [0, {'asset': 'XCP', 'quantity': 50000000}] - }, { - 'comment': 'Unpack a data hex for an enahcned send', - 'mock_protocol_changes': {'enhanced_sends': True, 'options_require_memo': True}, - 'in': ('unpack', {'data_hex': '0000000200000000000000010000000002faf0806f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec'}), - 'out': [2, {'address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'asset': 'XCP', 'memo': None, 'quantity': 50000000}] - }], - + 'ledger': { 'generate_asset_id': [{ 'in': ('BTC', DP['default_block_index']), 'out': 0 @@ -4167,23 +4129,23 @@ 'in': ('ABCD', 308000), 'error': (exceptions.AssetNameError, 'non‐numeric asset name starts with ‘A’') }, { - 'in': ('A{}'.format(26**12), 308000), + 'in': (f'A{26 ** 12}', 308000), 'error': (exceptions.AssetNameError, 'numeric asset name not in range') }, { - 'in': ('A{}'.format(2**64), 308000), + 'in': (f'A{2 ** 64}', 308000), 'error': (exceptions.AssetNameError, 'numeric asset name not in range') }, { - 'in': ('A{}'.format(26**12 + 1), 308000), + 'in': (f'A{26 ** 12 + 1}', 308000), 'out': 26**12 + 1 }, { - 'in': ('A{}'.format(2**64 - 1), 308000), + 'in': (f'A{2 ** 64 - 1}', 308000), 'out': 2**64 - 1 }, { 'in': ('LONGASSETNAMES', 308000), 'error': (exceptions.AssetNameError, 'long asset names must be numeric') }, { 'in': ('BCDE_F', 308000), - 'error': (exceptions.AssetNameError, "('invalid character:', '_')") + 'error': (exceptions.AssetNameError, "invalid character:") }, { 'in': ('BAAA', 308000), 'out': 26**3 @@ -4205,10 +4167,10 @@ 'out': 'BAAA' }, { 'in': (2**64 - 1, 308000), - 'out': 'A{}'.format(2**64 - 1) + 'out': f'A{2 ** 64 - 1}' }, { 'in': (26**12 + 1, 308000), - 'out': 'A{}'.format(26**12 + 1) + 'out': f'A{26 ** 12 + 1}' }, { 'in': (26**3 - 1, 308000), 'error': (exceptions.AssetIDError, 'too low') @@ -4220,26 +4182,14 @@ 'in': (1, 10), 'out': Fraction(1, 10) }], - 'dhash_string': [{ - 'in': ('foobar',), - 'out': '3f2c7ccae98af81e44c0ec419659f50d8b7d48c681e5d57fc747d0461e42dda1' - }], - 'hexlify': [{ - 'in': (b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\x0b\xfc\xe3',), - 'out': '0000001400000000000bfce3' - }], 'last_message': [{ 'in': (), - 'out': {'bindings': '{"action": "issuance", "address": ' - '"mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": ' - '"A95428956661682277", "block_index": 310498, "event": ' - '"0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf", ' - '"quantity": 100000000}', - 'block_index': 310498, - 'category': 'credits', - 'command': 'insert', - 'message_index': 129, - 'timestamp': 0} + 'out': {'message_index': 66, + 'block_index': 310498, + 'command': 'insert', + 'category': 'issuances', + 'bindings': "['asset', 'asset_longname', 'block_index', 'call_date', 'call_price', 'callable', 'description', 'divisible', 'fee_paid', 'issuer', 'locked', 'quantity', 'reset', 'source', 'status', 'transfer', 'tx_hash', 'tx_index']", + 'timestamp': 0} }], 'get_asset_id': [{ 'in': ('XCP', DP['default_block_index']), @@ -4265,35 +4215,35 @@ 'out': 'PARENT.ILEGAL^^^' }, { 'in': ('PARENT.already.issued',), - 'out': 'A{}'.format(26**12 + 101) + 'out': f'A{26 ** 12 + 101}' }], 'debit': [{ - 'in': (ADDR[0], 'XCP', 1), + 'in': (ADDR[0], 'XCP', 1, 0), 'out': None }, { - 'in': (ADDR[0], 'BTC', DP['quantity']), + 'in': (ADDR[0], 'BTC', DP['quantity'], 0), 'error': (DebitError, 'Cannot debit bitcoins.') }, { - 'in': (ADDR[0], 'BTC', -1 * DP['quantity']), + 'in': (ADDR[0], 'BTC', -1 * DP['quantity'], 0), 'error': (DebitError, 'Negative quantity.') }, { - 'in': (ADDR[0], 'BTC', 1.1 * DP['quantity']), + 'in': (ADDR[0], 'BTC', 1.1 * DP['quantity'], 0), 'error': (DebitError, 'Quantity must be an integer.') }, { - 'in': (ADDR[0], 'XCP', 2**40), + 'in': (ADDR[0], 'XCP', 2**40, 0), 'error': (DebitError, 'Insufficient funds.') }], 'credit': [{ - 'in': (ADDR[0], 'XCP', 1), + 'in': (ADDR[0], 'XCP', 1, 0), 'out': None }, { - 'in': (ADDR[0], 'BTC', DP['quantity']), + 'in': (ADDR[0], 'BTC', DP['quantity'], 0), 'error': (CreditError, 'Cannot debit bitcoins.') }, { - 'in': (ADDR[0], 'BTC', -1 * DP['quantity']), + 'in': (ADDR[0], 'BTC', -1 * DP['quantity'], 0), 'error': (CreditError, 'Negative quantity.') }, { - 'in': (ADDR[0], 'BTC', 1.1 * DP['quantity']), + 'in': (ADDR[0], 'BTC', 1.1 * DP['quantity'], 0), 'error': (CreditError, 'Quantity must be an integer.') }], 'is_divisible': [{ @@ -4372,8 +4322,8 @@ 'out': {'XCP': 475000000} }], 'asset_supply': [{ - 'in': ('XCP',), - 'out': 604031847920, + 'in': ('DIVISIBLE',), + 'out': 100000000000, }], 'supplies': [{ 'in': (), @@ -4411,12 +4361,223 @@ 'out': True }, { 'in': ('foobar',), - 'error': (KeyError, "'foobar'") + 'error': (KeyError, "foobar") }, { 'mock_protocol_changes': {'numeric_asset_names': False}, 'in': ('numeric_asset_names',), 'out': False }], + 'holders': [{ + 'in': ('XCP',), + 'out': [{'address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', + 'address_quantity': 91875000000, + 'escrow': None}, + {'address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', + 'address_quantity': 99999990, + 'escrow': None}, + {'address': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', + 'address_quantity': 300000000, + 'escrow': None}, + {'address': 'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM', + 'address_quantity': 92999138812, + 'escrow': None}, + {'address': 'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b', + 'address_quantity': 92999130360, + 'escrow': None}, + {'address': 'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42', + 'address_quantity': 92949122099, + 'escrow': None}, + {'address': 'mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK', + 'address_quantity': 14999857, + 'escrow': None}, + {'address': '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy', + 'address_quantity': 46449548498, + 'escrow': None}, + {'address': 'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx', + 'address_quantity': 92999030129, + 'escrow': None}, + {'address': 'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH', + 'address_quantity': 0, + 'escrow': None}, + {'address': 'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj', + 'address_quantity': 92945878046, + 'escrow': None}, + {'address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', + 'address_quantity': 100000000, + 'escrow': '4f0433ba841038e2e16328445930dd7bca35309b14b0da4451c8f94c631368b8'}, + {'address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', + 'address_quantity': 100000000, + 'escrow': '21460d5c07284f9be9baf824927d0d4e4eb790e297f3162305841607b672349b'}, + {'address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', + 'address_quantity': 100000000, + 'escrow': '1899b2e6ec36ba4bc9d035e6640b0a62b08c3a147c77c89183a77d9ed9081b3a'}, + {'address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', + 'address_quantity': 0, + 'escrow': '74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498'}, + {'address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', + 'address_quantity': 100000000, + 'escrow': '74db175c4669a3d3a59e3fcddce9e97fcd7d12c35b58ef31845a1b20a1739498_1b294dd8592e76899b1c106782e4c96e63114abd8e3fa09ab6d2d52496b5bf81'}, + {'address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', + 'address_quantity': 10, + 'escrow': 'db4ea092bea6036e3d1e5f6ec863db9b900252b4f4d6d9faa6165323f433c51e'}, + {'address': '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy', + 'address_quantity': 10, + 'escrow': 'd79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048'}, + {'address': 'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM', + 'address_quantity': 9, + 'escrow': '41e821ae1c6b553d0fa5d5a807b2e7e9ffaec5d62706d9d2a59c6e65a3ed9cef'}, + {'address': 'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b', + 'address_quantity': 100, + 'escrow': None}] + }, { + 'in': ('DIVISIBLE',), + 'out': [{'address': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', + 'address_quantity': 98800000000, + 'escrow': None}, + {'address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', + 'address_quantity': 100000000, + 'escrow': None}, + {'address': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', + 'address_quantity': 1000000000, + 'escrow': None}, + {'address': '2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy', + 'address_quantity': 100000000, + 'escrow': None}] + }], + }, + 'util': { + 'api': [{ + 'in': ('create_burn', {'source': ADDR[1], 'quantity': DP['burn_quantity'], 'encoding': 'multisig'}), + 'out': '0100000001ebe3111881a8733ace02271dcf606b7450c41a48c1cb21fd73f4ba787b353ce4000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88acffffffff02800bb203000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac87bf4302000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac00000000' + }, { + 'in': ('create_send', {'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small'], 'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0322020000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace8030000000000006951210262415bf04af834423d3dd7ada4dc727a030865759f9fba5aee78c9ea71e58798210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae283bea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + }, { + 'in': ('create_send', {'source': P2SH_ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small'], 'encoding': 'multisig', 'dust_return_pubkey': False, 'regular_dust_size': DP['regular_dust_size']}), + 'out': '01000000015001af2c4c3bc2c43b6233261394910d10fb157a082d9b3038c65f2d01e4ff200000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e87ffffffff0336150000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace8030000000000006951210397b51de78b0f3a171f5ed27fff56d17dcba739c8b00035c8bbb9c380fdc4ed1321036932bcbeac2a4d8846b7feb4bf93b2b88efd02f2d8dc1fc0067bcc972257e3912111111111111111111111111111111111111111111111111111111111111111111153ae00aaf5050000000017a9144264cfd7eb65f8cbbdba98bd9815d5461fad8d7e8700000000' + }, { + 'in': ('create_issuance', {'source': ADDR[0], 'transfer_destination': None, 'asset': 'BSSET', 'quantity': 1000, 'divisible': True, 'description': '', 'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e8030000000000006951210358415bf04af834423d3dd7adb2dc727a03086e897d9fba5aee7a331919e487d6210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9c40ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + }, { + 'in': ('create_issuance', {'source': ADDR[0], 'transfer_destination': ADDR[1], 'asset': 'DIVISIBLE', 'quantity': 0, 'divisible': True, 'description': '', 'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff0322020000000000001976a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ace8030000000000006951210258415bf04af834423d3dd7adb2dc727aa153863ef89fba5aee7a331af1e4874b210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae283bea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + }, { + 'in': ('create_order', {'source': ADDR[0], 'give_asset': 'BTC', 'give_quantity': DP['small'], 'get_asset': 'XCP', 'get_quantity': DP['small'] * 2, 'expiration': DP['expiration'], 'fee_required': 0, 'fee_provided': DP['fee_provided'], 'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e8030000000000006951210348415bf04af834423d3dd7adaedc727a030865759e9fba5aee78c9ea71e5870f210354da540fb2673b75e6c3c994f80ad0c8431643bab28ced783cd94079bbe72445210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aeec18db0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + }, { + 'in': ('create_order', {'source': ADDR[0], 'give_asset': 'XCP', 'give_quantity': round(DP['small'] * 2.1), 'get_asset': 'BTC', 'get_quantity': DP['small'], 'expiration': DP['expiration'], 'fee_required': DP['fee_required'], 'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e8030000000000006951210248415bf04af834423d3dd7adaedc727a030865759f9fba5aee7c7136b1e58715210354da540fb2663b75e6c3ce9be98ad0c8431643bab28156d83cd94079bbe72460210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9c40ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + }, { + 'in': ('create_burn', {'source': MULTISIGADDR[0], 'quantity': int(DP['quantity'] / 2), 'encoding': 'multisig'}), + 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0280f0fa02000000001976a914a11b66a67b3ff69671c8f82254099faf374b800e88ac87dafa02000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' + }, { + 'in': ('create_send', {'source': ADDR[0], 'destination': MULTISIGADDR[0], 'asset': 'XCP', 'quantity': DP['quantity'], 'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee8030000000000006951210362415bf04af834423d3dd7ada4dc727a030865759f9fba5aee7fc6fbf1e5875a210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae6239ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + }, { + 'in': ('create_send', {'source': MULTISIGADDR[0], 'destination': ADDR[0], 'asset': 'XCP', 'quantity': DP['quantity'], 'encoding': 'multisig'}), + 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff0322020000000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ace8030000000000006951210334caf7ca87f0fd78a01d9a0d68221e55beef3722da8be72d254dd351c26108892102bc14528340c27d005aa9e2913fd8c032ffa94625307a450077125d580099b57d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae14bdf505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' + }, { + 'in': ('create_send', {'source': MULTISIGADDR[0], 'destination': MULTISIGADDR[1], 'asset': 'XCP', 'quantity': DP['quantity'], 'encoding': 'multisig'}), + 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff03e8030000000000004751210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b977210378ee11c3fb97054877a809ce083db292b16d971bcdc6aa4c8f92087133729d8b52aee8030000000000006951210334caf7ca87f0fd78a01d9a0d68221e55beef3722da8be72d254dd351c26108892102bc14528340c27d005aa9e2913fd8c032ffa94625307a450077125d580099b57d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae4ebbf505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' + }, { + 'in': ('create_issuance', {'source': MULTISIGADDR[0], 'transfer_destination': None, 'asset': 'BSSET', 'quantity': 1000, 'divisible': True, 'description': '', 'encoding': 'multisig'}), + 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e803000000000000695121020ecaf7ca87f0fd78a01d9a0d7e221e55beef3cde388be72d254826b32a6008382102bc14528340c27d005aa9e2913fd8c032ffa94625307a450077125d580099b57d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae88c2f505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' + }, { + 'in': ('create_issuance', {'source': ADDR[0], 'transfer_destination': MULTISIGADDR[0], 'asset': 'DIVISIBLE', 'quantity': 0, 'divisible': True, 'description': '', 'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03e8030000000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aee8030000000000006951210258415bf04af834423d3dd7adb2dc727aa153863ef89fba5aee7a331af1e4874b210254da540fb2663b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe72447210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae6239ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + }, { + 'in': ('create_issuance', {'source': ADDR[0], 'asset': f'A{2 ** 64 - 1}', 'quantity': 1000, 'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e8030000000000006951210255415bf04af834423d3dd7adb2238d85fcf79a8a619fba5aee7a331919e4870d210254da540fb2663b75268d992d550ad0c2431643bab28ced783cd94079bbe7244d210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9c40ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + }, { + 'comment': '1', + 'in': ('create_order', {'source': MULTISIGADDR[0], 'give_asset': 'BTC', 'give_quantity': DP['small'], 'get_asset': 'XCP', 'get_quantity': DP['small'] * 2, 'expiration': DP['expiration'], 'fee_required': 0, 'fee_provided': DP['fee_provided'], 'encoding': 'multisig'}), + 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e803000000000000695121021ecaf7ca87f0fd78a01d9a0d62221e55beef3722db8be72d254adc40426108d02103bc14528340c37d005aa9e764ded8c038ffa94625307a450077125d580099b53b210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053aed89ae605000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' + }, { + 'in': ('create_order', {'source': MULTISIGADDR[0], 'give_asset': 'XCP', 'give_quantity': round(DP['small'] * 2.1), 'get_asset': 'BTC', 'get_quantity': DP['small'], 'expiration': DP['expiration'], 'fee_required': DP['fee_required'], 'encoding': 'multisig'}), + 'out': '0100000001051511b66ba309e3dbff1fde22aefaff4190675235a010a5c6acb1e43da8005f000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752aeffffffff02e803000000000000695121031ecaf7ca87f0fd78a01d9a0d62221e55beef3722da8be72d254e649c8261083d2102bc14528340c27d005aa9e06bcf58c038ffa946253077fea077125d580099b5bb210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae88c2f505000000004751210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0210319f6e07b0b8d756156394b9dcf3b011fe9ac19f2700bd6b69a6a1783dbb8b97752ae00000000' + }, { + 'in': ('create_dividend', {'source': ADDR[0], 'quantity_per_unit': DP['quantity'], 'asset': 'DIVISIBLE', 'dividend_asset': 'XCP', 'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e803000000000000695121035a415bf04af834423d3dd7ad96dc727a030d90949e9fba5a4c21d05197e58735210254da540fb2673b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe7246f210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9c40ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + }, { + 'in': ('create_dividend', {'source': ADDR[0], 'quantity_per_unit': 1, 'asset': 'NODIVISIBLE', 'dividend_asset': 'XCP', 'encoding': 'multisig'}), + 'out': '0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02e803000000000000695121025a415bf04af834423d3dd7ad96dc727a030865759f9fbc9036a64c1197e587c8210254da540fb2673b75e6c3cc61190ad0c2431643bab28ced783cd94079bbe7246f210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b053ae9c40ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000' + + # CIP 9 enhanced_send tests + + }, { + 'comment': 'standard op return send', + 'mock_protocol_changes': {'enhanced_sends': False}, + 'in': ('create_send', {'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small']}), + 'out': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'03'+'2202000000000000'+'19'+'76a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac'+'0000000000000000'+'1e'+'6a1c2a504df746f83442653dd7ada4dc727a030865749e9fba5aec80c39a'+'4343ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000' + }, { + 'comment': 'standard op return send (with API parameter)', + 'mock_protocol_changes': {'enhanced_sends': True}, + 'in': ('create_send', {'use_enhanced_send': False, 'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small']}), + 'out': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'03'+'2202000000000000'+'19'+'76a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac'+'0000000000000000'+'1e'+'6a1c2a504df746f83442653dd7ada4dc727a030865749e9fba5aec80c39a'+'4343ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000' + }, { + 'comment': 'CIP 9 enhanced_send (op_return)', + 'mock_protocol_changes': {'enhanced_sends': True}, + 'in': ('create_send', {'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small']}), + 'out': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'02'+'0000000000000000'+'33'+'6a312a504df746f83442653dd7afa4dc727a030865749e9fba5aec80c39a9e68edbc79e78ed45723c1072c38aededa458f95fa'+'aa46ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000' + }, { + 'comment': 'CIP 9 enhanced_send with memo', + 'mock_protocol_changes': {'enhanced_sends': True}, + 'in': ('create_send', {'memo': 'hello', 'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small']}), + 'out': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'02'+'0000000000000000'+'38'+'6a36'+'2a504df746f83442653dd7afa4dc727a030865749e9fba5aec80c39a9e68edbc79e78ed45723c1072c38aededa458f95fa2bdfdee082'+'2d46ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000' + }, { + 'comment': 'CIP 9 enhanced_send with memo as hex', + 'mock_protocol_changes': {'enhanced_sends': True}, + 'in': ('create_send', {'memo': '0102030405', 'memo_is_hex': True, 'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small']}), + 'out': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'02'+'0000000000000000'+'38'+'6a36'+'2a504df746f83442653dd7afa4dc727a030865749e9fba5aec80c39a9e68edbc79e78ed45723c1072c38aededa458f95fa42b8b188e8'+'2d46ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000' + }, { + 'comment': 'CIP 9 enhanced_send before enabled', + 'mock_protocol_changes': {'enhanced_sends': False}, + 'in': ('create_send', {'memo': '0102030405', 'memo_is_hex': True, 'source': ADDR[0], 'destination': ADDR[1], 'asset': 'XCP', 'quantity': DP['small']}), + 'error': (RPCError, 'Error composing send transaction via API: enhanced sends are not enabled (-32001)') + }, { + 'comment': 'CIP 9 enhanced send to a REQUIRE_MEMO address without memo', + 'mock_protocol_changes': {'enhanced_sends': True, 'options_require_memo': True}, + 'in': ('create_send', {'source': ADDR[0], 'destination': ADDR[6], 'asset': 'XCP', 'quantity': DP['small']}), + 'error': (RPCError, "Error composing send transaction via API: ['destination requires memo'] (-32001)") + }, { + 'comment': 'CIP 9 enhanced send to a REQUIRE_MEMO address with memo', + 'mock_protocol_changes': {'enhanced_sends': True, 'options_require_memo': True}, + 'in': ('create_send', {'memo': '0102030405', 'memo_is_hex': True, 'source': ADDR[0], 'destination': ADDR[6], 'asset': 'XCP', 'quantity': DP['small']}), + 'out': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'02'+'0000000000000000'+'38'+'6a36'+'2a504df746f83442653dd7afa4dc727a030865749e9fba5aec80c39a9e56174ca4a68af644972baced7a9ef02e467cb63542b8b188e8'+'2d46ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000' + + # get_tx_info API method + + }, { + 'comment': 'get_tx_info for a legacy send', + 'in': ('get_tx_info', {'tx_hex': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'03'+'2202000000000000'+'19'+'76a9148d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec88ac'+'0000000000000000'+'1e'+'6a1c2a504df746f83442653dd7ada4dc727a030865749e9fba5aec80c39a'+'4343ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000'}), + 'out': ['mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 546, 6575, '0000000000000000000000010000000002faf080'] + }, { + 'comment': 'get_tx_info for an enhanced send', + 'mock_protocol_changes': {'enhanced_sends': True,}, + 'in': ('get_tx_info', {'tx_hex': '01000000'+'01'+'c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae'+'00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'ffffffff'+'02'+'0000000000000000'+'33'+'6a312a504df746f83442653dd7afa4dc727a030865749e9fba5aec80c39a9e68edbc79e78ed45723c1072c38aededa458f95fa'+'aa46ea0b00000000'+'19'+'76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac'+'00000000'}), + 'out': ['mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', '', 0, 6250, '0000000200000000000000010000000002faf0806f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec'] + + # unpack API method + + }, { + 'comment': 'Unpack a data hex for a legacy send', + 'in': ('unpack', {'data_hex': '0000000000000000000000010000000002faf080'}), + 'out': [0, {'asset': 'XCP', 'quantity': 50000000}] + }, { + 'comment': 'Unpack a data hex for an enahcned send', + 'mock_protocol_changes': {'enhanced_sends': True, 'options_require_memo': True}, + 'in': ('unpack', {'data_hex': '0000000200000000000000010000000002faf0806f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec'}), + 'out': [2, {'address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'asset': 'XCP', 'memo': None, 'quantity': 50000000}] + }], + + 'dhash_string': [{ + 'in': ('foobar',), + 'out': '3f2c7ccae98af81e44c0ec419659f50d8b7d48c681e5d57fc747d0461e42dda1' + }], + 'hexlify': [{ + 'in': (b'\x00\x00\x00\x14\x00\x00\x00\x00\x00\x0b\xfc\xe3',), + 'out': '0000001400000000000bfce3' + }], 'date_passed': [{ 'comment': 'date in the past, mock function overrides this one and always returns `False` in the test suite', 'in': ('1020720007',), @@ -4428,7 +4589,7 @@ }], 'parse_subasset_from_asset_name': [{ 'in': ('BADASSETx.child1',), - 'error': (exceptions.AssetNameError, "('parent asset name contains invalid character:', 'x')") + 'error': (exceptions.AssetNameError, "parent asset name contains invalid character:") }, { 'in': ('TOOLONGASSETNAME.child1',), @@ -4460,7 +4621,7 @@ }, { 'in': ('PARENT.child1&',), - 'error': (exceptions.AssetNameError, "('subasset name contains invalid character:', '&')") + 'error': (exceptions.AssetNameError, "subasset name contains invalid character:") }, { 'in': ('PARENT.child1..foo',), @@ -4468,11 +4629,11 @@ }], 'compact_subasset_longname': [{ 'in': ('a.very.long.name',), - 'out': bytes.fromhex('132de2e856f9a630c2e2bc09') + 'out': binascii.unhexlify('132de2e856f9a630c2e2bc09') }, { 'in': ('aaaa',), - 'out': bytes.fromhex('04de95') + 'out': binascii.unhexlify('04de95') }, { 'in': ('a',), @@ -4483,11 +4644,11 @@ 'out': b'\x02' }], 'expand_subasset_longname': [{ - 'in': (bytes.fromhex('132de2e856f9a630c2e2bc09'),), + 'in': (binascii.unhexlify('132de2e856f9a630c2e2bc09'),), 'out': 'a.very.long.name' }, { - 'in': (bytes.fromhex('04de95'),), + 'in': (binascii.unhexlify('04de95'),), 'out': 'aaaa' }, { @@ -4499,7 +4660,7 @@ 'out': 'b' }, { - 'in': (bytes.fromhex('8e90a57dba99d3a77b0a2470b1816edb'),), + 'in': (binascii.unhexlify('8e90a57dba99d3a77b0a2470b1816edb'),), 'out': 'PARENT.a-zA-Z0-9.-_@!' }] }, @@ -4517,116 +4678,116 @@ }, 'message_type': { 'unpack': [{ - 'in': (bytes.fromhex('01deadbeef'), 310502), - 'out': (1, bytes.fromhex('deadbeef')) + 'in': (binascii.unhexlify('01deadbeef'), 310502), + 'out': (1, binascii.unhexlify('deadbeef')) }, { - 'in': (bytes.fromhex('02deadbeef'), 310502), - 'out': (2, bytes.fromhex('deadbeef')) + 'in': (binascii.unhexlify('02deadbeef'), 310502), + 'out': (2, binascii.unhexlify('deadbeef')) }, { - 'in': (bytes.fromhex('00000001deadbeef'), 310502), - 'out': (1, bytes.fromhex('deadbeef')) + 'in': (binascii.unhexlify('00000001deadbeef'), 310502), + 'out': (1, binascii.unhexlify('deadbeef')) }, { - 'in': (bytes.fromhex('00000000deadbeef'), 310502), - 'out': (0, bytes.fromhex('deadbeef')) + 'in': (binascii.unhexlify('00000000deadbeef'), 310502), + 'out': (0, binascii.unhexlify('deadbeef')) }, { - 'in': (bytes.fromhex('00'), 310502), + 'in': (binascii.unhexlify('00'), 310502), 'out': (None, None) }], 'pack': [{ 'in': (0, 300000), - 'out': bytes.fromhex('00000000') + 'out': binascii.unhexlify('00000000') }, { 'in': (1, 300000), - 'out': bytes.fromhex('00000001') + 'out': binascii.unhexlify('00000001') }, { 'in': (0, 310502), - 'out': bytes.fromhex('00000000') + 'out': binascii.unhexlify('00000000') }, { 'in': (1, 310502), - 'out': bytes.fromhex('01') + 'out': binascii.unhexlify('01') }, { 'in': (2, 310502), - 'out': bytes.fromhex('02') + 'out': binascii.unhexlify('02') }] }, 'address': { 'pack': [{ 'config_context': {'ADDRESSVERSION': config.ADDRESSVERSION_MAINNET}, 'in': ('1AAAA1111xxxxxxxxxxxxxxxxxxy43CZ9j',), - 'out': bytes.fromhex('006474849fc9ac0f5bd6b49fe144d14db7d32e2445') + 'out': binascii.unhexlify('006474849fc9ac0f5bd6b49fe144d14db7d32e2445') }, { 'config_context': {'ADDRESSVERSION': config.ADDRESSVERSION_MAINNET}, 'in': ('1AAAA2222xxxxxxxxxxxxxxxxxxy4pQ3tU',), - 'out': bytes.fromhex('00647484b055e2101927e50aba74957ba134d501d7') + 'out': binascii.unhexlify('00647484b055e2101927e50aba74957ba134d501d7') }, { 'config_context': {'P2SH_ADDRESSVERSION': config.P2SH_ADDRESSVERSION_MAINNET}, 'in': ('3AAAA1111xxxxxxxxxxxxxxxxxxy3SsDsZ',), - 'out': bytes.fromhex('055ce31be63403fa7b19f2614272547c15c8df86b9') + 'out': binascii.unhexlify('055ce31be63403fa7b19f2614272547c15c8df86b9') }, { 'config_context': {'P2SH_ADDRESSVERSION': config.P2SH_ADDRESSVERSION_TESTNET}, 'in': ('2MtAV7xpAzU69E8GxRF2Vd2xt79kDnif6F5',), - 'out': bytes.fromhex('C40A12AD889AECC8F6213BFD6BD47911CAB1C30E5F') + 'out': binascii.unhexlify('C40A12AD889AECC8F6213BFD6BD47911CAB1C30E5F') }, { 'in': ('BADBASE58III',), - 'error': (script.Base58Error, "Not a valid Base58 character: ‘I’") + 'error': (Exception, "The address BADBASE58III is not a valid bitcoin address (testnet)") }], 'unpack': [{ - 'in': (bytes.fromhex('006474849fc9ac0f5bd6b49fe144d14db7d32e2445'),), + 'in': (binascii.unhexlify('006474849fc9ac0f5bd6b49fe144d14db7d32e2445'),), 'out': '1AAAA1111xxxxxxxxxxxxxxxxxxy43CZ9j' }, { - 'in': (bytes.fromhex('00647484b055e2101927e50aba74957ba134d501d7'),), + 'in': (binascii.unhexlify('00647484b055e2101927e50aba74957ba134d501d7'),), 'out': '1AAAA2222xxxxxxxxxxxxxxxxxxy4pQ3tU' }, { - 'in': (bytes.fromhex('055ce31be63403fa7b19f2614272547c15c8df86b9'),), + 'in': (binascii.unhexlify('055ce31be63403fa7b19f2614272547c15c8df86b9'),), 'out': '3AAAA1111xxxxxxxxxxxxxxxxxxy3SsDsZ' }, { - 'in': (bytes.fromhex('C40A12AD889AECC8F6213BFD6BD47911CAB1C30E5F'),), + 'in': (binascii.unhexlify('C40A12AD889AECC8F6213BFD6BD47911CAB1C30E5F'),), 'out': '2MtAV7xpAzU69E8GxRF2Vd2xt79kDnif6F5' }] }, 'versions.enhanced_send': { 'unpack': [{ - 'in': (bytes.fromhex('000000000004fadf' + '000000174876e800' + '006474849fc9ac0f5bd6b49fe144d14db7d32e2445'), DP['default_block_index']), + 'in': (binascii.unhexlify('000000000004fadf' + '000000174876e800' + '006474849fc9ac0f5bd6b49fe144d14db7d32e2445'), DP['default_block_index']), 'out': ({ - 'asset': 'SOUP', + 'asset': 'SOUP', 'quantity': 100000000000, 'address': '1AAAA1111xxxxxxxxxxxxxxxxxxy43CZ9j', 'memo': None, }) }, { - 'in': (bytes.fromhex('0000000000000001' + '000000000000007b' + '00647484b055e2101927e50aba74957ba134d501d7' + '0deadbeef123'), DP['default_block_index']), + 'in': (binascii.unhexlify('0000000000000001' + '000000000000007b' + '00647484b055e2101927e50aba74957ba134d501d7' + '0deadbeef123'), DP['default_block_index']), 'out': ({ - 'asset': 'XCP', + 'asset': 'XCP', 'quantity': 123, 'address': '1AAAA2222xxxxxxxxxxxxxxxxxxy4pQ3tU', - 'memo': bytes.fromhex('0deadbeef123'), + 'memo': binascii.unhexlify('0deadbeef123'), }) }, { - 'in': (bytes.fromhex('0000000000000001' + '000000000000007b' + '0001'), DP['default_block_index']), + 'in': (binascii.unhexlify('0000000000000001' + '000000000000007b' + '0001'), DP['default_block_index']), 'error': (exceptions.UnpackError, 'invalid message length') }, { - 'in': (bytes.fromhex('0000000000000001' + '000000000000007b' + '006474849fc9ac0f5bd6b49fe144d14db7d32e2445' + '9999999999999999999999999999999999999999999999999999999999999999999999'), DP['default_block_index']), + 'in': (binascii.unhexlify('0000000000000001' + '000000000000007b' + '006474849fc9ac0f5bd6b49fe144d14db7d32e2445' + '9999999999999999999999999999999999999999999999999999999999999999999999'), DP['default_block_index']), 'error': (exceptions.UnpackError, 'memo too long') }, { - 'in': (bytes.fromhex('0000000000000000' + '000000000000007b' + '006474849fc9ac0f5bd6b49fe144d14db7d32e2445'), DP['default_block_index']), + 'in': (binascii.unhexlify('0000000000000000' + '000000000000007b' + '006474849fc9ac0f5bd6b49fe144d14db7d32e2445'), DP['default_block_index']), 'error': (exceptions.UnpackError, 'asset id invalid') }, { - 'in': (bytes.fromhex('0000000000000003' + '000000000000007b' + '006474849fc9ac0f5bd6b49fe144d14db7d32e2445'), DP['default_block_index']), + 'in': (binascii.unhexlify('0000000000000003' + '000000000000007b' + '006474849fc9ac0f5bd6b49fe144d14db7d32e2445'), DP['default_block_index']), 'error': (exceptions.UnpackError, 'asset id invalid') }, { 'in': (b'\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x86\xa0\x80u\x1ev\xe8\x19\x91\x96\xd4T\x94\x1cE\xd1\xb3\xa3#\xf1C;\xd6segwit', DP['default_block_index']), @@ -4650,7 +4811,7 @@ 'out': ([]) }, { 'in': (ADDR[0], ADDR[1], 'BTC', DP['quantity'], None, 1), - 'out': (['cannot send {}'.format(config.BTC)]) + 'out': ([f'cannot send {config.BTC}']) }, { 'in': (ADDR[0], ADDR[1], 'XCP', DP['quantity'] / 3, None, 1), 'out': (['quantity must be in satoshis']) @@ -4674,16 +4835,16 @@ 'in': ('1AAAA1111xxxxxxxxxxxxxxxxxxy43CZ9j', '1AAAA2222xxxxxxxxxxxxxxxxxxy4pQ3tU', 'SOUP', 100000000, None, DP['default_block_index']), 'out': ([]) }, { - 'in': ('1AAAA1111xxxxxxxxxxxxxxxxxxy43CZ9j', '1AAAA2222xxxxxxxxxxxxxxxxxxy4pQ3tU', 'SOUP', 100000000, bytes.fromhex('01ff'), DP['default_block_index']), + 'in': ('1AAAA1111xxxxxxxxxxxxxxxxxxy43CZ9j', '1AAAA2222xxxxxxxxxxxxxxxxxxy4pQ3tU', 'SOUP', 100000000, binascii.unhexlify('01ff'), DP['default_block_index']), 'out': ([]) }, { - 'in': ('1AAAA1111xxxxxxxxxxxxxxxxxxy43CZ9j', '1AAAA2222xxxxxxxxxxxxxxxxxxy4pQ3tU', 'SOUP', 0, bytes.fromhex('01ff'), DP['default_block_index']), + 'in': ('1AAAA1111xxxxxxxxxxxxxxxxxxy43CZ9j', '1AAAA2222xxxxxxxxxxxxxxxxxxy4pQ3tU', 'SOUP', 0, binascii.unhexlify('01ff'), DP['default_block_index']), 'out': (['zero quantity']) }, { - 'in': ('1AAAA1111xxxxxxxxxxxxxxxxxxy43CZ9j', '', 'SOUP', 100000000, bytes.fromhex('01ff'), DP['default_block_index']), + 'in': ('1AAAA1111xxxxxxxxxxxxxxxxxxy43CZ9j', '', 'SOUP', 100000000, binascii.unhexlify('01ff'), DP['default_block_index']), 'out': (['destination is required']) }, { - 'in': ('1AAAA1111xxxxxxxxxxxxxxxxxxy43CZ9j', '1AAAA2222xxxxxxxxxxxxxxxxxxy4pQ3tU', 'SOUP', 100000000, bytes.fromhex('9999999999999999999999999999999999999999999999999999999999999999999999'), DP['default_block_index']), + 'in': ('1AAAA1111xxxxxxxxxxxxxxxxxxy43CZ9j', '1AAAA2222xxxxxxxxxxxxxxxxxxy4pQ3tU', 'SOUP', 100000000, binascii.unhexlify('9999999999999999999999999999999999999999999999999999999999999999999999'), DP['default_block_index']), 'out': (['memo is too long']) }], 'compose': [ @@ -4713,35 +4874,35 @@ 'in': (ADDR[0], ADDR[1], 'PARENT.already.issued', 100000000, None, False), 'out': ('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', [], - bytes.fromhex('02' + '01530821671b1065' + '0000000005f5e100' + '6f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec')) + binascii.unhexlify('02' + '01530821671b1065' + '0000000005f5e100' + '6f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec')) }, # ----- tests specific to enhanced send ----- { 'mock_protocol_changes': {'short_tx_type_id': True}, 'in': (ADDR[1], ADDR[0], 'XCP', DP['small'], None, None), 'out': (ADDR[1], [], - bytes.fromhex('02' + '0000000000000001' + '0000000002faf080' + '6f4838d8b3588c4c7ba7c1d06f866e9b3739c63037')) + binascii.unhexlify('02' + '0000000000000001' + '0000000002faf080' + '6f4838d8b3588c4c7ba7c1d06f866e9b3739c63037')) }, { # memo as hex 'mock_protocol_changes': {'short_tx_type_id': True}, 'in': (ADDR[1], ADDR[0], 'XCP', DP['small'], '12345abcde', True), 'out': (ADDR[1], [], - bytes.fromhex('02' + '0000000000000001' + '0000000002faf080' + '6f4838d8b3588c4c7ba7c1d06f866e9b3739c63037' + '12345abcde')) + binascii.unhexlify('02' + '0000000000000001' + '0000000002faf080' + '6f4838d8b3588c4c7ba7c1d06f866e9b3739c63037' + '12345abcde')) }, { # pack a string into bytes 'mock_protocol_changes': {'short_tx_type_id': True}, 'in': (ADDR[1], ADDR[0], 'XCP', DP['small'], 'hello', False), 'out': (ADDR[1], [], - bytes.fromhex('02' + '0000000000000001' + '0000000002faf080' + '6f4838d8b3588c4c7ba7c1d06f866e9b3739c63037' + '68656c6c6f')) + binascii.unhexlify('02' + '0000000000000001' + '0000000002faf080' + '6f4838d8b3588c4c7ba7c1d06f866e9b3739c63037' + '68656c6c6f')) }, { # memo too long 'mock_protocol_changes': {'short_tx_type_id': True}, 'in': (ADDR[1], ADDR[0], 'XCP', DP['small'], '12345678901234567890123456789012345', False), - 'error': (exceptions.ComposeError, "['memo is too long']") + 'error': (exceptions.ComposeError, ['memo is too long']) }, { 'comment': 'enhanced_send to a REQUIRE_MEMO address, without memo', 'in': (ADDR[0], ADDR[6], 'XCP', DP['small'], None, False), - 'error': (exceptions.ComposeError, "['destination requires memo']") + 'error': (exceptions.ComposeError, ['destination requires memo']) }, { 'comment': 'enhanced_send to a REQUIRE_MEMO address, with memo text', 'in': (ADDR[0], ADDR[6], 'XCP', DP['small'], '12345', False), @@ -4759,7 +4920,7 @@ # ----- tests copied from regular send ----- { 'mock_protocol_changes': {'short_tx_type_id': True}, - 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1, 'block_index': DP['default_block_index'], 'fee': 10000, 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'data': bytes.fromhex('00000002' + '0000000000000001' + '0000000005f5e100' + SHORT_ADDR_BYTES[1]), 'tx_index': 502, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'},), + 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1, 'block_index': DP['default_block_index'], 'fee': 10000, 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'data': binascii.unhexlify('00000002' + '0000000000000001' + '0000000005f5e100' + SHORT_ADDR_BYTES[1]), 'tx_index': 502, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'},), 'records': [ {'table': 'sends', 'values': { 'asset': 'XCP', @@ -4791,7 +4952,7 @@ ] }, { 'comment': 'zero quantity send', - 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'block_index': DP['default_block_index'], 'destination': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'data': bytes.fromhex('00000002' + '0000000000000001' + '0000000000000000' + SHORT_ADDR_BYTES[0]), 'block_time': 155409000, 'fee': 10000, 'source': 'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH', 'tx_index': 502, 'supported': 1},), + 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'block_index': DP['default_block_index'], 'destination': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'data': binascii.unhexlify('00000002' + '0000000000000001' + '0000000000000000' + SHORT_ADDR_BYTES[0]), 'block_time': 155409000, 'fee': 10000, 'source': 'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH', 'tx_index': 502, 'supported': 1},), 'records': [ {'table': 'sends', 'values': { 'asset': 'XCP', @@ -4805,7 +4966,7 @@ }} ] }, { - 'in': ({'block_index': DP['default_block_index'], 'btc_amount': 7800, 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'block_time': 155409000, 'fee': 10000, 'tx_index': 502, 'data': bytes.fromhex('00000002' + '0006cad8dc7f0b66' + '00000000000001f4' + SHORT_ADDR_BYTES[1]), 'block_hash': DP['default_block_hash'], 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1},), + 'in': ({'block_index': DP['default_block_index'], 'btc_amount': 7800, 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'block_time': 155409000, 'fee': 10000, 'tx_index': 502, 'data': binascii.unhexlify('00000002' + '0006cad8dc7f0b66' + '00000000000001f4' + SHORT_ADDR_BYTES[1]), 'block_hash': DP['default_block_hash'], 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1},), 'records': [ {'table': 'sends', 'values': { 'asset': 'NODIVISIBLE', @@ -4835,7 +4996,7 @@ }} ] }, { - 'in': ({'data': bytes.fromhex('00000002' + '0000000000000001' + '0000000005f5e100' + SHORT_ADDR_BYTES[0]), 'source': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'supported': 1, 'block_time': 155409000, 'fee': 10000, 'tx_index': 502, 'btc_amount': 7800, 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'destination': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'},), + 'in': ({'data': binascii.unhexlify('00000002' + '0000000000000001' + '0000000005f5e100' + SHORT_ADDR_BYTES[0]), 'source': '1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2', 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'supported': 1, 'block_time': 155409000, 'fee': 10000, 'tx_index': 502, 'btc_amount': 7800, 'block_hash': DP['default_block_hash'], 'block_index': DP['default_block_index'], 'destination': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'},), 'records': [ {'table': 'sends', 'values': { 'asset': 'XCP', @@ -4865,7 +5026,7 @@ }} ] }, { - 'in': ({'block_index': DP['default_block_index'], 'block_time': 155409000, 'fee': 10000, 'tx_index': 502, 'tx_hash': '8fc698cf1fcd51e3d685511185c67c0a73e7b72954c6abbd29fbbbe560e043a0', 'btc_amount': 7800, 'data': bytes.fromhex('00000002' + '0000000000033a3e' + '7fffffffffffffff' + SHORT_ADDR_BYTES[1]), 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'supported': 1, 'block_hash': DP['default_block_hash']},), + 'in': ({'block_index': DP['default_block_index'], 'block_time': 155409000, 'fee': 10000, 'tx_index': 502, 'tx_hash': '8fc698cf1fcd51e3d685511185c67c0a73e7b72954c6abbd29fbbbe560e043a0', 'btc_amount': 7800, 'data': binascii.unhexlify('00000002' + '0000000000033a3e' + '7fffffffffffffff' + SHORT_ADDR_BYTES[1]), 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', 'supported': 1, 'block_hash': DP['default_block_hash']},), 'records': [ {'table': 'sends', 'values': { 'asset': 'MAXI', @@ -4898,7 +5059,7 @@ # ----- tests specific to enhanced send ----- { 'comment': 'instead of auto-correcting the quantity to the amount the address holds return invalid: insufficient funds', - 'in':({'tx_index': 502, 'data': bytes.fromhex('00000002' + '0000000000000001' + '0000000058b11400' + SHORT_ADDR_BYTES[3]), 'source': 'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH', 'block_time': 310501000, 'block_hash': '46ac6d09237c7961199068fdd13f1508d755483e07c57a4c8f7ff18eb33a05c93ca6a86fa2e2af82fb77a5c337146bb37e279797a3d11970aec4693c46ea5a58', 'tx_hash': '736ecc18f9f41b3ccf67dded1252969e4929404d6ad657b2039b937a7785cf3e', 'supported': 1, 'destination': 'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj', 'btc_amount': 5430, 'block_index': DP['default_block_index'], 'fee': 10000},), + 'in':({'tx_index': 502, 'data': binascii.unhexlify('00000002' + '0000000000000001' + '0000000058b11400' + SHORT_ADDR_BYTES[3]), 'source': 'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH', 'block_time': 310501000, 'block_hash': '46ac6d09237c7961199068fdd13f1508d755483e07c57a4c8f7ff18eb33a05c93ca6a86fa2e2af82fb77a5c337146bb37e279797a3d11970aec4693c46ea5a58', 'tx_hash': '736ecc18f9f41b3ccf67dded1252969e4929404d6ad657b2039b937a7785cf3e', 'supported': 1, 'destination': 'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj', 'btc_amount': 5430, 'block_index': DP['default_block_index'], 'fee': 10000},), 'records': [ {'table': 'sends', 'values': { 'asset': 'XCP', @@ -4913,7 +5074,7 @@ ] }, { 'mock_protocol_changes': {'short_tx_type_id': True}, - 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1, 'block_index': DP['default_block_index'], 'fee': 10000, 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'data': bytes.fromhex('00000002' + '0000000000000001' + '0000000005f5e100' + SHORT_ADDR_BYTES[1] + 'beefbeef'), 'tx_index': 502, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'},), + 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1, 'block_index': DP['default_block_index'], 'fee': 10000, 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'data': binascii.unhexlify('00000002' + '0000000000000001' + '0000000005f5e100' + SHORT_ADDR_BYTES[1] + 'beefbeef'), 'tx_index': 502, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'},), 'records': [ {'table': 'sends', 'values': { 'asset': 'XCP', @@ -4924,7 +5085,7 @@ 'status': 'valid', 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'tx_index': 502, - 'memo': bytes.fromhex('beefbeef'), + 'memo': binascii.unhexlify('beefbeef'), }}, {'table': 'credits', 'values': { 'address': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns', @@ -4946,7 +5107,7 @@ }, { # invalid memo (too long) 'mock_protocol_changes': {'short_tx_type_id': True}, - 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1, 'block_index': DP['default_block_index'], 'fee': 10000, 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'data': bytes.fromhex('00000002' + '0000000000000001' + '0000000005f5e100' + SHORT_ADDR_BYTES[1] + '9999999999999999999999999999999999999999999999999999999999999999999999'), 'tx_index': 502, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'},), + 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1, 'block_index': DP['default_block_index'], 'fee': 10000, 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'data': binascii.unhexlify('00000002' + '0000000000000001' + '0000000005f5e100' + SHORT_ADDR_BYTES[1] + '9999999999999999999999999999999999999999999999999999999999999999999999'), 'tx_index': 502, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'},), 'records': [ {'table': 'sends', 'values': { 'asset': None, @@ -4963,7 +5124,7 @@ }, { # invalid: quantity (too large) 'mock_protocol_changes': {'short_tx_type_id': True}, - 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1, 'block_index': DP['default_block_index'], 'fee': 10000, 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'data': bytes.fromhex('00000002' + '0000000000000001' + 'ffffffffffffffff' + SHORT_ADDR_BYTES[1] + 'beefbeef'), 'tx_index': 502, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'},), + 'in': ({'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'source': 'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc', 'supported': 1, 'block_index': DP['default_block_index'], 'fee': 10000, 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, 'data': binascii.unhexlify('00000002' + '0000000000000001' + 'ffffffffffffffff' + SHORT_ADDR_BYTES[1] + 'beefbeef'), 'tx_index': 502, 'destination': 'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'},), 'records': [ {'table': 'sends', 'values': { 'asset': None, @@ -5029,47 +5190,47 @@ 'versions.mpma': { 'unpack': [{ 'comment': 'Should throw on empty data', - 'in': (bytes.fromhex(''), DP['default_block_index']), + 'in': (binascii.unhexlify(''), DP['default_block_index']), 'error': (exceptions.UnpackError, 'could not unpack') },{ 'comment': '0 addresses in a send is an error', - 'in': (bytes.fromhex('0000'), DP['default_block_index']), + 'in': (binascii.unhexlify('0000'), DP['default_block_index']), 'error': (exceptions.DecodeError, 'address list can\'t be empty') },{ 'comment': 'Should throw on incomplete data', - 'in': (bytes.fromhex('0001ffff'), DP['default_block_index']), + 'in': (binascii.unhexlify('0001ffff'), DP['default_block_index']), 'error': (exceptions.UnpackError, 'truncated data') },{ - 'in': (bytes.fromhex('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e10040000000017d78400'), DP['default_block_index']), + 'in': (binascii.unhexlify('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e10040000000017d78400'), DP['default_block_index']), 'out': ({'XCP': [(ADDR[2], DP['quantity']), (ADDR[1], DP['quantity'])]}) },{ - 'in': (bytes.fromhex('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e100c4deadbeef8000000002faf0800'), DP['default_block_index']), - 'out': ({'XCP': [(ADDR[2], DP['quantity'], bytes.fromhex('DEADBEEF'), True), (ADDR[1], DP['quantity'])]}) + 'in': (binascii.unhexlify('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e100c4deadbeef8000000002faf0800'), DP['default_block_index']), + 'out': ({'XCP': [(ADDR[2], DP['quantity'], binascii.unhexlify('DEADBEEF'), True), (ADDR[1], DP['quantity'])]}) },{ - 'in': (bytes.fromhex('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e1008844454144424545468000000002faf0800'), DP['default_block_index']), + 'in': (binascii.unhexlify('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e1008844454144424545468000000002faf0800'), DP['default_block_index']), 'out': ({'XCP': [(ADDR[2], DP['quantity'], 'DEADBEEF', False), (ADDR[1], DP['quantity'])]}) },{ - 'in': (bytes.fromhex('00036f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f6c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a1526f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000000000000000640000000017d784000000000002faf08020000000005f5e1000'), DP['default_block_index']), + 'in': (binascii.unhexlify('00036f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f6c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a1526f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000000000000000640000000017d784000000000002faf08020000000005f5e1000'), DP['default_block_index']), 'out': ({'XCP': [(ADDR[3], DP['quantity']), (ADDR[2], DP['quantity']), (ADDR[1], DP['quantity'])]}) },{ - 'in': (bytes.fromhex('00036f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f6c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a1526f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d9800000000017d784010006cad8dc7f0b66200000000000000014000000000000000440000000017d784000'), DP['default_block_index']), + 'in': (binascii.unhexlify('00036f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f6c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a1526f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d9800000000017d784010006cad8dc7f0b66200000000000000014000000000000000440000000017d784000'), DP['default_block_index']), 'out': ({'XCP': [(ADDR[3], DP['quantity'])], 'NODIVISIBLE': [(ADDR[1], 1)], 'DIVISIBLE': [(ADDR[2], DP['quantity'])]}) },{ - 'in': (bytes.fromhex('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ecc4deadbeef8000000000000000c000000000bebc2008000000002faf0800'), DP['default_block_index']), - 'out': ({'XCP': [(ADDR[2], DP['quantity'], bytes.fromhex('DEADBEEF'), True), (ADDR[1], DP['quantity'], bytes.fromhex('DEADBEEF'), True)]}) + 'in': (binascii.unhexlify('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ecc4deadbeef8000000000000000c000000000bebc2008000000002faf0800'), DP['default_block_index']), + 'out': ({'XCP': [(ADDR[2], DP['quantity'], binascii.unhexlify('DEADBEEF'), True), (ADDR[1], DP['quantity'], binascii.unhexlify('DEADBEEF'), True)]}) },{ - 'in': (bytes.fromhex('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ecc4deadbeef8000000000000000c000000000bebc201897ddfbd5b0000000005f5e1000'), DP['default_block_index']), - 'out': ({'XCP': [(ADDR[2], DP['quantity'], bytes.fromhex('BEEFDEAD'), True), (ADDR[1], DP['quantity'], bytes.fromhex('DEADBEEF'), True)]}) + 'in': (binascii.unhexlify('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ecc4deadbeef8000000000000000c000000000bebc201897ddfbd5b0000000005f5e1000'), DP['default_block_index']), + 'out': ({'XCP': [(ADDR[2], DP['quantity'], binascii.unhexlify('BEEFDEAD'), True), (ADDR[1], DP['quantity'], binascii.unhexlify('DEADBEEF'), True)]}) },{ - 'in': (bytes.fromhex('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d990000000005f5e100400000000000000040000000005f5e100000300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d990000000005f5e100400000000000000040000000005f5e10000'), DP['default_block_index']), + 'in': (binascii.unhexlify('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d990000000005f5e100400000000000000040000000005f5e100000300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d990000000005f5e100400000000000000040000000005f5e10000'), DP['default_block_index']), 'out': ({'DIVISIBLE': [(ADDR[1], DP['quantity'])], 'XCP': [(ADDR[2], DP['quantity'])]}) },{ # Test derived from block 618232 on BTC mainnet - 'in': (bytes.fromhex('0004002e9943921a473dee1e04a579c1762ff6e9ac34e4006c7beeb1af092be778a2c0b8df639f2f8e9c987600a9055398b92818794b38b15794096f752167e25f00f3a6b6e4a093e5a5b9da76977a5270fd4d62553e40000091f59f36daf0000000271d94900180000004e3b29200200000009c76524002000000138eca4800806203d0c908232420000000000000000b000000000000000140024a67f0f279952000000000000000058000000000000000a00000000000000014000000908a3200cb000000000000000058000000000000000a000000000000000120000000000000002075410426156245525daa71f2e84a40797bcf28099a2c508662a8a33324a703597b9aa2661a79a82ffb4caaa9b15f4094622fbfa85f8b9dc7381f991f5a265421391cc3ad0075740087'), DP['default_block_index']), + 'in': (binascii.unhexlify('0004002e9943921a473dee1e04a579c1762ff6e9ac34e4006c7beeb1af092be778a2c0b8df639f2f8e9c987600a9055398b92818794b38b15794096f752167e25f00f3a6b6e4a093e5a5b9da76977a5270fd4d62553e40000091f59f36daf0000000271d94900180000004e3b29200200000009c76524002000000138eca4800806203d0c908232420000000000000000b000000000000000140024a67f0f279952000000000000000058000000000000000a00000000000000014000000908a3200cb000000000000000058000000000000000a000000000000000120000000000000002075410426156245525daa71f2e84a40797bcf28099a2c508662a8a33324a703597b9aa2661a79a82ffb4caaa9b15f4094622fbfa85f8b9dc7381f991f5a265421391cc3ad0075740087'), DP['default_block_index']), 'out': ({'MAFIACASH': [('15FPgnpZuNyZLVLsyB6UdFicsVvWFJXNve', 42000000000), ('1PDJv8u8zw4Fgqr4uCb2yim9fgTs5zfM4s', 42000000000), ('1GQhaWqejcGJ4GhQar7SjcCfadxvf5DNBD', 42000000000), ('1AtcSh7uxenQ6AR5xqr6agAegWRUF5N4uh', 42000000000)], 'PAWNTHELAMBO': [('15FPgnpZuNyZLVLsyB6UdFicsVvWFJXNve', 1), ('1PDJv8u8zw4Fgqr4uCb2yim9fgTs5zfM4s', 1)], 'SHADILOUNGE': [('15FPgnpZuNyZLVLsyB6UdFicsVvWFJXNve', 1), ('1PDJv8u8zw4Fgqr4uCb2yim9fgTs5zfM4s', 1), ('1GQhaWqejcGJ4GhQar7SjcCfadxvf5DNBD', 1)], 'TIKIPEPE': [('15FPgnpZuNyZLVLsyB6UdFicsVvWFJXNve', 1), ('1PDJv8u8zw4Fgqr4uCb2yim9fgTs5zfM4s', 1), ('1GQhaWqejcGJ4GhQar7SjcCfadxvf5DNBD', 1), ('1AtcSh7uxenQ6AR5xqr6agAegWRUF5N4uh', 1)]}) },{ # Test derived from block 647547 on BTC mainnet - 'in': (bytes.fromhex('00010042276049e5518791be2ffe2c301f5dfe9ef85dd0400001720034b0410000000000000001500000006a79811e000000000000000054000079cec1665f4800000000000000050000000ca91f2d660000000000000005402736c8de6e34d54000000000000001500c5e4c71e081ceb00000000000000054000000045dc03ec4000000000000000500004af1271cf5fc00000000000000054001e71f8464432780000000000000015000002e1e4191f0d0000000000000005400012bc4aaac2a54000000000000001500079c7e774e411c00000000000000054000000045dc0a6f00000000000000015000002e1e486f661000000000000000540001c807abe13908000000000000000475410426156245525daa71f2e84a40797bcf28099a2c508662a8a33324a703597b9aa2661a79a82ffb4caaa9b15f4094622fbfa85f8b9dc7381f991f5a265421391cc3ad0075740087'), DP['default_block_index']), + 'in': (binascii.unhexlify('00010042276049e5518791be2ffe2c301f5dfe9ef85dd0400001720034b0410000000000000001500000006a79811e000000000000000054000079cec1665f4800000000000000050000000ca91f2d660000000000000005402736c8de6e34d54000000000000001500c5e4c71e081ceb00000000000000054000000045dc03ec4000000000000000500004af1271cf5fc00000000000000054001e71f8464432780000000000000015000002e1e4191f0d0000000000000005400012bc4aaac2a54000000000000001500079c7e774e411c00000000000000054000000045dc0a6f00000000000000015000002e1e486f661000000000000000540001c807abe13908000000000000000475410426156245525daa71f2e84a40797bcf28099a2c508662a8a33324a703597b9aa2661a79a82ffb4caaa9b15f4094622fbfa85f8b9dc7381f991f5a265421391cc3ad0075740087'), DP['default_block_index']), 'out': ({'BELLAMAFIA': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 5)], 'DONPABLO': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 5)], 'GEISHAPEPE': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 1)], 'GUARDDOG': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 5)], 'MATRYOSHKAPP': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 5)], 'PEPEACIDTRIP': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 5)], 'PEPEAIR': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 1)], 'PEPECIGARS': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 5)], 'PEPEDRACULA': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 5)], 'PEPEHEMAN': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 5)], 'PEPEHITMAN': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 5)], 'PEPEJERICHO': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 5)], 'PEPEKFC': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 5)], 'PEPEWYATT': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 5)], 'XCHAINPEPE': [('172nmZbxDR6erc5PqNqV28fnMj7g6besru', 1)]}) }], 'validate': [{ @@ -5080,25 +5241,25 @@ 'out': (['send list cannot have only one element']) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity']), ('XCP', ADDR[1], 0.1)], 1), - 'out': (['quantities must be an int (in satoshis) for XCP to {}'.format(ADDR[1])]) + 'out': ([f'quantities must be an int (in satoshis) for XCP to {ADDR[1]}']) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity']), ('XCP', ADDR[1], -DP['quantity'])], 1), - 'out': (['negative quantity for XCP to {}'.format(ADDR[1])]) + 'out': ([f'negative quantity for XCP to {ADDR[1]}']) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity']), ('XCP', ADDR[1], 0)], 1), - 'out': (['zero quantity for XCP to {}'.format(ADDR[1])]) + 'out': ([f'zero quantity for XCP to {ADDR[1]}']) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity']), ('XCP', ADDR[1], config.MAX_INT + 1)], 1), - 'out': (['integer overflow for XCP to {}'.format(ADDR[1])]) + 'out': ([f'integer overflow for XCP to {ADDR[1]}']) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity']), ('XCP', None, DP['quantity'])], 1), 'out': (['destination is required for XCP']) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity']), ('BTC', ADDR[1], DP['quantity'])], 1), - 'out': (['cannot send BTC to {}'.format(ADDR[1])]) + 'out': ([f'cannot send BTC to {ADDR[1]}']) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity']), ('XCP', ADDR[6], DP['quantity'])], 1), - 'out': (['destination {} requires memo'.format(ADDR[6])]) + 'out': ([f'destination {ADDR[6]} requires memo']) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity']), ('XCP', ADDR[1], DP['quantity'])], 1), 'out': ([]) @@ -5121,39 +5282,39 @@ }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity']), ('XCP', ADDR[1], DP['quantity'])], None, None), 'mock_protocol_changes': {'short_tx_type_id': True}, - 'out': (ADDR[0], [], bytes.fromhex('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e10040000000017d78400')) + 'out': (ADDR[0], [], binascii.unhexlify('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e10040000000017d78400')) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity'], 'DEADBEEF', True), ('XCP', ADDR[1], DP['quantity'])], None, None), 'mock_protocol_changes': {'short_tx_type_id': True}, - 'out': (ADDR[0], [], bytes.fromhex('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e100c4deadbeef8000000002faf0800')) + 'out': (ADDR[0], [], binascii.unhexlify('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e100c4deadbeef8000000002faf0800')) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity'], 'DEADBEEF', False), ('XCP', ADDR[1], DP['quantity'])], None, None), 'mock_protocol_changes': {'short_tx_type_id': True}, - 'out': (ADDR[0], [], bytes.fromhex('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e1008844454144424545468000000002faf0800')) + 'out': (ADDR[0], [], binascii.unhexlify('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e1008844454144424545468000000002faf0800')) }, { 'in': (ADDR[0], [('XCP', ADDR[3], DP['quantity']), ('XCP', ADDR[2], DP['quantity']), ('XCP', ADDR[1], DP['quantity'])], None, None), 'mock_protocol_changes': {'short_tx_type_id': True}, - 'out': (ADDR[0], [], bytes.fromhex('0300036f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f6c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a1526f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000000000000000640000000017d784000000000002faf08020000000005f5e1000')) + 'out': (ADDR[0], [], binascii.unhexlify('0300036f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f6c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a1526f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000000000000000640000000017d784000000000002faf08020000000005f5e1000')) }, { 'in': (ADDR[0], [('XCP', ADDR[3], DP['quantity']), ('DIVISIBLE', ADDR[2], DP['quantity']), ('NODIVISIBLE', ADDR[1], 1)], None, None), 'mock_protocol_changes': {'short_tx_type_id': True}, - 'out': (ADDR[0], [], bytes.fromhex('0300036f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f6c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a1526f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d9800000000017d784010006cad8dc7f0b66200000000000000014000000000000000440000000017d784000')) + 'out': (ADDR[0], [], binascii.unhexlify('0300036f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f6c39ee7c8f3a5ffa6121b0304a7a0de9d3d9a1526f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d9800000000017d784010006cad8dc7f0b66200000000000000014000000000000000440000000017d784000')) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity']), ('XCP', ADDR[1], DP['quantity'])], 'DEADBEEF', True), 'mock_protocol_changes': {'short_tx_type_id': True}, - 'out': (ADDR[0], [], bytes.fromhex('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ecc4deadbeef8000000000000000c000000000bebc2008000000002faf0800')) + 'out': (ADDR[0], [], binascii.unhexlify('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ecc4deadbeef8000000000000000c000000000bebc2008000000002faf0800')) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity']), ('XCP', ADDR[1], DP['quantity'])], 'DEADBEEF', False), 'mock_protocol_changes': {'short_tx_type_id': True}, - 'out': (ADDR[0], [], bytes.fromhex('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec8844454144424545468000000000000000c000000000bebc2008000000002faf0800')) + 'out': (ADDR[0], [], binascii.unhexlify('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec8844454144424545468000000000000000c000000000bebc2008000000002faf0800')) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity'], 'BEEFDEAD', True), ('XCP', ADDR[1], DP['quantity'])], 'DEADBEEF', True), 'mock_protocol_changes': {'short_tx_type_id': True}, - 'out': (ADDR[0], [], bytes.fromhex('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ecc4deadbeef8000000000000000c000000000bebc201897ddfbd5b0000000005f5e1000')) + 'out': (ADDR[0], [], binascii.unhexlify('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ecc4deadbeef8000000000000000c000000000bebc201897ddfbd5b0000000005f5e1000')) }, { 'in': (ADDR[0], [('XCP', ADDR[2], DP['quantity']), ('DIVISIBLE', ADDR[1], DP['quantity'])], None, None), 'mock_protocol_changes': {'short_tx_type_id': True}, - 'out': (ADDR[0], [], bytes.fromhex('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d990000000005f5e100400000000000000040000000005f5e10000')) + 'out': (ADDR[0], [], binascii.unhexlify('0300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d990000000005f5e100400000000000000040000000005f5e10000')) }], 'parse': [{ 'in': ({ @@ -5165,7 +5326,7 @@ 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, - 'data': bytes.fromhex('00000000') + bytes.fromhex('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e10040000000017d78400'), + 'data': binascii.unhexlify('00000000') + binascii.unhexlify('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec400000000000000060000000005f5e10040000000017d78400'), 'tx_index': 502, 'destination': ADDR[0] },), @@ -5198,7 +5359,7 @@ 'address': ADDR[1], 'asset': 'XCP', 'block_index': DP['default_block_index'], - 'calling_function': 'send', + 'calling_function': 'mpma send', 'event': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'quantity': DP['quantity'], }}, @@ -5206,12 +5367,12 @@ 'address': ADDR[2], 'asset': 'XCP', 'block_index': DP['default_block_index'], - 'calling_function': 'send', + 'calling_function': 'mpma send', 'event': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'quantity': DP['quantity'], }}, {'table': 'debits', 'values': { - 'action': 'send', + 'action': 'mpma send', 'address': ADDR[0], 'asset': 'XCP', 'block_index': DP['default_block_index'], @@ -5229,7 +5390,7 @@ 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, - 'data': bytes.fromhex('00000000') + bytes.fromhex('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ecc4deadbeef8000000000000000c000000000bebc201897ddfbd5b0000000005f5e1000'), + 'data': binascii.unhexlify('00000000') + binascii.unhexlify('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ecc4deadbeef8000000000000000c000000000bebc201897ddfbd5b0000000005f5e1000'), 'tx_index': 502, 'destination': ADDR[0] },), @@ -5241,7 +5402,7 @@ 'quantity': DP['quantity'], 'source': ADDR[0], 'status': 'valid', - 'memo': bytes.fromhex('BEEFDEAD'), + 'memo': binascii.unhexlify('BEEFDEAD'), 'msg_index': 0, 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'tx_index': 502, @@ -5253,7 +5414,7 @@ 'quantity': DP['quantity'], 'source': ADDR[0], 'status': 'valid', - 'memo': bytes.fromhex('DEADBEEF'), + 'memo': binascii.unhexlify('DEADBEEF'), 'msg_index': 1, 'tx_hash': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'tx_index': 502, @@ -5262,7 +5423,7 @@ 'address': ADDR[1], 'asset': 'XCP', 'block_index': DP['default_block_index'], - 'calling_function': 'send', + 'calling_function': 'mpma send', 'event': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'quantity': DP['quantity'], }}, @@ -5270,12 +5431,12 @@ 'address': ADDR[2], 'asset': 'XCP', 'block_index': DP['default_block_index'], - 'calling_function': 'send', + 'calling_function': 'mpma send', 'event': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'quantity': DP['quantity'], }}, {'table': 'debits', 'values': { - 'action': 'send', + 'action': 'mpma send', 'address': ADDR[0], 'asset': 'XCP', 'block_index': DP['default_block_index'], @@ -5293,7 +5454,7 @@ 'block_time': 155409000, 'block_hash': DP['default_block_hash'], 'btc_amount': 7800, - 'data': bytes.fromhex('00000000') + bytes.fromhex('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d990000000005f5e100400000000000000040000000005f5e100000300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d990000000005f5e100400000000000000040000000005f5e10000'), + 'data': binascii.unhexlify('00000000') + binascii.unhexlify('00026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d990000000005f5e100400000000000000040000000005f5e100000300026f4e5638a01efbb2f292481797ae1dcfcdaeb98d006f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec4000002896f8d2d990000000005f5e100400000000000000040000000005f5e10000'), 'tx_index': 502, 'destination': ADDR[0] },), @@ -5326,7 +5487,7 @@ 'address': ADDR[1], 'asset': 'DIVISIBLE', 'block_index': DP['default_block_index'], - 'calling_function': 'send', + 'calling_function': 'mpma send', 'event': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'quantity': DP['quantity'], }}, @@ -5334,12 +5495,12 @@ 'address': ADDR[2], 'asset': 'XCP', 'block_index': DP['default_block_index'], - 'calling_function': 'send', + 'calling_function': 'mpma send', 'event': 'db6d9052b576d973196363e11163d492f50926c2f1d1efd67b3d999817b0d04d', 'quantity': DP['quantity'], }}, {'table': 'debits', 'values': { - 'action': 'send', + 'action': 'mpma send', 'address': ADDR[0], 'asset': 'XCP', 'block_index': DP['default_block_index'], @@ -5347,7 +5508,7 @@ 'quantity': DP['quantity'], }}, {'table': 'debits', 'values': { - 'action': 'send', + 'action': 'mpma send', 'address': ADDR[0], 'asset': 'DIVISIBLE', 'block_index': DP['default_block_index'], diff --git a/counterpartylib/test/integration_test.py b/counterparty-lib/counterpartylib/test/integration_test.py similarity index 95% rename from counterpartylib/test/integration_test.py rename to counterparty-lib/counterpartylib/test/integration_test.py index d5eb284eaa..53dfe745b7 100644 --- a/counterpartylib/test/integration_test.py +++ b/counterparty-lib/counterpartylib/test/integration_test.py @@ -5,7 +5,7 @@ from counterpartylib.test import util_test -def test_scenario(scenario_name, base_scenario_name, transactions): +def test_scenario(scenario_name, base_scenario_name, transactions, pytest_config): """Run the integration tests. Reads scenario.py to get all the integration scenarios to create a holistic integration test run, @@ -17,7 +17,7 @@ def test_scenario(scenario_name, base_scenario_name, transactions): new_dump, new_log, new_raw_transactions = util_test.run_scenario(transactions) - if pytest.config.option.savescenarios: + if pytest_config.getoption("savescenarios"): util_test.save_scenario_output(scenario_name, new_dump, new_log, new_raw_transactions) old_dump, old_log, old_raw_transactions = util_test.load_scenario_ouput(scenario_name) diff --git a/counterpartylib/test/mocked_utxoset_test.py b/counterparty-lib/counterpartylib/test/mocked_utxoset_test.py similarity index 99% rename from counterpartylib/test/mocked_utxoset_test.py rename to counterparty-lib/counterpartylib/test/mocked_utxoset_test.py index 428b7ae7a1..41260c35b2 100644 --- a/counterpartylib/test/mocked_utxoset_test.py +++ b/counterparty-lib/counterpartylib/test/mocked_utxoset_test.py @@ -12,7 +12,6 @@ FIXTURE_DB = tempfile.gettempdir() + '/fixtures.unittest_fixture.db' - @pytest.mark.usefixtures("server_db") def test_search_raw_transactions_output(): txs = backend.search_raw_transactions(ADDR[0], unconfirmed=True) diff --git a/counterpartylib/test/p2sh_encoding_test.py b/counterparty-lib/counterpartylib/test/p2sh_encoding_test.py similarity index 88% rename from counterpartylib/test/p2sh_encoding_test.py rename to counterparty-lib/counterpartylib/test/p2sh_encoding_test.py index e14c20cbb1..ad8bf9768f 100644 --- a/counterpartylib/test/p2sh_encoding_test.py +++ b/counterparty-lib/counterpartylib/test/p2sh_encoding_test.py @@ -19,10 +19,12 @@ from counterpartylib.lib import config from counterpartylib.lib import api from counterpartylib.lib import backend -from counterpartylib.lib import blocks +from counterpartylib.lib import ledger +from counterpartylib.lib import gettxinfo from counterpartylib.lib import exceptions from counterpartylib.lib.transaction_helper import serializer from counterpartylib.lib.transaction_helper import p2sh_encoding +from counterpartylib.lib.kickstart.blocks_parser import BlockchainParser FIXTURE_SQL_FILE = CURR_DIR + '/fixtures/scenarios/unittest_fixture.sql' FIXTURE_DB = tempfile.gettempdir() + '/fixtures.unittest_fixture.db' @@ -36,7 +38,11 @@ def test_p2sh_encoding_composed(server_db): # BTC Mainnet tx d90dc8637fd2ab9ae39b7c2929c793c5d28d7dea672afb02fb4001637085e9a1 datatxhex = "010000000102d2b137e49e930ef3e436b342713d8d07bd378e773c915a5938993d81dc7e6000000000fdab0147304402207848293e88563750f647e949cb594cdbec0beb4070faac73040d77d479420f8302201e0ac32788e98bd984279102b7382576d7ddb4b125d1d507725cbd12d97a2908014d60014d1401434e5452505254590300010042276049e5518791be2ffe2c301f5dfe9ef85dd0400001720034b0410000000000000001500000006a79811e000000000000000054000079cec1665f4800000000000000050000000ca91f2d660000000000000005402736c8de6e34d54000000000000001500c5e4c71e081ceb00000000000000054000000045dc03ec4000000000000000500004af1271cf5fc00000000000000054001e71f8464432780000000000000015000002e1e4191f0d0000000000000005400012bc4aaac2a54000000000000001500079c7e774e411c00000000000000054000000045dc0a6f00000000000000015000002e1e486f661000000000000000540001c807abe13908000000000000000475410426156245525daa71f2e84a40797bcf28099a2c508662a8a33324a703597b9aa2661a79a82ffb4caaa9b15f4094622fbfa85f8b9dc7381f991f5a265421391cc3ad0075740087ffffffff0100000000000000000e6a0c31d52bf3b404aefaf596cfd000000000" config.PREFIX = b'CNTRPRTY' - parsed_source, parsed_destination, parsed_btc_amount, parsed_fee, parsed_data, extra = blocks._get_tx_info(datatxhex) + parsed_source, parsed_destination, parsed_btc_amount, parsed_fee, parsed_data, extra = gettxinfo._get_tx_info( + server_db, + BlockchainParser().deserialize_tx(datatxhex, True), + ledger.CURRENT_BLOCK_INDEX + ) print('!!!!!!!!!!!!!!!!>1') print(parsed_source) print(parsed_destination) @@ -80,16 +86,15 @@ def test_p2sh_encoding(server_db): assert sumvout < sumvin assert sumvout == (sumvin - fee) - # data P2SH output expected_datatx_length = 435 - expected_datatx_fee = int(expected_datatx_length / 1000 * fee_per_kb) + expected_datatx_fee = fee # excat fee asked assert repr(pretx.vout[0].scriptPubKey) == "CScript([OP_HASH160, x('8042727755cf6254a0b8f7f4c82de93c23b507d6'), OP_EQUAL])" assert pretx.vout[0].nValue == expected_datatx_fee # change output assert pretx.vout[1].nValue == sumvin - expected_datatx_fee - fee - assert pretxhex == "0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02f65400000000000017a9148042727755cf6254a0b8f7f4c82de93c23b507d687febbe90b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + assert pretxhex == "0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff02204e00000000000017a9148042727755cf6254a0b8f7f4c82de93c23b507d687d4c2e90b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" # 01000000 | version # 01 | inputs # c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae | txout hash @@ -108,12 +113,16 @@ def test_p2sh_encoding(server_db): # first transaction should be considered BTC only with pytest.raises(exceptions.BTCOnlyError): - blocks._get_tx_info(pretxhex) + gettxinfo._get_tx_info( + server_db, + BlockchainParser().deserialize_tx(pretxhex, True), + ledger.CURRENT_BLOCK_INDEX + ) # store transaction pretxid, _ = util_test.insert_raw_transaction(pretxhex, server_db) - logger.debug('pretxid %s' % (pretxid)) + logger.debug(f'pretxid {pretxid}') # check that when we do another, unrelated, send that it won't use our UTXO result = api.compose_transaction( @@ -152,10 +161,10 @@ def test_p2sh_encoding(server_db): assert sumvout == sumvin - expected_datatx_fee assert len(datatx.vout) == 1 # opreturn signalling P2SH - assert repr(datatx.vout[0].scriptPubKey) == "CScript([OP_RETURN, x('8a5dda15fb6f0562da344d2f')])" # arc4(PREFIX + 'P2SH') + assert repr(datatx.vout[0].scriptPubKey) == "CScript([OP_RETURN, x('03214158f8e4c83c02386ffa')])" # arc4(PREFIX + 'P2SH') assert datatx.vout[0].nValue == 0 - assert datatxhex == "010000000146fb6cb8d783ecd8ee127c08169af083b13989b7d266269c3544d944c3efcc99000000005d4c5b31544553545858585800000002000000000000000100000000000000646f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec75210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ad0075740087ffffffff0100000000000000000e6a0c8a5dda15fb6f0562da344d2f00000000" + assert datatxhex == "010000000119d8ee8a286d755e51877e79a8972abd2914eccc560529effb389c0bcbdd0344000000005d4c5b31544553545858585800000002000000000000000100000000000000646f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec75210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ad0075740087ffffffff0100000000000000000e6a0c03214158f8e4c83c02386ffa00000000" # 01000000 | version # 01 | inputs # 0a0746fe9308ac6e753fb85780a8b788b40655148dcde1435f2048783b784f06 | txout hash @@ -173,7 +182,11 @@ def test_p2sh_encoding(server_db): # 00000000 | locktime # verify parsed result - parsed_source, parsed_destination, parsed_btc_amount, parsed_fee, parsed_data, extra = blocks._get_tx_info(datatxhex) + parsed_source, parsed_destination, parsed_btc_amount, parsed_fee, parsed_data, extra = gettxinfo._get_tx_info( + server_db, + BlockchainParser().deserialize_tx(datatxhex, True), + ledger.CURRENT_BLOCK_INDEX + ) #assert parsed_source == source # make_canonical cannot calculate this address assert parsed_data == binascii.unhexlify("00000002" "0000000000000001" "0000000000000064" "6f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec") # ID=enhanced_send(0x02) ASSET=XCP(0x01) VALUE=100(0x64) destination_pubkey(0x6f8d...d6ec) assert parsed_btc_amount == 0 @@ -216,26 +229,26 @@ def test_p2sh_encoding_long_data(server_db): sumvin = sum([int(utxos[(bitcoinlib.core.b2lx(vin.prevout.hash), vin.prevout.n)]['amount'] * 1e8) for vin in pretx.vin]) sumvout = sum([vout.nValue for vout in pretx.vout]) - pretx_fee = 12950 + #pretx_fee = 12950 assert len(pretx.vout) == 3 assert len(pretxhex) / 2 == 174 assert sumvin == 199909140 assert sumvout < sumvin - assert sumvout == (sumvin - pretx_fee) + #assert sumvout == (sumvin - pretx_fee) + pretx_fee = sumvin - sumvout # data P2SH output - expected_datatx_length = 1156 - expected_datatx_fee = int(expected_datatx_length / 1000 * fee_per_kb) - expected_datatx_fee_rounded = int(math.ceil(expected_datatx_fee / 2)) * 2 - assert repr(pretx.vout[0].scriptPubKey) == "CScript([OP_HASH160, x('329d3940a8c28df82bee71bf1d5b16d35e864a84'), OP_EQUAL])" - assert pretx.vout[0].nValue == int(math.ceil(expected_datatx_fee / 2)) - assert pretx.vout[1].nValue == int(math.ceil(expected_datatx_fee / 2)) + expected_datatx_fee_rounded = config.DEFAULT_REGULAR_DUST_SIZE * 2 + + assert repr(pretx.vout[0].scriptPubKey) == "CScript([OP_HASH160, x('600fad54f67716af692b33f72862b7c0d457ade6'), OP_EQUAL])" + assert pretx.vout[0].nValue == config.DEFAULT_REGULAR_DUST_SIZE + assert pretx.vout[1].nValue == config.DEFAULT_REGULAR_DUST_SIZE # change output - assert pretx.vout[2].nValue == sumvin - expected_datatx_fee_rounded - pretx_fee + assert pretx.vout[2].nValue == sumvin - (2 * config.DEFAULT_REGULAR_DUST_SIZE) - pretx_fee - assert pretxhex == "0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03e47000000000000017a914329d3940a8c28df82bee71bf1d5b16d35e864a8487e47000000000000017a91443b7fefe3d188e409575f9ad5f446b2fcbcf4d6a87b64ae90b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" + assert pretxhex == "0100000001c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788acffffffff03220200000000000017a914600fad54f67716af692b33f72862b7c0d457ade687220200000000000017a9142adb68fe57838e8dd49641e93f6fc70922ade549873a28ea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac00000000" # 00000001 | version # 01 | inputs # c1d8c075936c3495f6d653c50f73d987f75448d97a750249b1eb83bee71b24ae | txout hash @@ -255,10 +268,9 @@ def test_p2sh_encoding_long_data(server_db): # 76a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac | output 3 script # 00000000 | locktime - # store transaction pretxid, _ = util_test.insert_raw_transaction(pretxhex, server_db) - logger.debug('pretxid %s' % (pretxid)) + logger.debug(f'pretxid {pretxid}') # now compose the data transaction result = api.compose_transaction( @@ -281,14 +293,14 @@ def test_p2sh_encoding_long_data(server_db): assert len(datatx.vin) == 2 assert len(datatxhex) / 2 == 1594 / 2 - assert sumvin == expected_datatx_fee_rounded + assert sumvin == 2 * config.DEFAULT_REGULAR_DUST_SIZE assert sumvout < sumvin - assert sumvout == sumvin - expected_datatx_fee_rounded + assert sumvout == 0 assert len(datatx.vout) == 1 # opreturn signalling P2SH assert repr(datatx.vout[0].scriptPubKey) == "CScript([OP_RETURN, x('8a5dda15fb6f0562da344d2f')])" # arc4(PREFIX + 'P2SH') assert datatx.vout[0].nValue == 0 - assert datatxhex == "0100000002d2d71c96244aa6baa98f619a4454694ae09be71577470b88aadcf8bb1d9b78c400000000fd0b024d08024ddc0154455354585858580000001e5a21aad600000000000000000000000054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746875210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ad0075740087ffffffffd2d71c96244aa6baa98f619a4454694ae09be71577470b88aadcf8bb1d9b78c4010000009d4c9b4c70544553545858585865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2075210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ad5175740087ffffffff0100000000000000000e6a0c8a5dda15fb6f0562da344d2f00000000" + assert datatxhex == "0100000002b7bd6fbf86ab2987a37ac78db80a84f2dde28bb65128fce0c2108c9c43538d5900000000fd0a024d07024ddb0154455354585858580000001e5a21aad600000000000000000000000054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f766572207475210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ad0075740087ffffffffb7bd6fbf86ab2987a37ac78db80a84f2dde28bb65128fce0c2108c9c43538d59010000009e4c9c4c7154455354585858586865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2054686520717569636b2062726f776e20666f78206a756d706564206f76657220746865206c617a7920646f672e2075210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ad5175740087ffffffff0100000000000000000e6a0c8a5dda15fb6f0562da344d2f00000000" # 01000000 | version # 02 | inputs # f33f677de4180f1b0c261a991974c57de97f082a7e62332b77ec5d193d13d1a3 | txout hash @@ -323,9 +335,12 @@ def test_p2sh_encoding_long_data(server_db): # 6a0c8a5dda15fb6f0562da344d2f | output 1 script # 00000000 | locktime - # verify parsed result - parsed_source, parsed_destination, parsed_btc_amount, parsed_fee, parsed_data, extra = blocks._get_tx_info(datatxhex) + parsed_source, parsed_destination, parsed_btc_amount, parsed_fee, parsed_data, extra = gettxinfo._get_tx_info( + server_db, + BlockchainParser().deserialize_tx(datatxhex, True), + ledger.CURRENT_BLOCK_INDEX + ) #assert parsed_source == source # make_canonical can't calculate this address assert parsed_data == binascii.unhexlify("0000001e5a21aad6000000000000000000000000") + b'The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. The quick brown fox jumped over the lazy dog. ' # ID=enhanced_send(0x1e) ASSET=XCP(0x01) VALUE=100(0x64) destination_pubkey(0x6f8d...d6ec) @@ -365,14 +380,14 @@ def test_p2sh_encoding_manual_multisig_transaction(server_db): with util_test.ConfigContext(OLD_STYLE_API=True), util_test.MockProtocolChangesContext(enhanced_sends=True, p2sh_encoding=True): p2sh_source_multisig_pubkeys_binary = [binascii.unhexlify(p) for p in [DP['pubkey'][ADDR[0]], DP['pubkey'][ADDR[1]], DP['pubkey'][ADDR[2]]]] data_drop = b'deadbeef01' - scriptSig, redeemScript, outputScript = p2sh_encoding.make_p2sh_encoding_redeemscript( + script_sig, redeem_script, output_script = p2sh_encoding.make_p2sh_encoding_redeemscript( data_drop, - n=0, pubKey=None, + n=0, pub_key=None, multisig_pubkeys=p2sh_source_multisig_pubkeys_binary, multisig_pubkeys_required=2 ) - redeemScript = bitcoinlib.core.script.CScript(redeemScript) - assert repr(redeemScript) == "CScript([x('{}'), OP_DROP, 2, x('{}'), x('{}'), x('{}'), 3, OP_CHECKMULTISIGVERIFY, 0, OP_DROP, OP_DEPTH, 0, OP_EQUAL])".format(data_drop.hex(), DP['pubkey'][ADDR[0]], DP['pubkey'][ADDR[1]], DP['pubkey'][ADDR[2]]) + redeem_script = bitcoinlib.core.script.CScript(redeem_script) + assert repr(redeem_script) == f"CScript([x('{data_drop.hex()}'), OP_DROP, 2, x('{DP['pubkey'][ADDR[0]]}'), x('{DP['pubkey'][ADDR[1]]}'), x('{DP['pubkey'][ADDR[2]]}'), 3, OP_CHECKMULTISIGVERIFY, 0, OP_DROP, OP_DEPTH, 0, OP_EQUAL])" # setup transaction fee = 20000 @@ -394,7 +409,7 @@ def test_p2sh_encoding_manual_multisig_transaction(server_db): # store transaction pretxid, _ = util_test.insert_raw_transaction(pretxhex, server_db) - logger.debug('pretxid %s' % (pretxid)) + logger.debug(f'pretxid {pretxid}') # now compose the data transaction result = api.compose_transaction( @@ -415,7 +430,11 @@ def test_p2sh_encoding_manual_multisig_transaction(server_db): datatx = bitcoinlib.core.CTransaction.deserialize(binascii.unhexlify(datatxhex)) # parse the transaction - parsed_source, parsed_destination, parsed_btc_amount, parsed_fee, parsed_data, extra = blocks._get_tx_info(datatxhex) + parsed_source, parsed_destination, parsed_btc_amount, parsed_fee, parsed_data, extra = gettxinfo._get_tx_info( + server_db, + BlockchainParser().deserialize_tx(datatxhex, True), + ledger.CURRENT_BLOCK_INDEX + ) assert parsed_source == source assert parsed_data == binascii.unhexlify("00000002" "0000000000000001" "0000000000000064" "6f8d6ae8a3b381663118b4e1eff4cfc7d0954dd6ec") # ID=enhanced_send(0x02) ASSET=XCP(0x01) VALUE=100(0x64) destination_pubkey(0x6f8d...d6ec) assert parsed_btc_amount == 0 @@ -423,12 +442,12 @@ def test_p2sh_encoding_manual_multisig_transaction(server_db): @pytest.mark.usefixtures("cp_server") def test_p2sh_script_decoding(): - scriptHex = "1c8a5dda15fb6f05628a061e67576e926dc71a7fa2f0cceb97452b4d564101a914c088c83aeddd211096df9f5f0df1f3b885ac7fe70188210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ad0075740087" - scriptSig = bitcoinlib.core.script.CScript(binascii.unhexlify(scriptHex)) + script_hex = "1c8a5dda15fb6f05628a061e67576e926dc71a7fa2f0cceb97452b4d564101a914c088c83aeddd211096df9f5f0df1f3b885ac7fe70188210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ad0075740087" + script_sig = bitcoinlib.core.script.CScript(binascii.unhexlify(script_hex)) - print('scriptSig', repr(scriptSig), list(scriptSig), len(list(scriptSig))) + print('scriptSig', repr(script_sig), list(script_sig), len(list(script_sig))) - chunks = list(scriptSig) + chunks = list(script_sig) if len(chunks) == 3: sig = chunks[0] datachunk = chunks[1] @@ -460,9 +479,9 @@ def test_p2sh_signed_multisig_script_decoding(): with util_test.ConfigContext(PREFIX=b'CNTRPRTY'): txHex = "0100000001bae95e59f83e55035f566dc0e3034f79f0d670dc6d6a0d207a11b4e49e9baecf00000000fd0301483045022100d2d38c2d98285e44a271e91894622fa85044469257dbfc15a49e1ba98cddaf8002202b06bf0ca9d65af9f9c96db13c7585b4cd66cabedba269f9b70659dd8e456c46014cb84c8d434e5452505254591e5a3ae08000000000000000000000000073434950203620737570706f727473207573696e672070327368206164647265737365732061732074686520736f7572636520616464726573732062757420726571756972657320616e206164646974696f6e616c20696e70757420696e207468652064617461207472616e73616374696f6e2e752102e53b79237cacdc221cff4c0fb320223cac3e0fe30a682a22f19a70a3975aa3f8ad0075740087ffffffff0100000000000000000e6a0c804e42751677319b884a2d1b00000000" - ctx = backend.deserialize(txHex) - vin = ctx.vin[0] - asm = script.get_asm(vin.scriptSig) + ctx = BlockchainParser().deserialize_tx(txHex, True) + vin = ctx["vin"][0] + asm = script.script_to_asm(vin["scriptSig"]) new_source, new_destination, new_data = p2sh_encoding.decode_p2sh_input(asm) assert new_data == binascii.unhexlify('1e5a3ae08000000000000000000000000073434950203620737570706f727473207573696e672070327368206164647265737365732061732074686520736f7572636520616464726573732062757420726571756972657320616e206164646974696f6e616c20696e70757420696e207468652064617461207472616e73616374696f6e2e') @@ -478,18 +497,17 @@ def test_benchmark_outkey_vin(): tt = time.time() ttn1 = ((tt - t) / m) - print(tt - t, "%f" % ttn1) + print(tt - t, f"{ttn1:f}") t = time.time() for n in range(m): tx = bitcoinlib.core.CTransaction.deserialize(binascii.unhexlify("0100000002eff195acdf2bbd215daa8aca24eb667b563a731d34a9ab75c8d8df5df08be29b000000006c493046022100ec6fa8316a4f5cfd69816e31011022acce0933bd3b01248caa8b49e60de1b98a022100987ba974b2a4f9976a8d61d94009cb7f7986a827dc5730e999de1fb748d2046c01210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ffffffffeff195acdf2bbd215daa8aca24eb667b563a731d34a9ab75c8d8df5df08be29b010000006a47304402201f8fb2d62df22592cb8d37c68ab26563dbb8e270f7f8409ac0f6d7b24ddb5c940220314e5c767fd12b20116528c028eab2bfbad30eb963bd849993410049cf14a83d01210282b886c087eb37dc8182f14ba6cc3e9485ed618b95804d44aecc17c300b585b0ffffffff02145fea0b000000001976a9144838d8b3588c4c7ba7c1d06f866e9b3739c6303788ac0000000000000000346a32544553540000000a00000000000000010000000005f5e1000000000000000000000000000bebc2000032000000000000271000000000")) outkey = [(vin.prevout.hash, vin.prevout.n) for vin in tx.vin] - tt = time.time() ttn2 = ((tt - t) / m) - print(tt - t, "%f" % ttn2) + print(tt - t, f"{ttn2:f}") t = time.time() for n in range(m): @@ -497,11 +515,10 @@ def test_benchmark_outkey_vin(): outkey = [(vin.prevout.hash, vin.prevout.n) for vin in tx.vin] outkey = hashlib.sha256(str(outkey).encode('ascii')).digest() - tt = time.time() ttn3 = ((tt - t) / m) - print(tt - t, "%f" % ttn3) + print(tt - t, f"{ttn3:f}") # not sure what to do here since the speed depends on the machine ... assert ttn1 < 0.0001 diff --git a/counterpartylib/test/parse_block_test.py b/counterparty-lib/counterpartylib/test/parse_block_test.py similarity index 85% rename from counterpartylib/test/parse_block_test.py rename to counterparty-lib/counterpartylib/test/parse_block_test.py index 001419011f..4e219675d0 100644 --- a/counterpartylib/test/parse_block_test.py +++ b/counterparty-lib/counterpartylib/test/parse_block_test.py @@ -15,8 +15,8 @@ def test_parse_block(server_db): test_outputs = blocks.parse_block(server_db, DP['default_block_index'], 1420914478) outputs = ('44cf374045f44caf86c7b7de61de3e712f4ba3c39523ab95bc68149ef8aede18', - 'b4d68165bdbd4e14cf5f426bd32d9ebf831688f97b4d2a99340afc7db5817ba0', - 'fafa399384e61785222b285cf1cde836cd8b64edbb8c1087bf4a28c9ace84f95', + '9c2c0940e0a2a8f4c6dde1cfd69efe8e3b467fac0950b385554044ab1f863bf5', + '391a7ec4a6cb59500765aafca989df26f5c9a46515a292f9839db20fd81f8c27', None) try: assert outputs == test_outputs diff --git a/counterparty-lib/counterpartylib/test/pycoin_rs_test.py b/counterparty-lib/counterpartylib/test/pycoin_rs_test.py new file mode 100644 index 0000000000..0ad4143906 --- /dev/null +++ b/counterparty-lib/counterpartylib/test/pycoin_rs_test.py @@ -0,0 +1,167 @@ +import time +import binascii + +import pytest +import bitcoin as bitcoinlib +from bitcoin.core.script import CScript + +from counterpartylib.lib import config +from counterpartylib.lib.script import ( + base58_check_encode, + base58_check_decode, + base58_check_decode_py, + base58_check_encode_py, + get_asm, + script_to_asm, + get_checksig, +) + +from counterpartylib.lib.opcodes import * + +from counterparty_rs import utils + +def test_pycoin_rs(): + + vector = [ + ("4264cfd7eb65f8cbbdba98bd9815d5461fad8d7e", config.P2SH_ADDRESSVERSION_TESTNET, "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy"), + ("641327ad1b3abc18cb6f1650a225f49a47764c22", config.ADDRESSVERSION_TESTNET, "mpe6p9ah9a6yoK57Xd2GEn8D9EonbLLkWJ"), + ("415354746bc11e9ef91efa85da59f0ad1df61a9d", config.ADDRESSVERSION_MAINNET, "16xQkLFxYZcGtzyGbHD7tmnaeHavD21Kw5"), + ("edf98b439f45eb4e3239122488cab2773296499d", config.P2SH_ADDRESSVERSION_MAINNET, "3PPK1dRAerbVZRfkh9BhA1Zxq9HrG4rRwN"), + ] + + for (decoded, version, encoded) in vector: + by_python = base58_check_encode_py(decoded, version) + by_rust = base58_check_encode(decoded, version) + assert by_rust == by_python + + by_python = base58_check_decode_py(encoded, version) + by_rust = base58_check_decode(encoded, version) + assert by_rust == by_python + + #iteration = 100000 + iteration = 10 + + start_time = time.time() + for i in range(iteration): + for (decoded, version, encoded) in vector: + base58_check_encode(decoded, version) + base58_check_decode(encoded, version) + rust_duration = time.time() - start_time + print("rust duration for 400K encodes and 400K decodes: ", rust_duration) + + start_time = time.time() + for i in range(iteration): + for (decoded, version, encoded) in vector: + base58_check_encode_py(decoded, version) + base58_check_decode_py(encoded, version) + python_duration = time.time() - start_time + print("python duration for 400K encodes and 400K decodes: ", python_duration) + + assert rust_duration < python_duration + +def test_get_asm(): + + def with_rust(): + asm = script_to_asm(b'v\xa9\x14H8\xd8\xb3X\x8cL{\xa7\xc1\xd0o\x86n\x9b79\xc607\x88\xac') + assert asm == [ + OP_DUP, + OP_HASH160, + b'H8\xd8\xb3X\x8cL{\xa7\xc1\xd0o\x86n\x9b79\xc607', + OP_EQUALVERIFY, + OP_CHECKSIG + ] + + asm = script_to_asm(b'jLP:\xb4\x08\xa6y\xf1\x08\xa1\x9e5\x88h\x15\xc4\xc4h\xcau\xa0g\x99\xf8d\xa1\xfa\xd6\xbc\x08\x13\xf5\xfe2`\xe4!\xa3\x02\x02\xf2\xe7oF\xac\xdb),e#q\xcaH\xb9t`\xf7\x92\x8a\xde\x8e\xcb\x02\xea\x9f\xad\xc2\x0c\x0bE=\xe6ghr\xc9\xe4\x1f\xad\x80\x1e\x8b') + assert asm == [ + OP_RETURN, + b':\xb4\x08\xa6y\xf1\x08\xa1\x9e5\x88h\x15\xc4\xc4h\xcau\xa0g\x99\xf8d\xa1\xfa\xd6\xbc\x08\x13\xf5\xfe2`\xe4!\xa3\x02\x02\xf2\xe7oF\xac\xdb),e#q\xcaH\xb9t`\xf7\x92\x8a\xde\x8e\xcb\x02\xea\x9f\xad\xc2\x0c\x0bE=\xe6ghr\xc9\xe4\x1f\xad\x80\x1e\x8b' + ] + + def with_python(): + asm = get_asm(CScript(b'v\xa9\x14H8\xd8\xb3X\x8cL{\xa7\xc1\xd0o\x86n\x9b79\xc607\x88\xac')) + assert asm == [ + OP_DUP, + OP_HASH160, + b'H8\xd8\xb3X\x8cL{\xa7\xc1\xd0o\x86n\x9b79\xc607', + OP_EQUALVERIFY, + OP_CHECKSIG + ] + + asm = get_asm(CScript(b'jLP:\xb4\x08\xa6y\xf1\x08\xa1\x9e5\x88h\x15\xc4\xc4h\xcau\xa0g\x99\xf8d\xa1\xfa\xd6\xbc\x08\x13\xf5\xfe2`\xe4!\xa3\x02\x02\xf2\xe7oF\xac\xdb),e#q\xcaH\xb9t`\xf7\x92\x8a\xde\x8e\xcb\x02\xea\x9f\xad\xc2\x0c\x0bE=\xe6ghr\xc9\xe4\x1f\xad\x80\x1e\x8b')) + assert asm == [ + OP_RETURN, + b':\xb4\x08\xa6y\xf1\x08\xa1\x9e5\x88h\x15\xc4\xc4h\xcau\xa0g\x99\xf8d\xa1\xfa\xd6\xbc\x08\x13\xf5\xfe2`\xe4!\xa3\x02\x02\xf2\xe7oF\xac\xdb),e#q\xcaH\xb9t`\xf7\x92\x8a\xde\x8e\xcb\x02\xea\x9f\xad\xc2\x0c\x0bE=\xe6ghr\xc9\xe4\x1f\xad\x80\x1e\x8b' + ] + + iteration = 100000 + + print() + + start_time = time.time() + for i in range(iteration): + with_rust() + rust_duration = time.time() - start_time + print(f"rust duration for {iteration} iterations: ", rust_duration) + + start_time = time.time() + for i in range(iteration): + with_python() + python_duration = time.time() - start_time + print(f"python duration for {iteration} iterations: ", python_duration) + + asm = script_to_asm(b'Q!\x03\\\xa5\x1e\xa1u\xf1\x08\xa1\xc65\x88h=\xc4\xc4:qF\xc4g\x99\xf8d\xa3\x00&<\x08\x13\xf5\xfe5!\x020\x9a\x14\xa1\xa3\x02\x02\xf2\xe7oF\xac\xdb)\x17u#q\xcaB\xb9t`\xf7\x92\x8a\xde\x8e\xcb\x02\xea\x17!\x03\x19\xf6\xe0{\x0b\x8duaV9K\x9d\xcf;\x01\x1f\xe9\xac\x19\xf2p\x0b\xd6\xb6\x9aj\x17\x83\xdb\xb8\xb9wS\xae') + assert asm == [ + 1, + b'\x03\\\xa5\x1e\xa1u\xf1\x08\xa1\xc65\x88h=\xc4\xc4:qF\xc4g\x99\xf8d\xa3\x00&<\x08\x13\xf5\xfe5', + b'\x020\x9a\x14\xa1\xa3\x02\x02\xf2\xe7oF\xac\xdb)\x17u#q\xcaB\xb9t`\xf7\x92\x8a\xde\x8e\xcb\x02\xea\x17', + b'\x03\x19\xf6\xe0{\x0b\x8duaV9K\x9d\xcf;\x01\x1f\xe9\xac\x19\xf2p\x0b\xd6\xb6\x9aj\x17\x83\xdb\xb8\xb9w', + 3, + OP_CHECKMULTISIG + ] + + script = "76a914a3ec60fb522fdf62c90eec1981577813d8f8a58a88ac" + asm = script_to_asm(binascii.unhexlify(script)) + assert asm == [ + OP_DUP, + OP_HASH160, + b'\xa3\xec`\xfbR/\xdfb\xc9\x0e\xec\x19\x81Wx\x13\xd8\xf8\xa5\x8a', + OP_EQUALVERIFY, + OP_CHECKSIG + ] + pubkeyhash = get_checksig(asm) + assert pubkeyhash == b'\xa3\xec`\xfbR/\xdfb\xc9\x0e\xec\x19\x81Wx\x13\xd8\xf8\xa5\x8a' + + +def script_to_address(): + + def decode_p2w(script_pubkey): + bech32 = bitcoinlib.bech32.CBech32Data.from_bytes(0, script_pubkey[2:22]) + return str(bech32), None + + script_pubkey = b'\x00\x14u\x1ev\xe8\x19\x91\x96\xd4T\x94\x1cE\xd1\xb3\xa3#\xf1C;\xd6' + bech32 = utils.script_to_address(script_pubkey, 'testnet') + assert bech32 == "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx" + + bech32 = utils.script_to_address(script_pubkey, 'mainnet') + assert bech32 == "bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4" + + #iterations = 1000000 + iterations = 100 + + print() + + start_time = time.time() + for i in range(iterations): + bech32 = decode_p2w(script_pubkey) + assert bech32 == ("tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx", None) + python_duration = time.time() - start_time + print(f'{iterations} decode_p2w with python: {python_duration}s') + + start_time = time.time() + for i in range(iterations): + bech32 = utils.script_to_address(script_pubkey, 'testnet') + assert bech32 == "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx" + rust_duration = time.time() - start_time + print(f'{iterations} decode_p2w with rust: {rust_duration}s') + + assert python_duration > rust_duration diff --git a/counterpartylib/test/pytest.ini b/counterparty-lib/counterpartylib/test/pytest.ini similarity index 100% rename from counterpartylib/test/pytest.ini rename to counterparty-lib/counterpartylib/test/pytest.ini diff --git a/counterpartylib/test/unit_test.py b/counterparty-lib/counterpartylib/test/unit_test.py similarity index 67% rename from counterpartylib/test/unit_test.py rename to counterparty-lib/counterpartylib/test/unit_test.py index 6368f4e51a..f8bc85b880 100644 --- a/counterpartylib/test/unit_test.py +++ b/counterparty-lib/counterpartylib/test/unit_test.py @@ -4,14 +4,14 @@ from counterpartylib.test import conftest # this is require near the top to do setup of the test suite from counterpartylib.test import util_test from counterpartylib.test.util_test import CURR_DIR -from counterpartylib.lib import config +from counterpartylib.lib import check, exceptions FIXTURE_SQL_FILE = CURR_DIR + '/fixtures/scenarios/unittest_fixture.sql' FIXTURE_DB = tempfile.gettempdir() + '/fixtures.unittest_fixture.db' @conftest.add_fn_property(DISABLE_ARC4_MOCKING=True) @pytest.mark.usefixtures("api_server") -def test_vector(tx_name, method, inputs, outputs, error, records, comment, mock_protocol_changes, config_context, server_db): +def test_vector(tx_name, method, inputs, outputs, error, records, comment, mock_protocol_changes, config_context, pytest_config, server_db): """Test the outputs of unit test vector. If testing parse, execute the transaction data on test db.""" # disable arc4 mocking for vectors because we're too lazy to update all the vectors @@ -21,10 +21,18 @@ def test_vector(tx_name, method, inputs, outputs, error, records, comment, mock_ # force unit tests to always run against latest protocol changes from counterpartylib.test import conftest conftest.ALWAYS_LATEST_PROTOCOL_CHANGES = True + conftest.ENABLE_MOCK_PROTOCOL_CHANGES_AT_BLOCK = True conftest.RANDOM_ASSET_INT = 26**12 + 1 if method == 'parse': util_test.insert_transaction(inputs[0], server_db) # insert message as 2nd arg inputs = inputs[:1] + (inputs[0]['data'][4:],) + inputs[1:] - util_test.check_outputs(tx_name, method, inputs, outputs, error, records, comment, mock_protocol_changes, server_db) + elif method == 'dispense': + util_test.insert_transaction(inputs[0], server_db) + + util_test.check_outputs(tx_name, method, inputs, outputs, error, records, comment, mock_protocol_changes, pytest_config, server_db) + # dont check asset conservation after direct call to credit or debit + # and also when canceling a non existent bet match + if f"{tx_name}.{method}" not in ['ledger.credit', 'ledger.debit', 'bet.cancel_bet_match']: + check.asset_conservation(server_db) diff --git a/counterpartylib/test/util_test.py b/counterparty-lib/counterpartylib/test/util_test.py similarity index 74% rename from counterpartylib/test/util_test.py rename to counterparty-lib/counterpartylib/test/util_test.py index 7a73aacc38..6257fc0bf8 100644 --- a/counterpartylib/test/util_test.py +++ b/counterparty-lib/counterpartylib/test/util_test.py @@ -21,20 +21,21 @@ import appdirs import pprint import pycoin -from pycoin.tx import Tx +from pycoin.coins.bitcoin import Tx import bitcoin as bitcoinlib -logger = logging.getLogger(__name__) CURR_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), os.path.expanduser(__file__)))) sys.path.append(os.path.normpath(os.path.join(CURR_DIR, '..'))) from counterpartylib import server -from counterpartylib.lib import (config, util, blocks, check, backend, database, transaction, exceptions) +from counterpartylib.lib import (config, util, blocks, check, backend, database, transaction, exceptions, ledger, gettxinfo) from counterpartylib.lib.backend.indexd import extract_addresses, extract_addresses_from_txlist +from counterpartylib.lib.kickstart.blocks_parser import BlockchainParser from counterpartylib.test.fixtures.params import DEFAULT_PARAMS as DP from counterpartylib.test.fixtures.scenarios import UNITTEST_FIXTURE, INTEGRATION_SCENARIOS, standard_scenarios_params +logger = logging.getLogger(config.LOGGER_NAME) D = decimal.Decimal # Set test environment @@ -67,7 +68,6 @@ def init_database(sqlfile, dbfile, options=None): database_file=dbfile, testnet=True, verbose=True, - console_logfilter=os.environ.get('COUNTERPARTY_LOGGING', None), **kwargs) restore_database(config.DATABASE, sqlfile) @@ -81,37 +81,29 @@ def init_database(sqlfile, dbfile, options=None): def reset_current_block_index(db): cursor = db.cursor() latest_block = list(cursor.execute('''SELECT * FROM blocks ORDER BY block_index DESC LIMIT 1'''))[0] - util.CURRENT_BLOCK_INDEX = latest_block['block_index'] + ledger.CURRENT_BLOCK_INDEX = latest_block['block_index'] cursor.close() - return util.CURRENT_BLOCK_INDEX + return ledger.CURRENT_BLOCK_INDEX def dump_database(db): """Create a new database dump from db object as input.""" - # TEMPORARY - # .dump command bugs when aspw.Shell is used with 'db' args instead 'args' - # but this way stay 20x faster than running scenario with file db - db_filename = tempfile.gettempdir() + '/tmpforbackup.db' - remove_database_files(db_filename) - filecon = apsw.Connection(db_filename) - with filecon.backup("main", db, "main") as backup: + memory_db = apsw.Connection(":memory:") + with memory_db.backup("main", db, "main") as backup: backup.step() - output = io.StringIO() - shell = apsw.Shell(stdout=output, args=(db_filename,)) - #shell = apsw.Shell(stdout=output, db=db) - shell.process_command(".dump") - lines = output.getvalue().split('\n')[8:] - new_data = '\n'.join(lines) - #clean ; in new line - new_data = re.sub('\)[\n\s]+;', ');', new_data) - # apsw oddness: follwing sentence not always generated! - new_data = new_data.replace('-- The values of various per-database settings\n', '') + dump = "" + base_tables = ['blocks', 'transactions', 'transaction_outputs', 'balances', 'undolog', 'undolog_block'] + for table in base_tables + blocks.TABLES: + output = io.StringIO() + shell = apsw.Shell(stdout=output, db=memory_db) + shell.process_command(f".dump {table}") + lines = output.getvalue().split('\n')[8:] + new_data = '\n'.join(lines) + dump += new_data - remove_database_files(db_filename) - - return new_data + return dump def restore_database(database_filename, dump_filename): """Delete database dump, then opens another and loads it in-place.""" @@ -124,7 +116,7 @@ def restore_database(database_filename, dump_filename): def remove_database_files(database_filename): """Delete temporary db dumps.""" - for path in [database_filename, '{}-shm'.format(database_filename), '{}-wal'.format(database_filename)]: + for path in [database_filename, f'{database_filename}-shm', f'{database_filename}-wal']: if os.path.isfile(path): os.remove(path) @@ -137,7 +129,7 @@ def insert_block(db, block_index, parse_block=True): block = (block_index, block_hash, block_time, None, None, None, None) cursor.execute('''INSERT INTO blocks (block_index, block_hash, block_time, ledger_hash, txlist_hash, previous_block_hash, difficulty) VALUES (?,?,?,?,?,?,?)''', block) - util.CURRENT_BLOCK_INDEX = block_index # TODO: Correct?! + ledger.CURRENT_BLOCK_INDEX = block_index # TODO: Correct?! cursor.close() if parse_block: @@ -177,7 +169,11 @@ def insert_raw_transaction(raw_transaction, db): tx = None tx_index = block_index - config.BURN_START + 1 try: - source, destination, btc_amount, fee, data, extra = blocks._get_tx_info(raw_transaction) + source, destination, btc_amount, fee, data, extra = gettxinfo._get_tx_info( + db, + BlockchainParser().deserialize_tx(raw_transaction, True), + block_index + ) transaction = (tx_index, tx_hash, block_index, block_hash, block_time, source, destination, btc_amount, fee, data, True) cursor.execute('''INSERT INTO transactions VALUES (?,?,?,?,?,?,?,?,?,?,?)''', transaction) tx = list(cursor.execute('''SELECT * FROM transactions WHERE tx_index = ?''', (tx_index,)))[0] @@ -188,7 +184,7 @@ def insert_raw_transaction(raw_transaction, db): MOCK_UTXO_SET.add_raw_transaction(raw_transaction, tx_id=tx_hash, confirmations=1) - util.CURRENT_BLOCK_INDEX = block_index + ledger.CURRENT_BLOCK_INDEX = block_index blocks.parse_block(db, block_index, block_time) return tx_hash, tx @@ -205,7 +201,11 @@ def insert_unconfirmed_raw_transaction(raw_transaction, db): tx_index = tx_index[0]['tx_index'] if len(tx_index) else 0 tx_index = tx_index + 1 - source, destination, btc_amount, fee, data, extra = blocks._get_tx_info(raw_transaction) + source, destination, btc_amount, fee, data, extra = gettxinfo._get_tx_info( + db, + BlockchainParser().deserialize_tx(raw_transaction, True), + ledger.CURRENT_BLOCK_INDEX + ) tx = { 'tx_index': tx_index, 'tx_hash': tx_hash, @@ -231,7 +231,7 @@ def insert_unconfirmed_raw_transaction(raw_transaction, db): def dummy_tx_hash(raw_transaction): global UNIQUE_DUMMY_TX_HASH - tx = pycoin.tx.Tx.from_hex(raw_transaction) + tx = pycoin.coins.bitcoin.Tx.Tx.from_hex(raw_transaction) # normalize inputs for txin in tx.txs_in: @@ -247,9 +247,9 @@ def dummy_tx_hash(raw_transaction): # check we haven't created this before (if we do 2 exactly the sends for example) if tx_id in UNIQUE_DUMMY_TX_HASH: - logger.warn('BUMP TXID %s' % tx_id) + logger.warning(f'BUMP TXID {tx_id}') UNIQUE_DUMMY_TX_HASH[tx_id] += 1 - tx_id = hashlib.sha256('{}{}'.format(tx_id, UNIQUE_DUMMY_TX_HASH[tx_id]).encode('utf-8')).hexdigest() + tx_id = hashlib.sha256(f'{tx_id}{UNIQUE_DUMMY_TX_HASH[tx_id]}'.encode('utf-8')).hexdigest() else: UNIQUE_DUMMY_TX_HASH[tx_id] = 0 @@ -264,9 +264,23 @@ def insert_transaction(transaction, db): cursor.execute('''INSERT INTO blocks (block_index, block_hash, block_time, ledger_hash, txlist_hash, previous_block_hash, difficulty) VALUES (?,?,?,?,?,?,?)''', block) keys = ",".join(transaction.keys()) - cursor.execute('''INSERT INTO transactions ({}) VALUES (?,?,?,?,?,?,?,?,?,?,?)'''.format(keys), tuple(transaction.values())) + cursor.execute(f'''INSERT INTO transactions ({keys}) VALUES (?,?,?,?,?,?,?,?,?,?,?)''', tuple(transaction.values())) + # `dispenser.dispense()` needs some vouts. Let's say one vout per transaction. + cursor.execute('''INSERT INTO transaction_outputs( + tx_index, + tx_hash, + block_index, + out_index, + destination, + btc_amount) VALUES (?,?,?,?,?,?)''', + (transaction['tx_index'], + transaction['tx_hash'], + transaction['block_index'], + 0, + transaction["destination"], + transaction["btc_amount"])) cursor.close() - util.CURRENT_BLOCK_INDEX = transaction['block_index'] + ledger.CURRENT_BLOCK_INDEX = transaction['block_index'] def initialise_rawtransactions_db(db): @@ -279,11 +293,11 @@ def prefill_rawtransactions_db(db): cursor.execute('DROP TABLE IF EXISTS raw_transactions') cursor.execute('CREATE TABLE IF NOT EXISTS raw_transactions(tx_hash TEXT UNIQUE, tx_hex TEXT, confirmations INT)') with open(CURR_DIR + '/fixtures/unspent_outputs.json', 'r') as listunspent_test_file: - wallet_unspent = json.load(listunspent_test_file) - for output in wallet_unspent: - txid = output['txid'] - tx = backend.deserialize(output['txhex']) - cursor.execute('INSERT INTO raw_transactions VALUES (?, ?, ?)', (txid, output['txhex'], output['confirmations'])) + wallet_unspent = json.load(listunspent_test_file) + for output in wallet_unspent: + txid = output['txid'] + tx = BlockchainParser().deserialize_tx(output['txhex'], True) + cursor.execute('INSERT INTO raw_transactions VALUES (?, ?, ?)', (txid, output['txhex'], output['confirmations'])) cursor.close() @@ -302,7 +316,7 @@ def save_rawtransaction(db, txid, tx_hex, confirmations=0): cursor.close() -def getrawtransaction(db, txid, verbose=False): +def getrawtransaction(db, txid, verbose=False, block_index=None): """ Return raw transactions with specific hash. @@ -363,12 +377,12 @@ def mock_bitcoind_verbose_tx_output(tx, txid, confirmations): for idx, vout in enumerate(ctx.vout): if list(vout.scriptPubKey)[-1] == bitcoinlib.core.script.OP_CHECKMULTISIG: - pubkeys = list(vout.scriptPubKey)[1:-2] - addresses = [] - for pubkey in pubkeys: - addr = str(bitcoinlib.wallet.P2PKHBitcoinAddress.from_pubkey(pubkey)) + pubkeys = list(vout.scriptPubKey)[1:-2] + addresses = [] + for pubkey in pubkeys: + addr = str(bitcoinlib.wallet.P2PKHBitcoinAddress.from_pubkey(pubkey)) - addresses.append(addr) + addresses.append(addr) else: try: addresses = [str(bitcoinlib.wallet.CBitcoinAddress.from_scriptPubKey(vout.scriptPubKey))] @@ -460,7 +474,7 @@ def run_scenario(scenario): checkpoints = dict(check.CHECKPOINTS_TESTNET) check.CHECKPOINTS_TESTNET = {} - logger = logging.getLogger() + logger = logging.getLogger(config.LOGGER_NAME) logger.setLevel(logging.DEBUG) logger_buff = io.StringIO() handler = logging.StreamHandler(logger_buff) @@ -481,7 +495,7 @@ def run_scenario(scenario): if tx[0] != 'create_next_block': mock_protocol_changes = tx[3] if len(tx) == 4 else {} with MockProtocolChangesContext(**(mock_protocol_changes or {})): - module = sys.modules['counterpartylib.lib.messages.{}'.format(tx[0])] + module = sys.modules[f'counterpartylib.lib.messages.{tx[0]}'] compose = getattr(module, 'compose') unsigned_tx_hex = transaction.construct(db=db, tx_info=compose(db, *tx[1]), regular_dust_size=5430, **tx[2]) raw_transactions.append({tx[0]: unsigned_tx_hex}) @@ -489,6 +503,8 @@ def run_scenario(scenario): else: create_next_block(db, block_index=config.BURN_START + tx[1], parse_block=tx[2] if len(tx) == 3 else True) + check.asset_conservation(db) + dump = dump_database(db) log = logger_buff.getvalue() @@ -524,34 +540,27 @@ def clean_scenario_dump(scenario_name, dump): """Replace addresses and hashes to compare a scenario with its base scenario.""" dump = dump.replace(standard_scenarios_params[scenario_name]['address1'], 'address1') dump = dump.replace(standard_scenarios_params[scenario_name]['address2'], 'address2') - dump = re.sub('[a-f0-9]{64}', 'hash', dump) - dump = re.sub('X\'[A-F0-9]+\',1\);', '\'data\',1);', dump) - # ignore fee values by replacing them with 10000 satoshis - dump = re.sub(',\d+,\'data\',1\);', ',10000,\'data\',1);', dump) - dump = re.sub(',\d+,X\'\',1\);', ',10000,\'data\',1);', dump) - # ignore dust value by replacing them with 0 satoshis - dump = re.sub(',7800,(\d+),\'data\',1\);', ',0,\1,\'data\',1);', dump) - dump = re.sub(',5430,(\d+),\'data\',1\);', ',0,\1,\'data\',1);', dump) - + dump = re.sub(r'[a-f0-9]{64}', 'hash', dump) + dump = re.sub(r'X\'[A-F0-9]+\',1\);', '\'data\',1);', dump) return dump -def check_record(record, server_db): +def check_record(record, server_db, pytest_config): """Allow direct record access to the db.""" cursor = server_db.cursor() if record['table'] == 'pragma': field = record['field'] - sql = '''PRAGMA {}'''.format(field) + sql = f'''PRAGMA {field}''' value = cursor.execute(sql).fetchall()[0][field] assert value == record['value'] else: - sql = '''SELECT COUNT(*) AS c FROM {} '''.format(record['table']) + sql = f'''SELECT COUNT(*) AS c FROM {record['table']} ''' sql += '''WHERE ''' bindings = [] conditions = [] for field in record['values']: if record['values'][field] is not None: - conditions.append('''{} = ?'''.format(field)) + conditions.append(f'''{field} = ?''') bindings.append(record['values'][field]) sql += " AND ".join(conditions) @@ -559,18 +568,18 @@ def check_record(record, server_db): ok = (record.get('not', False) and count == 0) or count == 1 if not ok: - if pytest.config.getoption('verbose') >= 2: + if pytest_config.getoption('verbose') >= 2: print("expected values: ") pprint.PrettyPrinter(indent=4).pprint(record['values']) - print("SELECT * FROM {} WHERE block_index = {}: ".format(record['table'], record['values']['block_index'])) - pprint.PrettyPrinter(indent=4).pprint(list(cursor.execute('''SELECT * FROM {} WHERE block_index = ?'''.format(record['table']), (record['values']['block_index'],)))) + print(f"SELECT * FROM {record['table']} WHERE block_index = {record['values']['block_index']}: ") + pprint.PrettyPrinter(indent=4).pprint(list(cursor.execute(f'''SELECT * FROM {record['table']}'''))) raise AssertionError("check_record \n" + "table=" + record['table'] + " \n" + "conditions=" + ",".join(conditions) + " \n" + "bindings=" + ",".join(map(lambda v: str(v), bindings))) -def vector_to_args(vector, functions=[]): +def vector_to_args(vector, functions=[], pytest_config=None): """Translate from UNITTEST_VECTOR style to function arguments.""" args = [] for tx_name in sorted(vector.keys()): @@ -583,16 +592,17 @@ def vector_to_args(vector, functions=[]): mock_protocol_changes = params.get('mock_protocol_changes', None) config_context = params.get('config_context', {}) if functions == [] or (tx_name + '.' + method) in functions: - args.append((tx_name, method, params['in'], outputs, error, records, comment, mock_protocol_changes, config_context)) + args.append((tx_name, method, params['in'], outputs, error, records, comment, mock_protocol_changes, config_context, pytest_config)) return args def exec_tested_method(tx_name, method, tested_method, inputs, server_db): """Execute tested_method within context and arguments.""" if tx_name == 'transaction' and method == 'construct': return tested_method(server_db, inputs[0], **inputs[1]) - elif (tx_name == 'util' and (method in ['api','date_passed','price','generate_asset_id','generate_asset_name','dhash_string','enabled','get_url','hexlify','parse_subasset_from_asset_name','compact_subasset_longname','expand_subasset_longname',])) \ + elif (tx_name == 'util' and (method in ['api', 'date_passed', 'dhash_string', 'get_url', 'hexlify', 'parse_subasset_from_asset_name', 'compact_subasset_longname', 'expand_subasset_longname',])) \ + or (tx_name == 'ledger' and (method in ['price', 'generate_asset_id', 'generate_asset_name', 'enabled',])) \ or tx_name == 'script' \ - or (tx_name == 'blocks' and (method[:len('get_tx_info')] == 'get_tx_info')) \ + or method == 'get_tx_info_legacy' \ or tx_name == 'transaction' \ or tx_name == 'transaction_helper.serializer' \ or method == 'sortkeypicker' \ @@ -606,26 +616,34 @@ def exec_tested_method(tx_name, method, tested_method, inputs, server_db): else: return tested_method(server_db, *inputs) -def check_outputs(tx_name, method, inputs, outputs, error, records, comment, mock_protocol_changes, server_db): +def check_outputs(tx_name, method, inputs, outputs, error, records, comment, mock_protocol_changes, pytest_config, server_db): """Check actual and expected outputs of a particular function.""" try: - tested_module = sys.modules['counterpartylib.lib.{}'.format(tx_name)] + tested_module = sys.modules[f'counterpartylib.lib.{tx_name}'] except KeyError: # TODO: hack - tested_module = sys.modules['counterpartylib.lib.messages.{}'.format(tx_name)] + tested_module = sys.modules[f'counterpartylib.lib.messages.{tx_name}'] tested_method = getattr(tested_module, method) with MockProtocolChangesContext(**(mock_protocol_changes or {})): test_outputs = None if error is not None: - with pytest.raises(error[0]) as exception: - test_outputs = exec_tested_method(tx_name, method, tested_method, inputs, server_db) + if pytest_config.getoption('verbose') >= 2: + print("Expected error:", error[0], error[1]) + if error[0] == "Warning": + with pytest.warns(None) as record: + test_outputs = exec_tested_method(tx_name, method, tested_method, inputs, server_db) + assert str(record[0].message) == error[1] + else: + with pytest.raises(error[0]) as exception: + test_outputs = exec_tested_method(tx_name, method, tested_method, inputs, server_db) + assert exception.value.args[0] == error[1] else: test_outputs = exec_tested_method(tx_name, method, tested_method, inputs, server_db) - if pytest.config.option.gentxhex and method == 'compose': - print('') + if pytest_config.getoption('gentxhex') and method == 'compose': + print('--------------------------') tx_params = { - 'encoding': 'multisig' + #'encoding': 'multisig' } if tx_name == 'order' and inputs[1]=='BTC': print('give btc') @@ -633,29 +651,28 @@ def check_outputs(tx_name, method, inputs, outputs, error, records, comment, moc unsigned_tx_hex = transaction.construct(server_db, test_outputs, **tx_params) print(tx_name) print(unsigned_tx_hex) + print('--------------------------') if outputs is not None: try: assert outputs == test_outputs except AssertionError: - if pytest.config.getoption('verbose') >= 2: + if pytest_config.getoption('verbose') >= 2: msg = "expected outputs don't match test_outputs:\nexpected_outputs=\n" + pprint.pformat(outputs) + "\ntest_outputs=\n" + pprint.pformat(test_outputs) else: - msg = "expected outputs don't match test_outputs: expected_outputs=%s test_outputs=%s" % (outputs, test_outputs) + msg = f"expected outputs don't match test_outputs: expected_outputs={outputs} test_outputs={test_outputs}" raise Exception(msg) - if error is not None: - assert str(exception.value) == error[1] if records is not None: for record in records: - check_record(record, server_db) + check_record(record, server_db, pytest_config) def compare_strings(string1, string2): """Compare strings diff-style.""" diff = list(difflib.unified_diff(string1.splitlines(1), string2.splitlines(1), n=0)) if len(diff): - print("\nDifferences:") - print("\n".join(diff)) + logger.info("\nDifferences:") + logger.info("\n".join(diff)) return len(diff) def get_block_ledger(db, block_index): @@ -677,93 +694,6 @@ def get_block_txlist(db, block_index): return txlist -def reparse(testnet=True): - """ - Reparse all transaction from the database. - - Create a new in-memory DB, copy the DB that is on-disk - - Reparse DB, automatically compares consensus hashes to the original ones from the on-disk DB - """ - options = dict(COUNTERPARTYD_OPTIONS) - server.initialise(database_file=':memory:', testnet=testnet, **options) - - logger = logging.getLogger() - - if testnet: - config.PREFIX = b'TESTXXXX' - - memory_db = database.get_connection(read_only=False) - - data_dir = appdirs.user_data_dir(appauthor=config.XCP_NAME, appname=config.APP_NAME, roaming=True) - prod_db_path = os.path.join(data_dir, '{}{}.db'.format(config.APP_NAME, '.testnet' if testnet else '')) - assert os.path.exists(prod_db_path), "database path {} does not exist".format(prod_db_path) - prod_db = apsw.Connection(prod_db_path) - prod_db.setrowtrace(database.rowtracer) - - # Copy DB from file on disk (should be a DB file with at least all the checkpoints) - # in-memory DB shouldn't have been written to yet up until this point - with memory_db.backup("main", prod_db, "main") as backup: - while not backup.done: - backup.step(100) - - # Drop most tables (except blocks, transactions, undolog) - memory_cursor = memory_db.cursor() - for table in blocks.TABLES + ['balances']: - memory_cursor.execute('''DROP TABLE IF EXISTS {}'''.format(table)) - - # Check that all checkpoint blocks are in the database to be tested. - if testnet: - CHECKPOINTS = check.CHECKPOINTS_TESTNET - else: - CHECKPOINTS = check.CHECKPOINTS_MAINNET - for block_index in CHECKPOINTS.keys(): - block_exists = bool(list(memory_cursor.execute('''SELECT * FROM blocks WHERE block_index = ?''', (block_index,)))) - assert block_exists, "block #%d does not exist" % block_index - - # Clean consensus hashes if first block hash don’t match with checkpoint. - checkpoints = check.CHECKPOINTS_TESTNET if config.TESTNET else check.CHECKPOINTS_MAINNET - columns = [column['name'] for column in memory_cursor.execute('''PRAGMA table_info(blocks)''')] - for field in ['ledger_hash', 'txlist_hash']: - if field in columns: - sql = '''SELECT {} FROM blocks WHERE block_index = ?'''.format(field) - first_hash = list(memory_cursor.execute(sql, (config.BLOCK_FIRST,)))[0][field] - if first_hash != checkpoints[config.BLOCK_FIRST][field]: - logger.info('First hash changed. Cleaning {}.'.format(field)) - memory_cursor.execute('''UPDATE blocks SET {} = NULL'''.format(field)) - - # Initialise missing tables - blocks.initialise(memory_db) - previous_ledger_hash = None - previous_txlist_hash = None - previous_messages_hash = None - - # Reparse each block, if ConsensusError is thrown then the difference - memory_cursor.execute('''SELECT * FROM blocks ORDER BY block_index''') - for block in memory_cursor.fetchall(): - try: - util.CURRENT_BLOCK_INDEX = block['block_index'] - previous_ledger_hash, previous_txlist_hash, previous_messages_hash, previous_found_messages_hash = blocks.parse_block( - memory_db, block['block_index'], block['block_time'], - previous_ledger_hash=previous_ledger_hash, ledger_hash=block['ledger_hash'], - previous_txlist_hash=previous_txlist_hash, txlist_hash=block['txlist_hash'], - previous_messages_hash=previous_messages_hash) - logger.info('Block (re-parse): %s (hashes: L:%s / TX:%s / M:%s%s)' % ( - block['block_index'], previous_ledger_hash[-5:], previous_txlist_hash[-5:], previous_messages_hash[-5:], - (' [overwrote %s]' % previous_found_messages_hash) if previous_found_messages_hash and previous_found_messages_hash != previous_messages_hash else '')) - - except check.ConsensusError as e: - message = str(e) - if message.find('ledger_hash') != -1: - new_ledger = get_block_ledger(memory_db, block['block_index']) - old_ledger = get_block_ledger(prod_db, block['block_index']) - compare_strings(old_ledger, new_ledger) - elif message.find('txlist_hash') != -1: - new_txlist = get_block_txlist(memory_db, block['block_index']) - old_txlist = get_block_txlist(prod_db, block['block_index']) - compare_strings(old_txlist, new_txlist) - - raise e - - class ConfigContext(object): def __init__(self, **kwargs): self.config = config @@ -811,3 +741,56 @@ def __exit__(self, exc_type, exc_val, exc_tb): self.mock_protocol_changes[k] = self._before[k] for k in self._before_empty: del self.mock_protocol_changes[k] + +def reparse(testnet=True, checkpoint_count=10): + """ + Reparse all transaction from the database. + - Create a new in-memory DB, copy the DB that is on-disk + - Reparse DB, automatically compares consensus hashes to the original ones from the on-disk DB + """ + # create a new in-memory DB + options = dict(COUNTERPARTYD_OPTIONS) + server.initialise(database_file=':memory:', testnet=testnet, **options) + memory_db = database.get_connection(read_only=False) + + # connect to the on-disk DB + data_dir = appdirs.user_data_dir(appauthor=config.XCP_NAME, appname=config.APP_NAME, roaming=True) + prod_db_path = os.path.join(data_dir, f"{config.APP_NAME}{'.testnet' if testnet else ''}.db") + assert os.path.exists(prod_db_path), f"database path {prod_db_path} does not exist" + prod_db = apsw.Connection(prod_db_path, flags=apsw.SQLITE_OPEN_READONLY) + prod_db.setrowtrace(database.rowtracer) + + # Copy DB from file on disk (should be a DB file with at least all the checkpoints) + # in-memory DB shouldn't have been written to yet up until this point + logger.info(f"Copying database from {prod_db_path} to memory...") + with memory_db.backup("main", prod_db, "main") as backup: + while not backup.done: + backup.step(100) + + # Check that all checkpoint blocks are in the database to be tested. + if testnet: + CHECKPOINTS = check.CHECKPOINTS_TESTNET + else: + CHECKPOINTS = check.CHECKPOINTS_MAINNET + + # we start one block after the checkpoint before the first one we want to check + block_index = sorted(list(CHECKPOINTS.keys()))[-checkpoint_count - 1] + + # Initialise missing tables + blocks.initialise(memory_db) + + try: + blocks.reparse(memory_db, block_index) + except check.ConsensusError as e: + message = str(e) + block_pos = message.index("block ") + 6 + error_block_index = int(message[block_pos:message.index(" ", block_pos)]) + if message.find('ledger_hash') != -1: + new_ledger = get_block_ledger(memory_db, error_block_index) + old_ledger = get_block_ledger(prod_db, error_block_index) + compare_strings(f"Old ledger:\n{old_ledger}", f"New ledger:\n{new_ledger}") + elif message.find('txlist_hash') != -1: + new_txlist = get_block_txlist(memory_db, error_block_index) + old_txlist = get_block_txlist(prod_db, error_block_index) + compare_strings(f"Old TX list:\n{old_txlist}", f"New TX list:\n{new_txlist}") + raise e diff --git a/counterpartylib/test/utxolocks_test.py b/counterparty-lib/counterpartylib/test/utxolocks_test.py similarity index 100% rename from counterpartylib/test/utxolocks_test.py rename to counterparty-lib/counterpartylib/test/utxolocks_test.py diff --git a/counterparty-lib/pyproject.toml b/counterparty-lib/pyproject.toml new file mode 100644 index 0000000000..1c6fb7ec3f --- /dev/null +++ b/counterparty-lib/pyproject.toml @@ -0,0 +1,74 @@ +[build-system] +requires = ["hatchling==1.14.0", "hatch-requirements-txt==0.4.0"] +build-backend = "hatchling.build" + +[project] +name = "counterparty-lib" +requires-python = ">= 3.10" +dynamic = ["version", "dependencies"] +description = "Counterparty Protocol Reference Implementation" +readme = "../README.md" +license = "MIT" +authors = [ + { name = "Counterparty Developers", email = "dev@counterparty.io" }, +] +keywords = ['counterparty', 'bitcoin', 'blockchain', 'crypto', 'cryptocurrency', 'wallet', 'exchange', 'trading', 'finance'] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "Intended Audience :: Financial and Insurance Industry", + "License :: OSI Approved :: MIT License", + "Natural Language :: English", + "Operating System :: Microsoft :: Windows", + "Operating System :: POSIX", + "Programming Language :: Python :: 3 :: Only", + "Topic :: Office/Business :: Financial", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: System :: Distributed Computing" +] + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.metadata.hooks.requirements_txt] +files = ["requirements.txt"] + +[project.urls] +"Latest release" = "https://github.com/CounterpartyXCP/counterparty-core/releases/latest" +"Documentation" = "https://docs.counterparty.io/" +"Source code" = "https://github.com/CounterpartyXCP/" +"Home Page" = "https://counterparty.io/" + +[tool.hatch.version] +path = "counterpartylib/lib/config.py" + +[tool.hatch.build.targets.wheel] +include = ["counterpartylib"] + +[tool.hatch.envs.default] +pre-install-commands = [ + "pip install -e ../counterparty-rs", +] + +[tool.license_scanner] +allowed-licences = [ + 'Apache license', + 'Apache license 2.0', + 'BSD 2-clause license', + 'BSD 3-clause license', + 'BSD license', + 'GNU general public license v2 (gplv2)', + 'GNU lesser general public license', + 'GNU lesser general public license v2 (lgplv2)', + 'GNU lesser general public license v3 (lgplv3)', + 'ISC license (iscl)', 'MIT license', + 'Mozilla public license 2.0 (mpl 2.0)', + 'Python software foundation license', + 'The Unlicense (Unlicense)', + 'Public domain', + 'Creative Commons Zero, CC-0', +] +allowed-packages = [ + 'counterparty-cli', 'counterparty-lib', 'counterparty-rs', + 'maturin', 'apsw', +] diff --git a/counterparty-lib/requirements.txt b/counterparty-lib/requirements.txt new file mode 100644 index 0000000000..c827b94294 --- /dev/null +++ b/counterparty-lib/requirements.txt @@ -0,0 +1,27 @@ +apsw==3.45.1.0 +appdirs==1.4.4 +setuptools-markdown==0.4.1 +python-dateutil==2.8.2 +Flask-HTTPAuth==4.8.0 +Flask==3.0.0 +colorlog==6.8.0 +json-rpc==1.15.0 +pycoin==0.92.20230326 +pycryptodome==3.20.0 +ripemd-hash==1.0.1 +safe-pysha3==1.0.4 +pytest==7.4.4 +pytest-cov==4.1.0 +python-bitcoinlib==0.12.2 +requests==2.31.0 +tendo==0.3.0 +xmltodict==0.13.0 +cachetools==5.3.2 +bitstring==4.1.4 +Werkzeug==3.0.1 +itsdangerous==2.1.2 +plyvel==1.5.1 +arc4==0.4.0 +halo==0.0.31 +termcolor==2.4.0 +counterparty-rs==10.0.0-alpha diff --git a/counterparty-lib/tools/benchmark.py b/counterparty-lib/tools/benchmark.py new file mode 100644 index 0000000000..827cf9fc0d --- /dev/null +++ b/counterparty-lib/tools/benchmark.py @@ -0,0 +1,324 @@ +#!/usr/bin/python3 + + +import os +import time +import difflib + +import apsw + + +MAX_INT = 2**63 - 1 + +def remove_from_balance_old(db, address, asset, quantity): + balance_cursor = db.cursor() + + balance_cursor.execute('''SELECT quantity FROM old_balances + WHERE (address = ? AND asset = ?)''', (address, asset)) + balances = balance_cursor.fetchall() + if not len(balances) == 1: + old_balance = 0 + else: + old_balance = balances[0][0] + + if old_balance < quantity: + raise Exception('Insufficient funds.') + + balance = round(old_balance - quantity) + balance = min(balance, MAX_INT) + assert balance >= 0 + + bindings = { + 'quantity': balance, + 'address': address, + 'asset': asset + } + sql='update old_balances set quantity = :quantity where (address = :address and asset = :asset)' + balance_cursor.execute(sql, bindings) + + +def add_to_balance_old(db, address, asset, quantity): + balance_cursor = db.cursor() + + balance_cursor.execute('''SELECT quantity FROM old_balances \ + WHERE (address = ? AND asset = ?)''', (address, asset)) + balances = balance_cursor.fetchall() + if len(balances) == 0: + assert balances == [] + + #update balances table with new balance + bindings = { + 'address': address, + 'asset': asset, + 'quantity': quantity, + } + sql='insert into old_balances values(:address, :asset, :quantity)' + balance_cursor.execute(sql, bindings) + elif len(balances) > 1: + assert False + else: + old_balance = balances[0][0] + assert type(old_balance) == int + balance = round(old_balance + quantity) + balance = min(balance, MAX_INT) + + bindings = { + 'quantity': balance, + 'address': address, + 'asset': asset + } + sql='update old_balances set quantity = :quantity where (address = :address and asset = :asset)' + balance_cursor.execute(sql, bindings) + + +def get_balance_new(db, address, asset): + """Get balance of contract or address.""" + cursor = db.cursor() + # rowid is enough but let's be verbose + balances = list(cursor.execute('''SELECT quantity FROM new_balances + WHERE (address = ? AND asset = ?) + ORDER BY block_index DESC, tx_index DESC, rowid DESC LIMIT 1''', (address, asset))) + cursor.close() + if not balances: + return 0 + return balances[0][0] + + +def remove_from_balance_new(db, address, asset, quantity, block_index, tx_index): + balance_cursor = db.cursor() + + old_balance = get_balance_new(db, address, asset) + + if old_balance < quantity: + raise Exception('Insufficient funds.') + + balance = round(old_balance - quantity) + balance = min(balance, MAX_INT) + assert balance >= 0 + + bindings = { + 'quantity': balance, + 'address': address, + 'asset': asset, + 'block_index': block_index, + 'tx_index': tx_index, + } + sql='INSERT INTO new_balances VALUES (:address, :asset, :quantity, :block_index, :tx_index)' + balance_cursor.execute(sql, bindings) + + +def add_to_balance_new(db, address, asset, quantity, block_index, tx_index): + balance_cursor = db.cursor() + + old_balance = get_balance_new(db, address, asset) + balance = round(old_balance + quantity) + balance = min(balance, MAX_INT) + + bindings = { + 'quantity': balance, + 'address': address, + 'asset': asset, + 'block_index': block_index, + 'tx_index': tx_index, + } + sql='INSERT INTO new_balances VALUES (:address, :asset, :quantity, :block_index, :tx_index)' + balance_cursor.execute(sql, bindings) + + +def copy_memory_db_to_disk(local_base, memory_db): + print("Copying in memory database to disk...") + start_time_copy_db = time.time() + # backup old database + if os.path.exists(local_base): + os.remove(local_base) + # initialize new database + db = apsw.Connection(local_base) + # copy memory database to new database + with db.backup("main", memory_db, "main") as backup: + while not backup.done: + backup.step(100) + print(f'Database copy duration: {time.time() - start_time_copy_db:.3f}s') + + +def prepare_benchmark_db(database_file): + print(f"Opening {database_file} database...") + db = apsw.Connection(database_file, flags=apsw.SQLITE_OPEN_READONLY) + cursor = db.cursor() + + credits_count = cursor.execute("SELECT count(*) as cnt FROM credits").fetchone()[0] + debits_count = cursor.execute("SELECT count(*) as cnt FROM debits").fetchone()[0] + movements_count = credits_count + debits_count + + print("Credits count:", credits_count) + print("Debits count:", debits_count) + print("Total:", movements_count) + + print() + + print("Creating in memory database...") + + bench_db = apsw.Connection(":memory:") + bench_cursor = bench_db.cursor() + + bench_cursor.execute('''CREATE TABLE IF NOT EXISTS new_balances( + address TEXT, + asset TEXT, + quantity INTEGER, + block_index INTEGER, + tx_index INTEGER) + ''') + bench_cursor.execute('''CREATE INDEX IF NOT EXISTS + address_asset_idx ON new_balances (address, asset) + ''') + bench_cursor.execute('''CREATE INDEX IF NOT EXISTS + address_idx ON new_balances (address) + ''') + bench_cursor.execute('''CREATE INDEX IF NOT EXISTS + asset_idx ON new_balances (asset) + ''') + + bench_cursor.execute('''CREATE TABLE IF NOT EXISTS old_balances( + address TEXT, + asset TEXT, + quantity INTEGER) + ''') + bench_cursor.execute('''CREATE INDEX IF NOT EXISTS + address_asset_idx ON old_balances (address, asset) + ''') + bench_cursor.execute('''CREATE INDEX IF NOT EXISTS + address_idx ON old_balances (address) + ''') + bench_cursor.execute('''CREATE INDEX IF NOT EXISTS + asset_idx ON old_balances (asset) + ''') + + query = """ + SELECT * FROM + (SELECT 'credit' as table_name, address, asset, quantity, block_index FROM credits + UNION ALL + SELECT 'debits' as table_name, address, asset, quantity, block_index FROM debits) + ORDER BY block_index + """ + + """ cursor.execute(query) + count = 1 + populate_start_time = time.time() + print("Populating `old_balances`...") + for movement in cursor: + if movement[0] == 'credit': + add_to_balance_old(bench_db, *movement[1:4]) + else: + remove_from_balance_old(bench_db, *movement[1:4]) + print(f"{count}/{movements_count}", end="\r") + count += 1 + print(f'`old_balances` populated in: {time.time() - populate_start_time:.3f}s') """ + + cursor.execute(query) + count = 1 + populate_start_time = time.time() + print("Populating `new_balances`...") + for movement in cursor: + if movement[0] == 'credit': + add_to_balance_new(bench_db, *movement[1:], 0) + else: + remove_from_balance_new(bench_db, *movement[1:], 0) + print(f"{count}/{movements_count}", end="\r") + count += 1 + print(f'`new_balances` populated in: {time.time() - populate_start_time:.3f}s') + + copy_memory_db_to_disk(BENCHMARK_DB, bench_db) + print() + + +def compare_strings(string1, string2): + """Compare strings diff-style.""" + diff = list(difflib.unified_diff(string1.splitlines(1), string2.splitlines(1), n=0)) + if len(diff): + print(f"\n{len(diff)} Differences:") + print("\n".join(diff)) + print(f"\n{len(diff)} differences") + return len(diff) + +def execute_query(cursor, description, query, bindings=None): + print(description) + start_time = time.time() + if isinstance(query, list): + for q in query: + res = cursor.execute(q, bindings).fetchall() + print(f'Average duration: {(time.time() - start_time) / len(query):.5f}s') + else: + res = cursor.execute(query, bindings).fetchall() + print(f'Duration: {time.time() - start_time:.5f}s') + print() + return res + + +BALANCES_VIEW_QUERY = """ + SELECT address, asset, quantity, MAX(rowid) + FROM new_balances + GROUP BY address, asset +""" + +def benchmark_new_balances(old_balance_db): + + old_db = apsw.Connection(old_balance_db, flags=apsw.SQLITE_OPEN_READONLY) + old_cursor = old_db.cursor() + + new_db = apsw.Connection(BENCHMARK_DB, flags=apsw.SQLITE_OPEN_READONLY) + new_cursor = new_db.cursor() + + rows_in_old_balances = old_cursor.execute("SELECT count(*) as cnt FROM balances").fetchone()[0] + print("Rows in `old_balances`:", rows_in_old_balances) + rows_in_new_balances = new_cursor.execute("SELECT count(*) as cnt FROM new_balances").fetchone()[0] + print("Rows in `new_balances`:", rows_in_new_balances) + print() + + description = "Get 100 addresses with most assets from `old_balances`..." + query = """ + SELECT address, count(asset) as cnt + FROM balances + GROUP BY address + ORDER BY cnt DESC + LIMIT 100 + """ + old_most_assets = execute_query(old_cursor, description, query) + + description = "Get 100 addresses with most assets from `new_balances`..." + query = f""" + SELECT address, count(asset) as cnt + FROM ({BALANCES_VIEW_QUERY}) + GROUP BY address + ORDER BY cnt DESC + LIMIT 100 + """ + new_most_assets = execute_query(new_cursor, description, query) + + description = "Get balances for 100 addresses with most assets from `old_balances`..." + queries = [] + for asset in old_most_assets: + queries.append(f""" + SELECT asset, quantity + FROM balances + WHERE address = '{asset[0]}' + """) + execute_query(old_cursor, description, queries) + + description = "Get balances for 100 addresses with most assets from `new_balances`..." + queries = [] + for asset in new_most_assets: + queries.append(f""" + SELECT asset, quantity FROM ( + SELECT address, asset, quantity, MAX(rowid) + FROM new_balances + WHERE address = '{asset[0]}' + GROUP BY address, asset + ) + """) + execute_query(new_cursor, description, queries) + + +BENCHMARK_DB="/home/tower/benchmark.db" + +#prepare_benchmark_db("/home/tower/counterparty.testnet.bootstrap.db") +#prepare_benchmark_db("/home/tower/counterparty.db") +benchmark_new_balances("/home/tower/counterparty.db") diff --git a/counterparty-lib/tools/checklicences.py b/counterparty-lib/tools/checklicences.py new file mode 100644 index 0000000000..e0677064eb --- /dev/null +++ b/counterparty-lib/tools/checklicences.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python3 + +import os +import tomllib +import json + +# pylint: disable=no-name-in-module +from sh import license_scanner + +PACKAGE_NAME = "counterparty-lib" + +def scan_licenses(): + cwd = os.path.join(os.getcwd(), PACKAGE_NAME) + licenses_str = license_scanner(_cwd=cwd).strip() + licenses = {} + current_license = None + for line in licenses_str.split('\n'): + if line.strip().startswith('=====') or line == "": + continue + if line.startswith(' - ') and current_license: + licenses[current_license].append(line[3:]) + continue + current_license = line.strip() + licenses[current_license] = [] + return licenses + +def get_allowed(): + pyproject_path = os.path.join(os.getcwd(), PACKAGE_NAME, "pyproject.toml") + with open(pyproject_path, "rb") as file_pointer: + data = tomllib.load(file_pointer) + allowed_licenses = data['tool']['license_scanner']['allowed-licences'] + allowed_packages = data['tool']['license_scanner']['allowed-packages'] + return allowed_licenses, allowed_packages + +def generate_sarif(not_allowed_packages): + results = [] + for license_name in not_allowed_packages: + for package in not_allowed_packages[license_name]: + results.append({ + "level": "error", + "message": { + "text": f"Package {package} has license {license_name} which is not allowed" + }, + "ruleId": "not-allowed-license", + "locations": [ + { + "physicalLocation": { + "artifactLocation": { + "uri": f"{PACKAGE_NAME}/pyproject.toml" + } + } + } + ] + }) + sarif = { + "version": "2.1.0", + "$schema": "http://json.schemastore.org/sarif-2.1.0-rtm.4", + "runs": [ + { + "tool": { + "driver": { + "name": "license-scanner", + "notifications": [], + "rules": [ + { + "id": "not-allowed-license", + "shortDescription": { + "text": "License is not allowed" + }, + } + ] + } + }, + "results": results + } + ] + } + with open("license_scanner.sarif", "w", encoding="UTF-8") as outfile: + outfile.write(json.dumps(sarif, indent=4)) + +def check_licenses(): + # Run the license scanner + used_packages = scan_licenses() + used_licenses = list(used_packages.keys()) + allowed_licenses, allowed_packages = get_allowed() + not_allowed_packages = {} + for license_name in used_licenses: + if license_name not in allowed_licenses: + for package in used_packages[license_name]: + if package not in allowed_packages: + if license_name not in not_allowed_packages: + not_allowed_packages[license_name] = [] + not_allowed_packages[license_name].append(package) + generate_sarif(not_allowed_packages) + + +if __name__ == '__main__': + check_licenses() diff --git a/counterparty-lib/tools/compareledger.py b/counterparty-lib/tools/compareledger.py new file mode 100644 index 0000000000..6dd2aa75e1 --- /dev/null +++ b/counterparty-lib/tools/compareledger.py @@ -0,0 +1,143 @@ +#!/usr/bin/python3 + +import sys +import difflib + +import apsw + + +def compare_strings(string1, string2): + """Compare strings diff-style.""" + diff = list(difflib.unified_diff(string1.splitlines(1), string2.splitlines(1), n=0)) + if len(diff): + print(f"\n{len(diff)} Differences:") + print("\n".join(diff)) + print(f"\n{len(diff)} differences") + return len(diff) + + +def get_ledger(database_file): + db = apsw.Connection(database_file, flags=apsw.SQLITE_OPEN_READONLY) + cursor = db.cursor() + + credit_fields = "block_index, address, asset, quantity, calling_function, event" + debit_fields = "block_index, address, asset, quantity, action, event" + query = f"""SELECT 'credit' as table_name, {credit_fields} FROM credits WHERE block_index < {LAST_BLOCK} + UNION ALL + SELECT 'debits' as table_name, {debit_fields} FROM debits WHERE block_index < {LAST_BLOCK} + ORDER BY block_index DESC + """ + + cursor.execute(query) + + rows = [] + for row in cursor: + rows.append(", ".join([str(x) for x in row])) + rows_str = "\n".join(rows) + + return f"{database_file}\n{rows_str}" + + +def compare_block_ledger(database_file_1, database_file_2, block_index): + db1 = apsw.Connection(database_file_1, flags=apsw.SQLITE_OPEN_READONLY) + cursor1 = db1.cursor() + + db2 = apsw.Connection(database_file_2, flags=apsw.SQLITE_OPEN_READONLY) + cursor2 = db2.cursor() + + credit_fields = "block_index, address, asset, quantity, calling_function, event" + debit_fields = "block_index, address, asset, quantity, action, event" + query = f"""SELECT 'credit' as table_name, {credit_fields} FROM credits WHERE block_index = ? + UNION ALL + SELECT 'debits' as table_name, {debit_fields} FROM debits WHERE block_index = ? + ORDER BY block_index DESC + """ + movements1 = cursor1.execute(query, (block_index, block_index)).fetchall() + movements2 = cursor2.execute(query, (block_index, block_index)).fetchall() + block1_str = "\n".join([", ".join([str(x) for x in mvnt]) for mvnt in movements1]) + block2_str = "\n".join([", ".join([str(x) for x in mvnt]) for mvnt in movements2]) + print(f"Block {block_index}") + print(f"----------------{database_file_1}---------------------") + print(block1_str) + print(f"----------------{database_file_2}---------------------") + print(block2_str) + print("-------------------------------------") + compare_strings(block1_str, block2_str) + + +def compare_txlist(database_file_1, database_file_2, block_index): + db1 = apsw.Connection(database_file_1, flags=apsw.SQLITE_OPEN_READONLY) + cursor1 = db1.cursor() + + db2 = apsw.Connection(database_file_2, flags=apsw.SQLITE_OPEN_READONLY) + cursor2 = db2.cursor() + + query = f"""SELECT * FROM transactions WHERE block_index = {block_index} ORDER BY tx_index""" + + liste1 = cursor1.execute(query).fetchall() + liste2 = cursor2.execute(query).fetchall() + block1_str = "\n".join([", ".join([str(x) for x in mvnt]) for mvnt in liste1]) + block2_str = "\n".join([", ".join([str(x) for x in mvnt]) for mvnt in liste2]) + print(f"Block {block_index}") + print(f"----------------{database_file_1}---------------------") + print(block1_str) + print(f"----------------{database_file_2}---------------------") + print(block2_str) + print("-------------------------------------") + compare_strings(block1_str, block2_str) + + +def check_hashes(database_file_1, database_file_2, hash_name="ledger_hash"): + db1 = apsw.Connection(database_file_1, flags=apsw.SQLITE_OPEN_READONLY) + cursor1 = db1.cursor() + + db2 = apsw.Connection(database_file_2, flags=apsw.SQLITE_OPEN_READONLY) + cursor2 = db2.cursor() + + query = f"""SELECT block_index, {hash_name} FROM blocks WHERE block_index < {LAST_BLOCK} ORDER BY block_index """ + + cursor1.execute(query) + for block1 in cursor1: + block2 = cursor2.execute(f"SELECT block_index, {hash_name} FROM blocks WHERE block_index = ?", (block1[0],)).fetchone() + if block1[1] != block2[1]: + print(block1[0], block1[1], block2[1]) + if hash_name == "ledger_hash": + compare_block_ledger(database_file_1, database_file_2, block1[0]) + else: + compare_txlist(database_file_1, database_file_2, block1[0]) + raise Exception("Hashes do not match") + + +def get_checkpoints(database_file): + checkpoints = [1600000, 1700000, 1800000, 1900000, 2000000, 2200000, 2400000, 2500000, 2540000] + db = apsw.Connection(database_file_1, flags=apsw.SQLITE_OPEN_READONLY) + cursor = db.cursor() + for checkpoint in checkpoints: + block = cursor.execute("SELECT block_index, ledger_hash, txlist_hash FROM blocks WHERE block_index = ?", (checkpoint,)).fetchone() + print(block[0], block[1], block[2]) + + +def compare_ledger(database_file_1, database_file_2): + ledger_1 = get_ledger(database_file_1) + ledger_2 = get_ledger(database_file_2) + compare_strings(ledger_1, ledger_2) + + +def get_last_block(database_file_1, database_file_2): + db1 = apsw.Connection(database_file_1, flags=apsw.SQLITE_OPEN_READONLY) + cursor1 = db1.cursor() + + db2 = apsw.Connection(database_file_2, flags=apsw.SQLITE_OPEN_READONLY) + cursor2 = db2.cursor() + + print(f"Last block {database_file_1}:", cursor1.execute("SELECT MAX(block_index) FROM blocks").fetchone()) + print(f"Last block {database_file_2}:", cursor2.execute("SELECT MAX(block_index) FROM blocks").fetchone()) + +database_file_1 = sys.argv[1] +database_file_2 = sys.argv[2] + +LAST_BLOCK = 290000 +#compare_ledger(database_file_1, database_file_2) +check_hashes(database_file_1, database_file_2, "txlist_hash") +#get_checkpoints(database_file_1) +#get_last_block(database_file_1, database_file_2) diff --git a/counterparty-lib/tools/copyscenarios.py b/counterparty-lib/tools/copyscenarios.py new file mode 100755 index 0000000000..ca0085d325 --- /dev/null +++ b/counterparty-lib/tools/copyscenarios.py @@ -0,0 +1,16 @@ +#!/usr/bin/python3 + +import sys +import os +import glob + +CURRENT_DIR = os.path.dirname(os.path.realpath(__file__)) +SCENARIOS_DIR = os.path.join(CURRENT_DIR, "..", "counterpartylib/test/fixtures/scenarios") + +dryrun = '--dry-run' in sys.argv or '--dryrun' in sys.argv + +for new_fixture_path in glob.glob(os.path.join(SCENARIOS_DIR, "*.new.*")): + old_fixture_path = new_fixture_path.replace(".new.", ".") + print(f"Move {new_fixture_path} to {old_fixture_path}") + if not dryrun: + os.replace(new_fixture_path, old_fixture_path) diff --git a/tools/updatetxids.py b/counterparty-lib/tools/updatetxids.py similarity index 91% rename from tools/updatetxids.py rename to counterparty-lib/tools/updatetxids.py index 677af607a0..a3ef691649 100755 --- a/tools/updatetxids.py +++ b/counterparty-lib/tools/updatetxids.py @@ -16,10 +16,10 @@ dryrun = '--dry-run' in sys.argv or '--dryrun' in sys.argv args = list(filter(lambda a: a not in [__file__, '--dry-run', '--dryrun'], sys.argv)) -diffcmd = 'git --no-pager diff %s' % UNITTEST_FIXTURE_SQL +diffcmd = f'git --no-pager diff {UNITTEST_FIXTURE_SQL}' if len(args) == 1: commit = args[0] - diffcmd = 'git --no-pager show %s %s' % (commit, UNITTEST_FIXTURE_SQL) + diffcmd = f'git --no-pager show {commit} {UNITTEST_FIXTURE_SQL}' elif len(args) > 1: raise Exception("Too many arguments") @@ -58,7 +58,7 @@ def to_literal_byte_string(h): for tx_index, old_txid in sorted(old_txid_map.items(), key=lambda kv: kv[0]): new_txid = new_txid_map[tx_index] - print("%s -> %s" % (old_txid, new_txid)) + print(f"{old_txid} -> {new_txid}") filedata = filedata.replace(old_txid, new_txid) filedata = filedata.replace(to_literal_byte_string(old_txid), to_literal_byte_string(new_txid)) diff --git a/tools/upgradesqlitepagesize.py b/counterparty-lib/tools/upgradesqlitepagesize.py similarity index 80% rename from tools/upgradesqlitepagesize.py rename to counterparty-lib/tools/upgradesqlitepagesize.py index 1775429ca1..68e77d9fdb 100755 --- a/tools/upgradesqlitepagesize.py +++ b/counterparty-lib/tools/upgradesqlitepagesize.py @@ -11,12 +11,12 @@ dbfile = sys.argv[1] dbdir = os.path.dirname(dbfile) -tmpdir = "%s/upgradesqlitepagesize" % dbdir -sqlfile = "%s/dump.sql" % tmpdir -tmpfile = "%s/%s" % (tmpdir, os.path.basename(dbfile)) +tmpdir = f"{dbdir}/upgradesqlitepagesize" +sqlfile = f"{tmpdir}/dump.sql" +tmpfile = f"{tmpdir}/{os.path.basename(dbfile)}" if not os.path.isfile(dbfile): - print("dbfile %s does not exist" % dbfile) + print(f"dbfile {dbfile} does not exist") sys.exit(1) try: @@ -28,24 +28,24 @@ print("creating .sql dump of DB...") pdump = Popen(["sqlite3", dbfile], stdin=PIPE, stdout=PIPE, stderr=PIPE) -output = pdump.communicate(bytes(""" +output = pdump.communicate(bytes(f""" .headers ON .mode csv -.output %s +.output {sqlfile} .dump .output stdout .exit -""" % sqlfile, "utf-8")) +""", "utf-8")) print(output) assert pdump.wait() == 0 print("preparing new DB...") ppre = Popen(["sqlite3", tmpfile], stdin=PIPE, stdout=PIPE, stderr=PIPE) -output = ppre.communicate(bytes(""" +output = ppre.communicate(bytes(f""" PRAGMA journal_mode = OFF; PRAGMA synchronous = OFF; -PRAGMA page_size=%s; -""" % PAGE_SIZE, "utf-8")) +PRAGMA page_size={PAGE_SIZE}; +""", "utf-8")) print(output) assert ppre.wait() == 0 diff --git a/counterparty-rs/Cargo.lock b/counterparty-rs/Cargo.lock new file mode 100644 index 0000000000..9ee2dd42c1 --- /dev/null +++ b/counterparty-rs/Cargo.lock @@ -0,0 +1,1114 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" + +[[package]] +name = "async-trait" +version = "0.1.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base16ct" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bip32" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b30ed1d6f8437a487a266c8293aeb95b61a23261273e3e02912cdb8b68bf798b" +dependencies = [ + "bs58", + "hmac", + "k256", + "once_cell", + "pbkdf2", + "rand_core", + "ripemd", + "secp256k1 0.21.3", + "sha2 0.10.8", + "subtle", + "zeroize", +] + +[[package]] +name = "bitcoin" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0694ea59225b0c5f3cb405ff3f670e4828358ed26aec49dc352f730f0cb1a8a3" +dependencies = [ + "bech32", + "bitcoin_hashes", + "secp256k1 0.24.3", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" +dependencies = [ + "sha2 0.9.9", +] + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "694c8807f2ae16faecc43dc17d74b3eb042482789fd0eb64b39a2e04e087053f" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "counterparty-rs" +version = "10.0.0-alpha" +dependencies = [ + "bip32", + "bitcoin", + "bs58", + "par-map", + "pyo3", + "pyo3-build-config 0.20.3", + "ripemd", + "sha256", + "vergen", +] + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-bigint" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "der" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +dependencies = [ + "const-oid", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "ecdsa" +version = "0.14.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" +dependencies = [ + "der", + "elliptic-curve", + "rfc6979", + "signature", +] + +[[package]] +name = "elliptic-curve" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +dependencies = [ + "base16ct", + "crypto-bigint", + "der", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "rand_core", + "subtle", +] + +[[package]] +name = "futures" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" + +[[package]] +name = "futures-cpupool" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" +dependencies = [ + "futures", + "num_cpus", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "hermit-abi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "indoc" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" + +[[package]] +name = "itoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" + +[[package]] +name = "k256" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "sha2 0.10.8", + "sha3", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "par-map" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f05b290991702bb8140cf70915b82b0ae1ec7fe478db97305af990048040095" +dependencies = [ + "futures", + "futures-cpupool", + "num_cpus", + "pub-iterator-type", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "pub-iterator-type" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "858afdbecdce657c6e32031348cf7326da7700c869c368a136d31565972f7018" + +[[package]] +name = "pyo3" +version = "0.17.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "268be0c73583c183f2b14052337465768c07726936a260f480f0857cb95ba543" +dependencies = [ + "cfg-if", + "indoc", + "libc", + "memoffset", + "parking_lot", + "pyo3-build-config 0.17.3", + "pyo3-ffi", + "pyo3-macros", + "unindent", +] + +[[package]] +name = "pyo3-build-config" +version = "0.17.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28fcd1e73f06ec85bf3280c48c67e731d8290ad3d730f8be9dc07946923005c8" +dependencies = [ + "once_cell", + "target-lexicon", +] + +[[package]] +name = "pyo3-build-config" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7" +dependencies = [ + "once_cell", + "target-lexicon", +] + +[[package]] +name = "pyo3-ffi" +version = "0.17.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f6cb136e222e49115b3c51c32792886defbfb0adead26a688142b346a0b9ffc" +dependencies = [ + "libc", + "pyo3-build-config 0.17.3", +] + +[[package]] +name = "pyo3-macros" +version = "0.17.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94144a1266e236b1c932682136dc35a9dee8d3589728f68130c7c3861ef96b28" +dependencies = [ + "proc-macro2", + "pyo3-macros-backend", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "pyo3-macros-backend" +version = "0.17.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8df9be978a2d2f0cdebabb03206ed73b11314701a5bfe71b0d753b81997777f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "rfc6979" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" +dependencies = [ + "crypto-bigint", + "hmac", + "zeroize", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sec1" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +dependencies = [ + "base16ct", + "der", + "generic-array", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c42e6f1735c5f00f51e43e28d6634141f2bcad10931b2609ddd74a86d751260" +dependencies = [ + "secp256k1-sys 0.4.2", +] + +[[package]] +name = "secp256k1" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" +dependencies = [ + "bitcoin_hashes", + "secp256k1-sys 0.6.1", +] + +[[package]] +name = "secp256k1-sys" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957da2573cde917463ece3570eab4a0b3f19de6f1646cde62e6fd3868f566036" +dependencies = [ + "cc", +] + +[[package]] +name = "secp256k1-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" +dependencies = [ + "cc", +] + +[[package]] +name = "semver" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.196" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.196" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "serde_json" +version = "1.0.113" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha256" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18278f6a914fa3070aa316493f7d2ddfb9ac86ebc06fa3b83bffda487e9065b0" +dependencies = [ + "async-trait", + "bytes", + "hex", + "sha2 0.10.8", + "tokio", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "smallvec" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "target-lexicon" +version = "0.12.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" + +[[package]] +name = "thiserror" +version = "1.0.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "time" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tokio" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +dependencies = [ + "backtrace", + "bytes", + "pin-project-lite", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unindent" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c" + +[[package]] +name = "vergen" +version = "8.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e27d6bdd219887a9eadd19e1c34f32e47fa332301184935c6d9bca26f3cca525" +dependencies = [ + "anyhow", + "cargo_metadata", + "cfg-if", + "regex", + "rustc_version", + "rustversion", + "time", +] + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" diff --git a/counterparty-rs/Cargo.toml b/counterparty-rs/Cargo.toml new file mode 100644 index 0000000000..33de019577 --- /dev/null +++ b/counterparty-rs/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "counterparty-rs" +version = "10.0.0-alpha" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[lib] +name = "counterparty_rs" +crate-type = ["cdylib"] + +[dependencies] +pyo3 = { version = "0.17.3", features = ["extension-module", "abi3-py37"] } +bs58 = { version = "0.4.0", features = ["check"] } +# secp256k1 = "0.25.0" +bip32 = { version = "0.4.0", features = ["secp256k1-ffi"] } +ripemd = "0.1.3" +sha256 = "1.1.1" +bitcoin = "0.29.2" +par-map = "0.1.4" + +[build-dependencies] +vergen = { version = "8.2.6", features = ["build", "cargo", "git", "gitcl", "rustc"] } +pyo3-build-config = "0.20.3" diff --git a/counterparty-rs/README.md b/counterparty-rs/README.md new file mode 100644 index 0000000000..d61f32ec9e --- /dev/null +++ b/counterparty-rs/README.md @@ -0,0 +1,6 @@ +# counterparty_rs + +Rust and pyo3-based speed-ups for `counterparty-lib`. + +This is a rust-based python wheel that wraps [rust-bitcoin](https://docs.rs/bitcoin/latest/bitcoin/). + diff --git a/counterparty-rs/build.rs b/counterparty-rs/build.rs new file mode 100644 index 0000000000..ae62692835 --- /dev/null +++ b/counterparty-rs/build.rs @@ -0,0 +1,18 @@ +// build.rs +use std::error::Error; +use vergen::EmitBuilder; + + +fn main() -> Result<(), Box> { + + pyo3_build_config::add_extension_module_link_args(); + + // Emit the instructions + EmitBuilder::builder() + .all_build() + .all_git() + .all_cargo() + .emit()?; + Ok(()) +} + diff --git a/counterparty-rs/pyproject.toml b/counterparty-rs/pyproject.toml new file mode 100644 index 0000000000..f6a8013c14 --- /dev/null +++ b/counterparty-rs/pyproject.toml @@ -0,0 +1,25 @@ +[build-system] +requires = ["maturin>=0.14,<0.15"] +build-backend = "maturin" + +[project] +name = "counterparty-rs" +dynamic = ["version"] +repository = "https://github.com/CounterpartyXCP/counterparty-core" +requires-python = ">=3.10" +license = { text = "MIT" } +classifiers = [ + "Programming Language :: Rust", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", +] +dependencies = [ + "python-bitcoinlib==0.12.2", +] + + +[tool.maturin] +strip = true + +[tool.hatch.version] +path = "../counterparty-lib/counterpartylib/lib/config.py" diff --git a/counterparty-rs/src/b58.rs b/counterparty-rs/src/b58.rs new file mode 100644 index 0000000000..2c1dce84da --- /dev/null +++ b/counterparty-rs/src/b58.rs @@ -0,0 +1,36 @@ +use pyo3::prelude::*; +use pyo3::types::PyBytes; + +#[pyfunction] +fn b58_encode(decoded: &[u8]) -> String { + bs58::encode(decoded).with_check().into_string() +} + +#[pyfunction] +fn b58_encode_list(decoded_list: Vec<&[u8]>) -> Vec { + decoded_list.iter().map(|x| b58_encode(x)).collect() +} + +#[pyfunction] +fn b58_decode<'p>(py: Python<'p>, encoded: &str) -> &'p PyBytes { + let s = bs58::decode(encoded) + .with_check(None) + .into_vec() + .expect("bad"); + PyBytes::new(py, &s) +} + +#[pyfunction] +fn b58_decode_list<'p>(py: Python<'p>, encoded_list: Vec<&str>) -> Vec<&'p PyBytes> { + encoded_list.iter().map(|x| b58_decode(py, x)).collect() +} + +/// A Python module implemented in Rust. +pub fn create_b58_module(py: Python) -> PyResult<&'_ PyModule> { + let m = PyModule::new(py, "b58")?; + m.add_function(wrap_pyfunction!(b58_encode, m)?)?; + m.add_function(wrap_pyfunction!(b58_encode_list, m)?)?; + m.add_function(wrap_pyfunction!(b58_decode, m)?)?; + m.add_function(wrap_pyfunction!(b58_decode_list, m)?)?; + Ok(m) +} diff --git a/counterparty-rs/src/lib.rs b/counterparty-rs/src/lib.rs new file mode 100644 index 0000000000..254704d2cd --- /dev/null +++ b/counterparty-rs/src/lib.rs @@ -0,0 +1,31 @@ +mod b58; +mod utils; + +use b58::create_b58_module; +use utils::create_utils_module; + +use pyo3::prelude::*; +use pyo3::types::PyString; + + +/// A Python module implemented in Rust. +#[pymodule] +fn counterparty_rs(py: Python, m: &PyModule) -> PyResult<()> { + m.add_submodule(create_b58_module(py)?)?; + m.add_submodule(create_utils_module(py)?)?; + + m.add( + "__version__", + PyString::new(py, env!("VERGEN_GIT_DESCRIBE")), + )?; + m.add("__sha__", PyString::new(py, env!("VERGEN_GIT_SHA")))?; + m.add( + "__target__", + PyString::new(py, env!("VERGEN_CARGO_TARGET_TRIPLE")), + )?; + m.add( + "__build_date__", + PyString::new(py, env!("VERGEN_BUILD_DATE")), + )?; + Ok(()) +} diff --git a/counterparty-rs/src/utils.rs b/counterparty-rs/src/utils.rs new file mode 100644 index 0000000000..c957073d32 --- /dev/null +++ b/counterparty-rs/src/utils.rs @@ -0,0 +1,299 @@ +use pyo3::prelude::*; +use pyo3::types::PyBytes; +use pyo3::wrap_pyfunction; +use bitcoin::{Address, Network}; +use bitcoin::util::address::{Payload, WitnessVersion}; +use bitcoin::blockdata::script::{Script, Instruction}; +use bitcoin::blockdata::opcodes; +use bitcoin::blockdata::opcodes::all::*; +use std::panic; + +#[pyfunction] +fn inverse_hash(hashstring: &str) -> String { + hashstring + .chars() + .rev() + .collect::>() + .chunks(2) + .flat_map(|chunk| chunk.iter().rev()) + .collect::() +} + + +#[pyfunction] +fn script_to_address(script_pubkey: Vec, network: &str) -> PyResult { + // Convert the script pubkey to a Script object + let script = Script::from(script_pubkey); + + // Convert the network string to a Network enum value + let network_enum = match network { + "mainnet" => Network::Bitcoin, + "testnet" => Network::Testnet, + "signet" => Network::Signet, + "regtest" => Network::Regtest, + _ => return Err(PyErr::new::("Invalid network value")), + }; + if script.is_witness_program() { + // This block below is necessary to reproduce a prior truncation bug in the python codebase. + let version = match WitnessVersion::try_from(opcodes::All::from(script[0])) { + Ok(vers) => vers, + Err(_) => return Err(PyErr::new::("Invalid version value")), + }; + + let address = Address { + payload: Payload::WitnessProgram { + version: version, + program: script[2..22].to_vec(), + }, + network: network_enum, + }; + Ok(address.to_string()) + } else { + /* + * the code below is correct, but not sure about the invocation path + * and untested bug compatibility + */ + let _address = match Address::from_script(&script, network_enum) { + Ok(addr) => addr, + Err(_) => return Err(PyErr::new::("Failed to derive address")), + }; + panic!("we thought this shouldn't happen!"); + //Ok(address.to_string()) + } +} + + +#[pyfunction] +fn script_to_asm(script_bytes: Vec, py: Python) -> PyResult> { + // Wrap the code block that may panic inside `catch_unwind()` + let result = panic::catch_unwind(|| { + let script = Script::from(script_bytes); + + let mut asm: Vec = Vec::new(); + + for instruction in script.instructions() { + match instruction { + Ok(instr) => { + let py_instruction = match instr { + Instruction::Op(op) => opcode_to_bytes(op), + Instruction::PushBytes(data) => data.to_vec(), + }; + asm.push(PyBytes::new(py, &py_instruction).into()); + }, + Err(_) => { + return Err(PyErr::new::("Error processing script")); + } + } + } + + Ok(asm) + }); + + // Handle the result of `catch_unwind()` + match result { + Ok(Ok(value)) => Ok(value), // If there was no panic, return the result + Ok(Err(err)) => Err(err), // If there was a panic and it returned an error, return that error + Err(_) => Err(PyErr::new::("Panic occurred")), // If there was a panic but it didn't return an error, return a custom error + } +} + + +fn opcode_to_bytes(opcode: bitcoin::blockdata::opcodes::All) -> Vec { + match opcode { + OP_PUSHBYTES_0 => vec![0x00], + OP_PUSHBYTES_1 => vec![0x01], + OP_PUSHBYTES_2 => vec![0x02], + OP_PUSHBYTES_3 => vec![0x03], + OP_PUSHBYTES_4 => vec![0x04], + OP_PUSHBYTES_5 => vec![0x05], + OP_PUSHBYTES_6 => vec![0x06], + OP_PUSHBYTES_7 => vec![0x07], + OP_PUSHBYTES_8 => vec![0x08], + OP_PUSHBYTES_9 => vec![0x09], + OP_PUSHBYTES_10 => vec![0x0a], + OP_PUSHBYTES_11 => vec![0x0b], + OP_PUSHBYTES_12 => vec![0x0c], + OP_PUSHBYTES_13 => vec![0x0d], + OP_PUSHBYTES_14 => vec![0x0e], + OP_PUSHBYTES_15 => vec![0x0f], + OP_PUSHBYTES_16 => vec![0x10], + OP_PUSHBYTES_17 => vec![0x11], + OP_PUSHBYTES_18 => vec![0x12], + OP_PUSHBYTES_19 => vec![0x13], + OP_PUSHBYTES_20 => vec![0x14], + OP_PUSHBYTES_21 => vec![0x15], + OP_PUSHBYTES_22 => vec![0x16], + OP_PUSHBYTES_23 => vec![0x17], + OP_PUSHBYTES_24 => vec![0x18], + OP_PUSHBYTES_25 => vec![0x19], + OP_PUSHBYTES_26 => vec![0x1a], + OP_PUSHBYTES_27 => vec![0x1b], + OP_PUSHBYTES_28 => vec![0x1c], + OP_PUSHBYTES_29 => vec![0x1d], + OP_PUSHBYTES_30 => vec![0x1e], + OP_PUSHBYTES_31 => vec![0x1f], + OP_PUSHBYTES_32 => vec![0x20], + OP_PUSHBYTES_33 => vec![0x21], + OP_PUSHBYTES_34 => vec![0x22], + OP_PUSHBYTES_35 => vec![0x23], + OP_PUSHBYTES_36 => vec![0x24], + OP_PUSHBYTES_37 => vec![0x25], + OP_PUSHBYTES_38 => vec![0x26], + OP_PUSHBYTES_39 => vec![0x27], + OP_PUSHBYTES_40 => vec![0x28], + OP_PUSHBYTES_41 => vec![0x29], + OP_PUSHBYTES_42 => vec![0x2a], + OP_PUSHBYTES_43 => vec![0x2b], + OP_PUSHBYTES_44 => vec![0x2c], + OP_PUSHBYTES_45 => vec![0x2d], + OP_PUSHBYTES_46 => vec![0x2e], + OP_PUSHBYTES_47 => vec![0x2f], + OP_PUSHBYTES_48 => vec![0x30], + OP_PUSHBYTES_49 => vec![0x31], + OP_PUSHBYTES_50 => vec![0x32], + OP_PUSHBYTES_51 => vec![0x33], + OP_PUSHBYTES_52 => vec![0x34], + OP_PUSHBYTES_53 => vec![0x35], + OP_PUSHBYTES_54 => vec![0x36], + OP_PUSHBYTES_55 => vec![0x37], + OP_PUSHBYTES_56 => vec![0x38], + OP_PUSHBYTES_57 => vec![0x39], + OP_PUSHBYTES_58 => vec![0x3a], + OP_PUSHBYTES_59 => vec![0x3b], + OP_PUSHBYTES_60 => vec![0x3c], + OP_PUSHBYTES_61 => vec![0x3d], + OP_PUSHBYTES_62 => vec![0x3e], + OP_PUSHBYTES_63 => vec![0x3f], + OP_PUSHBYTES_64 => vec![0x40], + OP_PUSHBYTES_65 => vec![0x41], + OP_PUSHBYTES_66 => vec![0x42], + OP_PUSHBYTES_67 => vec![0x43], + OP_PUSHBYTES_68 => vec![0x44], + OP_PUSHBYTES_69 => vec![0x45], + OP_PUSHBYTES_70 => vec![0x46], + OP_PUSHBYTES_71 => vec![0x47], + OP_PUSHBYTES_72 => vec![0x48], + OP_PUSHBYTES_73 => vec![0x49], + OP_PUSHBYTES_74 => vec![0x4a], + OP_PUSHBYTES_75 => vec![0x4b], + OP_PUSHDATA1 => vec![0x4c], + OP_PUSHDATA2 => vec![0x4d], + OP_PUSHDATA4 => vec![0x4e], + OP_RESERVED => vec![0x50], + OP_NOP => vec![0x61], + OP_VER => vec![0x62], + OP_IF => vec![0x63], + OP_NOTIF => vec![0x64], + OP_VERIF => vec![0x65], + OP_VERNOTIF => vec![0x66], + OP_ELSE => vec![0x67], + OP_ENDIF => vec![0x68], + OP_VERIFY => vec![0x69], + OP_RETURN => vec![0x6a], + OP_TOALTSTACK => vec![0x6b], + OP_FROMALTSTACK => vec![0x6c], + OP_2DROP => vec![0x6d], + OP_2DUP => vec![0x6e], + OP_3DUP => vec![0x6f], + OP_2OVER => vec![0x70], + OP_2ROT => vec![0x71], + OP_2SWAP => vec![0x72], + OP_IFDUP => vec![0x73], + OP_DEPTH => vec![0x74], + OP_DROP => vec![0x75], + OP_DUP => vec![0x76], + OP_NIP => vec![0x77], + OP_OVER => vec![0x78], + OP_PICK => vec![0x79], + OP_ROLL => vec![0x7a], + OP_ROT => vec![0x7b], + OP_SWAP => vec![0x7c], + OP_TUCK => vec![0x7d], + OP_CAT => vec![0x7e], + OP_SUBSTR => vec![0x7f], + OP_LEFT => vec![0x80], + OP_RIGHT => vec![0x81], + OP_SIZE => vec![0x82], + OP_INVERT => vec![0x83], + OP_AND => vec![0x84], + OP_OR => vec![0x85], + OP_XOR => vec![0x86], + OP_EQUAL => vec![0x87], + OP_EQUALVERIFY => vec![0x88], + OP_RESERVED1 => vec![0x89], + OP_RESERVED2 => vec![0x8a], + OP_1ADD => vec![0x8b], + OP_1SUB => vec![0x8c], + OP_2MUL => vec![0x8d], + OP_2DIV => vec![0x8e], + OP_NEGATE => vec![0x8f], + OP_ABS => vec![0x90], + OP_NOT => vec![0x91], + OP_0NOTEQUAL => vec![0x92], + OP_ADD => vec![0x93], + OP_SUB => vec![0x94], + OP_MUL => vec![0x95], + OP_DIV => vec![0x96], + OP_MOD => vec![0x97], + OP_LSHIFT => vec![0x98], + OP_RSHIFT => vec![0x99], + OP_BOOLAND => vec![0x9a], + OP_BOOLOR => vec![0x9b], + OP_NUMEQUAL => vec![0x9c], + OP_NUMEQUALVERIFY => vec![0x9d], + OP_NUMNOTEQUAL => vec![0x9e], + OP_LESSTHAN => vec![0x9f], + OP_GREATERTHAN => vec![0xa0], + OP_LESSTHANOREQUAL => vec![0xa1], + OP_GREATERTHANOREQUAL => vec![0xa2], + OP_MIN => vec![0xa3], + OP_MAX => vec![0xa4], + OP_WITHIN => vec![0xa5], + OP_RIPEMD160 => vec![0xa6], + OP_SHA1 => vec![0xa7], + OP_SHA256 => vec![0xa8], + OP_HASH160 => vec![0xa9], + OP_HASH256 => vec![0xaa], + OP_CODESEPARATOR => vec![0xab], + OP_CHECKSIG => vec![0xac], + OP_CHECKSIGVERIFY => vec![0xad], + OP_CHECKMULTISIG => vec![0xae], + OP_CHECKMULTISIGVERIFY => vec![0xaf], + OP_NOP1 => vec![0xb0], + OP_NOP4 => vec![0xb3], + OP_NOP5 => vec![0xb4], + OP_NOP6 => vec![0xb5], + OP_NOP7 => vec![0xb6], + OP_NOP8 => vec![0xb7], + OP_NOP9 => vec![0xb8], + OP_NOP10 => vec![0xb9], + OP_INVALIDOPCODE => vec![0xff], + OP_PUSHNUM_1 => vec![0x01], + OP_PUSHNUM_2 => vec![0x02], + OP_PUSHNUM_3 => vec![0x03], + OP_PUSHNUM_4 => vec![0x04], + OP_PUSHNUM_5 => vec![0x05], + OP_PUSHNUM_6 => vec![0x06], + OP_PUSHNUM_7 => vec![0x07], + OP_PUSHNUM_8 => vec![0x08], + OP_PUSHNUM_9 => vec![0x09], + OP_PUSHNUM_10 => vec![0x0a], + OP_PUSHNUM_11 => vec![0x0b], + OP_PUSHNUM_12 => vec![0x0c], + OP_PUSHNUM_13 => vec![0x0d], + OP_PUSHNUM_14 => vec![0x0e], + OP_PUSHNUM_15 => vec![0x0f], + OP_PUSHNUM_16 => vec![0x10], + _ => vec![0xff], + } +} + + +/// A Python module implemented in Rust. +pub fn create_utils_module(py: Python) -> PyResult<&'_ PyModule> { + let m = PyModule::new(py, "utils")?; + m.add_function(wrap_pyfunction!(inverse_hash, m)?)?; + m.add_function(wrap_pyfunction!(script_to_asm, m)?)?; + m.add_function(wrap_pyfunction!(script_to_address, m)?)?; + Ok(m) +} diff --git a/counterparty-rs/tests/test_b58.py b/counterparty-rs/tests/test_b58.py new file mode 100644 index 0000000000..b08cd886d5 --- /dev/null +++ b/counterparty-rs/tests/test_b58.py @@ -0,0 +1,5 @@ +from counterparty_rs import b58 + +# TODO +def test_b58_check_decode(): + pass diff --git a/counterparty-rs/tests/test_utils.py b/counterparty-rs/tests/test_utils.py new file mode 100644 index 0000000000..1b066f5beb --- /dev/null +++ b/counterparty-rs/tests/test_utils.py @@ -0,0 +1,79 @@ +import time +import binascii + +from counterparty_rs import utils +import bitcoin as bitcoinlib +from bitcoin import bech32 as bech32lib + +def decode_p2w(script_pubkey): + try: + bech32 = bech32lib.CBech32Data.from_bytes(0, script_pubkey[2:22]) + return str(bech32), None + except TypeError as e: + raise Exception('bech32 decoding error') + + +def inverse_hash_py(hashstring): + return ''.join([hashstring[i:i+2][::-1] for i in range(0, len(hashstring), 2)])[::-1] + + +def test_inverse_hash(): + h = "b5276739a3e0f32147bd4a921f936c6013dee4a5ca426ee2de868810b068ec0d" + assert utils.inverse_hash(h) == "0dec68b0108886dee26e42caa5e4de13606c931f924abd4721f3e0a3396727b5" + + #iterations = 1000000 + iterations = 10 + + start_time = time.time() + for i in range(iterations): + inverse_hash_py(h) + python_duration = time.time() - start_time + print(f'{iterations} inverse hash with python: {python_duration}s') + + start_time = time.time() + for i in range(iterations): + utils.inverse_hash(h) + rust_duration = time.time() - start_time + print(f'{iterations} inverse hash with rust: {rust_duration}s') + + assert python_duration > rust_duration + + +def test_script_to_asm(): + asm = utils.script_to_asm(b'v\xa9\x14H8\xd8\xb3X\x8cL{\xa7\xc1\xd0o\x86n\x9b79\xc607\x88\xac') + assert asm == [b'v', b'\xa9', b'H8\xd8\xb3X\x8cL{\xa7\xc1\xd0o\x86n\x9b79\xc607', b'\x88', b'\xac'] + """ [ + 'OP_DUP', + 'OP_HASH160', + b'H8\xd8\xb3X\x8cL{\xa7\xc1\xd0o\x86n\x9b79\xc607', + 'OP_EQUALVERIFY', + 'OP_CHECKSIG' + ] """ + + asm = utils.script_to_asm(b'Q!\x03\\\xa5\x1e\xa1u\xf1\x08\xa1\xc65\x88h=\xc4\xc4:qF\xc4g\x99\xf8d\xa3\x00&<\x08\x13\xf5\xfe5!\x020\x9a\x14\xa1\xa3\x02\x02\xf2\xe7oF\xac\xdb)\x17u#q\xcaB\xb9t`\xf7\x92\x8a\xde\x8e\xcb\x02\xea\x17!\x03\x19\xf6\xe0{\x0b\x8duaV9K\x9d\xcf;\x01\x1f\xe9\xac\x19\xf2p\x0b\xd6\xb6\x9aj\x17\x83\xdb\xb8\xb9wS\xae') + assert asm == [ + b'\x01', + b'\x03\\\xa5\x1e\xa1u\xf1\x08\xa1\xc65\x88h=\xc4\xc4:qF\xc4g\x99\xf8d\xa3\x00&<\x08\x13\xf5\xfe5', + b'\x020\x9a\x14\xa1\xa3\x02\x02\xf2\xe7oF\xac\xdb)\x17u#q\xcaB\xb9t`\xf7\x92\x8a\xde\x8e\xcb\x02\xea\x17', + b'\x03\x19\xf6\xe0{\x0b\x8duaV9K\x9d\xcf;\x01\x1f\xe9\xac\x19\xf2p\x0b\xd6\xb6\x9aj\x17\x83\xdb\xb8\xb9w', + b'\x03', + b'\xae' # OP_CHECKMULTISIG + ] + +def test_decode_p2w(): + script_pubkey = b'\x00\x14u\x1ev\xe8\x19\x91\x96\xd4T\x94\x1cE\xd1\xb3\xa3#\xf1C;\xd6' + bech32 = utils.script_to_address(script_pubkey, 'testnet') + assert bech32 == "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx" + + bech32 = utils.script_to_address(script_pubkey, 'mainnet') + assert bech32 == "bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4" + + assert decode_p2w(script_pubkey)[0] == utils.script_to_address(script_pubkey, 'mainnet') + + script_pubkey = binascii.unhexlify("0020dcbc2340bd1f6cc3ab0a3887020647ec471a279e3c889fb4414df30e3dd59f96") + assert decode_p2w(script_pubkey) == ("bc1qmj7zxs9arakv82c28zrsypj8a3r35fu7pure55", None) + assert decode_p2w(script_pubkey)[0] == utils.script_to_address(script_pubkey, 'mainnet') + + script_pubkey = binascii.unhexlify("0020dfe1739dc0711f64ced999a2306691ff98fff038b2f40aec2b5ae917610ea0ac") + assert decode_p2w(script_pubkey) == ("bc1qmlsh88wqwy0kfnkenx3rqe53l7v0lupc6q5xx6", None) + assert decode_p2w(script_pubkey)[0] == utils.script_to_address(script_pubkey, 'mainnet') diff --git a/counterpartylib/lib/blocks.py b/counterpartylib/lib/blocks.py deleted file mode 100644 index f10f6d8f47..0000000000 --- a/counterpartylib/lib/blocks.py +++ /dev/null @@ -1,1650 +0,0 @@ -""" -Initialise database. - -Sieve blockchain for Counterparty transactions, and add them to the database. -""" - -import os -import time -import binascii -import struct -import decimal -D = decimal.Decimal -import logging -logger = logging.getLogger(__name__) -import collections -import platform -import apsw -import csv -import copy -import http - -import bitcoin as bitcoinlib -from bitcoin.core.script import CScriptInvalidError - -from counterpartylib.lib import config -from counterpartylib.lib import exceptions -from counterpartylib.lib import util -from counterpartylib.lib import check -from counterpartylib.lib import script -from counterpartylib.lib import backend -from counterpartylib.lib import log -from counterpartylib.lib import database -from counterpartylib.lib import message_type -from counterpartylib.lib import arc4 -from counterpartylib.lib.transaction_helper import p2sh_encoding - -from .messages import (send, order, btcpay, issuance, broadcast, bet, dividend, burn, cancel, rps, rpsresolve, destroy, sweep, dispenser) -from .messages.versions import enhanced_send, mpma - -from .kickstart.blocks_parser import BlockchainParser, ChainstateParser -from .kickstart.utils import ib2h - -from .exceptions import DecodeError, BTCOnlyError - -# Order matters for FOREIGN KEY constraints. -TABLES = ['credits', 'debits', 'messages'] + \ - ['bet_match_resolutions', 'order_match_expirations', 'order_matches', - 'order_expirations', 'orders', 'bet_match_expirations', 'bet_matches', - 'bet_expirations', 'bets', 'broadcasts', 'btcpays', 'burns', - 'cancels', 'dividends', 'issuances', 'sends', - 'rps_match_expirations', 'rps_expirations', 'rpsresolves', - 'rps_matches', 'rps', - 'destructions', 'assets', 'addresses', 'sweeps', 'dispensers', 'dispenses', - 'dispenser_refills'] -# Compose list of tables tracked by undolog -UNDOLOG_TABLES = copy.copy(TABLES) -UNDOLOG_TABLES.remove('messages') -UNDOLOG_TABLES += ['balances'] - -CURR_DIR = os.path.dirname(os.path.realpath(__file__)) -with open(CURR_DIR + '/../mainnet_burns.csv', 'r') as f: - mainnet_burns_reader = csv.DictReader(f) - MAINNET_BURNS = {} - for line in mainnet_burns_reader: - MAINNET_BURNS[line['tx_hash']] = line - -def parse_tx(db, tx): - """Parse the transaction, return True for success.""" - cursor = db.cursor() - - try: - with db: - # Only one source and one destination allowed for now. - if len(tx['source'].split('-')) > 1: - return - if tx['destination']: - if len(tx['destination'].split('-')) > 1: - return - - # Burns. - if tx['destination'] == config.UNSPENDABLE: - burn.parse(db, tx, MAINNET_BURNS) - return - - if len(tx['data']) > 1: - try: - message_type_id, message = message_type.unpack(tx['data'], tx['block_index']) - except struct.error: # Deterministically raised. - message_type_id = None - message = None - else: - message_type_id = None - message = None - - # Protocol change. - rps_enabled = tx['block_index'] >= 308500 or config.TESTNET or config.REGTEST - - if message_type_id == send.ID: - send.parse(db, tx, message) - elif message_type_id == enhanced_send.ID and util.enabled('enhanced_sends', block_index=tx['block_index']): - enhanced_send.parse(db, tx, message) - elif message_type_id == mpma.ID and util.enabled('mpma_sends', block_index=tx['block_index']): - mpma.parse(db, tx, message) - elif message_type_id == order.ID: - order.parse(db, tx, message) - elif message_type_id == btcpay.ID: - btcpay.parse(db, tx, message) - elif message_type_id == issuance.ID or (util.enabled("issuance_backwards_compatibility", block_index=tx['block_index']) and message_type_id == issuance.LR_ISSUANCE_ID): - issuance.parse(db, tx, message, message_type_id) - elif (message_type_id == issuance.SUBASSET_ID and util.enabled('subassets', block_index=tx['block_index'])) or (util.enabled("issuance_backwards_compatibility", block_index=tx['block_index']) and message_type_id == issuance.LR_SUBASSET_ID): - issuance.parse(db, tx, message, message_type_id) - elif message_type_id == broadcast.ID: - broadcast.parse(db, tx, message) - elif message_type_id == bet.ID: - bet.parse(db, tx, message) - elif message_type_id == dividend.ID: - dividend.parse(db, tx, message) - elif message_type_id == cancel.ID: - cancel.parse(db, tx, message) - elif message_type_id == rps.ID and rps_enabled: - rps.parse(db, tx, message) - elif message_type_id == rpsresolve.ID and rps_enabled: - rpsresolve.parse(db, tx, message) - elif message_type_id == destroy.ID and util.enabled('destroy_reactivated', block_index=tx['block_index']): - destroy.parse(db, tx, message) - elif message_type_id == sweep.ID and util.enabled('sweep_send', block_index=tx['block_index']): - sweep.parse(db, tx, message) - elif message_type_id == dispenser.ID and util.enabled('dispensers', block_index=tx['block_index']): - dispenser.parse(db, tx, message) - elif message_type_id == dispenser.DISPENSE_ID and util.enabled('dispensers', block_index=tx['block_index']): - dispenser.dispense(db, tx) - else: - cursor.execute('''UPDATE transactions \ - SET supported=? \ - WHERE tx_hash=?''', - (False, tx['tx_hash'])) - if tx['block_index'] != config.MEMPOOL_BLOCK_INDEX: - logger.info('Unsupported transaction: hash {}; data {}'.format(tx['tx_hash'], tx['data'])) - cursor.close() - return False - - # NOTE: for debugging (check asset conservation after every `N` transactions). - # if not tx['tx_index'] % N: - # check.asset_conservation(db) - - return True - except Exception as e: - raise exceptions.ParseTransactionError("%s" % e) - finally: - cursor.close() - - -def parse_block(db, block_index, block_time, - previous_ledger_hash=None, ledger_hash=None, - previous_txlist_hash=None, txlist_hash=None, - previous_messages_hash=None): - """Parse the block, return hash of new ledger, txlist and messages. - - The unused arguments `ledger_hash` and `txlist_hash` are for the test suite. - """ - undolog_cursor = db.cursor() - #remove the row tracer and exec tracer on this cursor, so we don't utilize them with undolog operations... - undolog_cursor.setexectrace(None) - undolog_cursor.setrowtrace(None) - - util.BLOCK_LEDGER = [] - database.BLOCK_MESSAGES = [] - - assert block_index == util.CURRENT_BLOCK_INDEX - - # Remove undolog records for any block older than we should be tracking - undolog_oldest_block_index = block_index - config.UNDOLOG_MAX_PAST_BLOCKS - first_undo_index = list(undolog_cursor.execute('''SELECT first_undo_index FROM undolog_block WHERE block_index == ?''', - (undolog_oldest_block_index,))) - if len(first_undo_index) == 1 and first_undo_index[0] is not None: - undolog_cursor.execute('''DELETE FROM undolog WHERE undo_index < ?''', (first_undo_index[0][0],)) - undolog_cursor.execute('''DELETE FROM undolog_block WHERE block_index < ?''', - (undolog_oldest_block_index,)) - - # Set undolog barrier for this block - if block_index != config.BLOCK_FIRST: - undolog_cursor.execute('''INSERT OR REPLACE INTO undolog_block(block_index, first_undo_index) - SELECT ?, seq+1 FROM SQLITE_SEQUENCE WHERE name='undolog' ''', (block_index,)) - else: - undolog_cursor.execute('''INSERT OR REPLACE INTO undolog_block(block_index, first_undo_index) - VALUES(?,?)''', (block_index, 1,)) - undolog_cursor.close() - - # Expire orders, bets and rps. - order.expire(db, block_index) - bet.expire(db, block_index, block_time) - rps.expire(db, block_index) - - # Close dispensers - dispenser.close_pending(db, block_index) - - # Parse transactions, sorting them by type. - cursor = db.cursor() - cursor.execute('''SELECT * FROM transactions \ - WHERE block_index=? ORDER BY tx_index''', - (block_index,)) - txlist = [] - for tx in list(cursor): - try: - parse_tx(db, tx) - txlist.append('{}{}{}{}{}{}'.format(tx['tx_hash'], tx['source'], tx['destination'], - tx['btc_amount'], tx['fee'], - binascii.hexlify(tx['data']).decode('UTF-8'))) - except exceptions.ParseTransactionError as e: - logger.warn('ParseTransactionError for tx %s: %s' % (tx['tx_hash'], e)) - raise e - #pass - - cursor.close() - - # Calculate consensus hashes. - new_txlist_hash, found_txlist_hash = check.consensus_hash(db, 'txlist_hash', previous_txlist_hash, txlist) - new_ledger_hash, found_ledger_hash = check.consensus_hash(db, 'ledger_hash', previous_ledger_hash, util.BLOCK_LEDGER) - new_messages_hash, found_messages_hash = check.consensus_hash(db, 'messages_hash', previous_messages_hash, database.BLOCK_MESSAGES) - - return new_ledger_hash, new_txlist_hash, new_messages_hash, found_messages_hash - - -def initialise(db): - """Initialise data, create and populate the database.""" - cursor = db.cursor() - - # Blocks - cursor.execute('''CREATE TABLE IF NOT EXISTS blocks( - block_index INTEGER UNIQUE, - block_hash TEXT UNIQUE, - block_time INTEGER, - previous_block_hash TEXT UNIQUE, - difficulty INTEGER, - PRIMARY KEY (block_index, block_hash)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON blocks (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - index_hash_idx ON blocks (block_index, block_hash) - ''') - - # SQLite can’t do `ALTER TABLE IF COLUMN NOT EXISTS`. - columns = [column['name'] for column in cursor.execute('''PRAGMA table_info(blocks)''')] - if 'ledger_hash' not in columns: - cursor.execute('''ALTER TABLE blocks ADD COLUMN ledger_hash TEXT''') - if 'txlist_hash' not in columns: - cursor.execute('''ALTER TABLE blocks ADD COLUMN txlist_hash TEXT''') - if 'messages_hash' not in columns: - cursor.execute('''ALTER TABLE blocks ADD COLUMN messages_hash TEXT''') - if 'previous_block_hash' not in columns: - cursor.execute('''ALTER TABLE blocks ADD COLUMN previous_block_hash TEXT''') - if 'difficulty' not in columns: - cursor.execute('''ALTER TABLE blocks ADD COLUMN difficulty TEXT''') - - # Check that first block in DB is BLOCK_FIRST. - cursor.execute('''SELECT * from blocks ORDER BY block_index''') - blocks = list(cursor) - if len(blocks): - if blocks[0]['block_index'] != config.BLOCK_FIRST: - raise exceptions.DatabaseError('First block in database is not block {}.'.format(config.BLOCK_FIRST)) - - # Transactions - cursor.execute('''CREATE TABLE IF NOT EXISTS transactions( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - block_hash TEXT, - block_time INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - fee INTEGER, - data BLOB, - supported BOOL DEFAULT 1, - FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), - PRIMARY KEY (tx_index, tx_hash, block_index)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON transactions (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - tx_index_idx ON transactions (tx_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - tx_hash_idx ON transactions (tx_hash) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - index_index_idx ON transactions (block_index, tx_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - index_hash_index_idx ON transactions (tx_index, tx_hash, block_index) - ''') - - # Purge database of blocks, transactions from before BLOCK_FIRST. - cursor.execute('''DELETE FROM blocks WHERE block_index < ?''', (config.BLOCK_FIRST,)) - cursor.execute('''DELETE FROM transactions WHERE block_index < ?''', (config.BLOCK_FIRST,)) - - - # (Valid) debits - cursor.execute('''CREATE TABLE IF NOT EXISTS debits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - action TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - address_idx ON debits (address) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - asset_idx ON debits (asset) - ''') - - # (Valid) credits - cursor.execute('''CREATE TABLE IF NOT EXISTS credits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - calling_function TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - address_idx ON credits (address) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - asset_idx ON credits (asset) - ''') - - # Balances - cursor.execute('''CREATE TABLE IF NOT EXISTS balances( - address TEXT, - asset TEXT, - quantity INTEGER) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - address_asset_idx ON balances (address, asset) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - address_idx ON balances (address) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - asset_idx ON balances (asset) - ''') - - # Assets - # TODO: Store more asset info here?! - cursor.execute('''CREATE TABLE IF NOT EXISTS assets( - asset_id TEXT UNIQUE, - asset_name TEXT UNIQUE, - block_index INTEGER, - asset_longname TEXT) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - name_idx ON assets (asset_name) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - id_idx ON assets (asset_id) - ''') - - # Add asset_longname for sub-assets - # SQLite can’t do `ALTER TABLE IF COLUMN NOT EXISTS`. - columns = [column['name'] for column in cursor.execute('''PRAGMA table_info(assets)''')] - if 'asset_longname' not in columns: - cursor.execute('''ALTER TABLE assets ADD COLUMN asset_longname TEXT''') - cursor.execute('''CREATE UNIQUE INDEX IF NOT EXISTS asset_longname_idx ON assets(asset_longname)''') - - cursor.execute('''SELECT * FROM assets WHERE asset_name = ?''', ('BTC',)) - if not list(cursor): - cursor.execute('''INSERT INTO assets VALUES (?,?,?,?)''', ('0', 'BTC', None, None)) - cursor.execute('''INSERT INTO assets VALUES (?,?,?,?)''', ('1', 'XCP', None, None)) - - # Addresses - # Leaving this here because in the future this could work for other things besides broadcast - cursor.execute('''CREATE TABLE IF NOT EXISTS addresses( - address TEXT UNIQUE, - options INTEGER, - block_index INTEGER) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - addresses_idx ON addresses (address) - ''') - - # Consolidated - send.initialise(db) - destroy.initialise(db) - order.initialise(db) - btcpay.initialise(db) - issuance.initialise(db) - broadcast.initialise(db) - bet.initialise(db) - dividend.initialise(db) - burn.initialise(db) - cancel.initialise(db) - rps.initialise(db) - rpsresolve.initialise(db) - sweep.initialise(db) - dispenser.initialise(db) - - # Messages - cursor.execute('''CREATE TABLE IF NOT EXISTS messages( - message_index INTEGER PRIMARY KEY, - block_index INTEGER, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER) - ''') - # TODO: FOREIGN KEY (block_index) REFERENCES blocks(block_index) DEFERRABLE INITIALLY DEFERRED) - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_idx ON messages (block_index) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - block_index_message_index_idx ON messages (block_index, message_index) - ''') - - # Create undolog tables - cursor.execute('''CREATE TABLE IF NOT EXISTS undolog( - undo_index INTEGER PRIMARY KEY AUTOINCREMENT, - sql TEXT) - ''') - cursor.execute('''CREATE TABLE IF NOT EXISTS undolog_block( - block_index INTEGER PRIMARY KEY, - first_undo_index INTEGER) - ''') - - cursor.execute('''CREATE TABLE IF NOT EXISTS transaction_outputs( - tx_index, - tx_hash TEXT, - block_index INTEGER, - out_index INTEGER, - destination TEXT, - btc_amount INTEGER, - PRIMARY KEY (tx_hash, out_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) - ''') - - - # Create undolog triggers for all tables in TABLES list, plus the 'balances' table - for table in UNDOLOG_TABLES: - columns = [column['name'] for column in cursor.execute('''PRAGMA table_info({})'''.format(table))] - cursor.execute('''CREATE TRIGGER IF NOT EXISTS _{}_insert AFTER INSERT ON {} BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM {} WHERE rowid='||new.rowid); - END; - '''.format(table, table, table)) - - columns_parts = ["{}='||quote(old.{})||'".format(c, c) for c in columns] - cursor.execute('''CREATE TRIGGER IF NOT EXISTS _{}_update AFTER UPDATE ON {} BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE {} SET {} WHERE rowid='||old.rowid); - END; - '''.format(table, table, table, ','.join(columns_parts))) - - columns_parts = ["'||quote(old.{})||'".format(c) for c in columns] - cursor.execute('''CREATE TRIGGER IF NOT EXISTS _{}_delete BEFORE DELETE ON {} BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO {}(rowid,{}) VALUES('||old.rowid||',{})'); - END; - '''.format(table, table, table, ','.join(columns), ','.join(columns_parts))) - # Drop undolog tables on messages table if they exist (fix for adding them in 9.52.0) - for trigger_type in ('insert', 'update', 'delete'): - cursor.execute("DROP TRIGGER IF EXISTS _messages_{}".format(trigger_type)) - - # Mempool messages - # NOTE: `status`, 'block_index` are removed from bindings. - cursor.execute('''DROP TABLE IF EXISTS mempool''') - cursor.execute('''CREATE TABLE mempool( - tx_hash TEXT, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER) - ''') - - cursor.close() - -def get_tx_info(tx_hex, block_parser=None, block_index=None, db=None): - """Get the transaction info. Returns normalized None data for DecodeError and BTCOnlyError.""" - try: - return _get_tx_info(tx_hex, block_parser, block_index) - except DecodeError as e: - return b'', None, None, None, None, None - except BTCOnlyError as e: - # NOTE: For debugging, logger.debug('Could not decode: ' + str(e)) - if util.enabled('dispensers', block_index): - try: - return b'', None, None, None, None, _get_swap_tx(e.decodedTx, block_parser, block_index, db=db) - except: # (DecodeError, backend.indexd.BackendRPCError) as e: - return b'', None, None, None, None, None - else: - return b'', None, None, None, None, None - -def _get_swap_tx(decoded_tx, block_parser=None, block_index=None, db=None): - def get_pubkeyhash(scriptpubkey): - asm = script.get_asm(scriptpubkey) - - if len(asm) > 0: - if asm[0] == "OP_DUP": - if len(asm) != 5 or asm[1] != 'OP_HASH160' or asm[3] != 'OP_EQUALVERIFY' or asm[4] != 'OP_CHECKSIG': - return False - else: - return {"pubkeyhash":asm[2],"address_version":config.ADDRESSVERSION} - elif (asm[0] == "OP_HASH160") and util.enabled('p2sh_dispensers_support'): - if len(asm) != 3 or asm[-1] != 'OP_EQUAL': - return False - else: - return {"pubkeyhash":asm[1],"address_version":config.P2SH_ADDRESSVERSION} - - return False - - def get_address(scriptpubkey): - if util.enabled('correct_segwit_txids') and scriptpubkey.is_witness_v0_keyhash(): - pubkey = scriptpubkey[2:] - address = str(bitcoinlib.bech32.CBech32Data.from_bytes(0, pubkey)) - return address - else: - pubkeyhashdict = get_pubkeyhash(scriptpubkey) - if not pubkeyhashdict: - return False - pubkeyhash = pubkeyhashdict["pubkeyhash"] - address_version = pubkeyhashdict["address_version"] - - pubkeyhash = binascii.hexlify(pubkeyhash).decode('utf-8') - address = script.base58_check_encode(pubkeyhash, address_version) - # Test decoding of address. - if address != config.UNSPENDABLE and binascii.unhexlify(bytes(pubkeyhash, 'utf-8')) != script.base58_check_decode(address, address_version): - return False - - return address - - outputs = [] - check_sources = db == None # If we didn't get passed a database cursor, assume we have to check for dispenser - for vout in decoded_tx.vout: - address = get_address(vout.scriptPubKey) - destination = None - btc_amount = None - if address: - destination = address - btc_amount = vout.nValue - elif util.enabled('hotfix_dispensers_with_non_p2pkh'): - asm = script.get_asm(vout.scriptPubKey) - if asm[-1] == 'OP_CHECKSIG': - destination, new_data = decode_checksig(asm, decoded_tx) - elif asm[-1] == 'OP_CHECKMULTISIG': - destination, new_data = decode_checkmultisig(asm, decoded_tx) - elif asm[0] == 'OP_HASH160' and asm[-1] == 'OP_EQUAL' and len(asm) == 3: - destination, new_data = decode_scripthash(asm) - elif asm[0] == 'OP_RETURN': - pass #Just ignore. - elif util.enabled('segwit_support') and asm[0] == 0: - # Segwit output - destination, new_data = decode_p2w(vout.scriptPubKey) - else: - logger.error('unrecognised scriptPubkey. Just ignore this: ' + str(asm)) - - if destination and not new_data: - amount = vout.nValue - else: - logger.error('cannot parse destination address or new_data found: ' + str(asm)) - - if db != None and dispenser.is_dispensable(db, destination, btc_amount): - check_sources = True - outputs.append((destination, btc_amount)) - - # Collect all (unique) source addresses. - # if we haven't found them yet - sources = [] - if check_sources: - for vin in decoded_tx.vin[:]: # Loop through inputs. - if block_parser: - vin_tx = block_parser.read_raw_transaction(ib2h(vin.prevout.hash)) - vin_ctx = backend.deserialize(vin_tx['__data__']) - else: - vin_tx = backend.getrawtransaction(ib2h(vin.prevout.hash)) # TODO: Biggest penalty on parsing is here - vin_ctx = backend.deserialize(vin_tx) - vout = vin_ctx.vout[vin.prevout.n] - - asm = script.get_asm(vout.scriptPubKey) - if asm[-1] == 'OP_CHECKSIG': - new_source, new_data = decode_checksig(asm, decoded_tx) - if new_data or not new_source: - raise DecodeError('data in source') - elif asm[-1] == 'OP_CHECKMULTISIG': - new_source, new_data = decode_checkmultisig(asm, decoded_tx) - if new_data or not new_source: - raise DecodeError('data in source') - elif asm[0] == 'OP_HASH160' and asm[-1] == 'OP_EQUAL' and len(asm) == 3: - new_source, new_data = decode_scripthash(asm) - if new_data or not new_source: - raise DecodeError('data in source') - elif util.enabled('segwit_support') and asm[0] == 0: - # Segwit output - # Get the full transaction data for this input transaction. - new_source, new_data = decode_p2w(vout.scriptPubKey) - else: - raise DecodeError('unrecognised source type') - - # old; append to sources, results in invalid addresses - # new; first found source is source, the rest can be anything (to fund the TX for example) - if not (util.enabled('first_input_is_source') and len(sources)): - # Collect unique sources. - if new_source not in sources: - sources.append(new_source) - - return (sources, outputs) - -def _get_tx_info(tx_hex, block_parser=None, block_index=None, p2sh_is_segwit=False): - """Get the transaction info. Calls one of two subfunctions depending on signature type.""" - if not block_index: - block_index = util.CURRENT_BLOCK_INDEX - if util.enabled('p2sh_addresses', block_index=block_index): # Protocol change. - return get_tx_info3(tx_hex, block_parser=block_parser, p2sh_is_segwit=p2sh_is_segwit) - elif util.enabled('multisig_addresses', block_index=block_index): # Protocol change. - return get_tx_info2(tx_hex, block_parser=block_parser) - else: - return get_tx_info1(tx_hex, block_index, block_parser=block_parser) - -def get_tx_info1(tx_hex, block_index, block_parser=None): - """Get singlesig transaction info. - The destination, if it exists, always comes before the data output; the - change, if it exists, always comes after. - """ - ctx = backend.deserialize(tx_hex) - - def get_pubkeyhash(scriptpubkey): - asm = script.get_asm(scriptpubkey) - if len(asm) != 5 or asm[0] != 'OP_DUP' or asm[1] != 'OP_HASH160' or asm[3] != 'OP_EQUALVERIFY' or asm[4] != 'OP_CHECKSIG': - return False - return asm[2] - - def get_address(scriptpubkey): - pubkeyhash = get_pubkeyhash(scriptpubkey) - if not pubkeyhash: - return False - pubkeyhash = binascii.hexlify(pubkeyhash).decode('utf-8') - address = script.base58_check_encode(pubkeyhash, config.ADDRESSVERSION) - # Test decoding of address. - if address != config.UNSPENDABLE and binascii.unhexlify(bytes(pubkeyhash, 'utf-8')) != script.base58_check_decode(address, config.ADDRESSVERSION): - return False - - return address - - # Fee is the input values minus output values. - fee = 0 - - # Get destination output and data output. - destination, btc_amount, data = None, None, b'' - pubkeyhash_encoding = False - for vout in ctx.vout: - fee -= vout.nValue - - # Sum data chunks to get data. (Can mix OP_RETURN and multi-sig.) - asm = script.get_asm(vout.scriptPubKey) - if len(asm) == 2 and asm[0] == 'OP_RETURN': # OP_RETURN - if type(asm[1]) != bytes: - continue - data_chunk = asm[1] - data += data_chunk - elif len(asm) == 5 and asm[0] == 1 and asm[3] == 2 and asm[4] == 'OP_CHECKMULTISIG': # Multi-sig - if type(asm[2]) != bytes: - continue - data_pubkey = asm[2] - data_chunk_length = data_pubkey[0] # No ord() necessary. - data_chunk = data_pubkey[1:data_chunk_length + 1] - data += data_chunk - elif len(asm) == 5 and (block_index >= 293000 or config.TESTNET or config.REGTEST): # Protocol change. - # Be strict. - pubkeyhash = get_pubkeyhash(vout.scriptPubKey) - if not pubkeyhash: - continue - - if ctx.is_coinbase(): - raise DecodeError('coinbase transaction') - obj1 = arc4.init_arc4(ctx.vin[0].prevout.hash[::-1]) - data_pubkey = obj1.decrypt(pubkeyhash) - if data_pubkey[1:9] == config.PREFIX or pubkeyhash_encoding: - pubkeyhash_encoding = True - data_chunk_length = data_pubkey[0] # No ord() necessary. - data_chunk = data_pubkey[1:data_chunk_length + 1] - if data_chunk[-8:] == config.PREFIX: - data += data_chunk[:-8] - break - else: - data += data_chunk - - # Destination is the first output before the data. - if not destination and not btc_amount and not data: - address = get_address(vout.scriptPubKey) - if address: - destination = address - btc_amount = vout.nValue - - # Check for, and strip away, prefix (except for burns). - if destination == config.UNSPENDABLE: - pass - elif data[:len(config.PREFIX)] == config.PREFIX: - data = data[len(config.PREFIX):] - else: - raise DecodeError('no prefix') - - # Only look for source if data were found or destination is UNSPENDABLE, for speed. - if not data and destination != config.UNSPENDABLE: - raise BTCOnlyError('no data and not unspendable') - - # Collect all possible source addresses; ignore coinbase transactions and anything but the simplest Pay‐to‐PubkeyHash inputs. - source_list = [] - for vin in ctx.vin[:]: # Loop through input transactions. - if vin.prevout.is_null(): - raise DecodeError('coinbase transaction') - # Get the full transaction data for this input transaction. - if block_parser: - vin_tx = block_parser.read_raw_transaction(ib2h(vin.prevout.hash)) - vin_ctx = backend.deserialize(vin_tx['__data__']) - else: - vin_tx = backend.getrawtransaction(ib2h(vin.prevout.hash)) - vin_ctx = backend.deserialize(vin_tx) - vout = vin_ctx.vout[vin.prevout.n] - fee += vout.nValue - - address = get_address(vout.scriptPubKey) - if not address: - raise DecodeError('invalid scriptpubkey') - else: - source_list.append(address) - - # Require that all possible source addresses be the same. - if all(x == source_list[0] for x in source_list): - source = source_list[0] - else: - source = None - - return source, destination, btc_amount, fee, data, None - -def get_tx_info3(tx_hex, block_parser=None, p2sh_is_segwit=False): - return get_tx_info2(tx_hex, block_parser=block_parser, p2sh_support=True, p2sh_is_segwit=p2sh_is_segwit) - -def arc4_decrypt(cyphertext, ctx): - '''Un‐obfuscate. Initialise key once per attempt.''' - key = arc4.init_arc4(ctx.vin[0].prevout.hash[::-1]) - return key.decrypt(cyphertext) - -def get_opreturn(asm): - if len(asm) == 2 and asm[0] == 'OP_RETURN': - pubkeyhash = asm[1] - if type(pubkeyhash) == bytes: - return pubkeyhash - raise DecodeError('invalid OP_RETURN') - -def decode_opreturn(asm, ctx): - chunk = get_opreturn(asm) - chunk = arc4_decrypt(chunk, ctx) - if chunk[:len(config.PREFIX)] == config.PREFIX: # Data - destination, data = None, chunk[len(config.PREFIX):] - else: - raise DecodeError('unrecognised OP_RETURN output') - - return destination, data - -def decode_checksig(asm, ctx): - pubkeyhash = script.get_checksig(asm) - chunk = arc4_decrypt(pubkeyhash, ctx) - if chunk[1:len(config.PREFIX) + 1] == config.PREFIX: # Data - # Padding byte in each output (instead of just in the last one) so that encoding methods may be mixed. Also, it’s just not very much data. - chunk_length = chunk[0] - chunk = chunk[1:chunk_length + 1] - destination, data = None, chunk[len(config.PREFIX):] - else: # Destination - pubkeyhash = binascii.hexlify(pubkeyhash).decode('utf-8') - destination, data = script.base58_check_encode(pubkeyhash, config.ADDRESSVERSION), None - - return destination, data - -def decode_scripthash(asm): - destination = script.base58_check_encode(binascii.hexlify(asm[1]).decode('utf-8'), config.P2SH_ADDRESSVERSION) - - return destination, None - -def decode_checkmultisig(asm, ctx): - pubkeys, signatures_required = script.get_checkmultisig(asm) - chunk = b'' - for pubkey in pubkeys[:-1]: # (No data in last pubkey.) - chunk += pubkey[1:-1] # Skip sign byte and nonce byte. - chunk = arc4_decrypt(chunk, ctx) - if chunk[1:len(config.PREFIX) + 1] == config.PREFIX: # Data - # Padding byte in each output (instead of just in the last one) so that encoding methods may be mixed. Also, it’s just not very much data. - chunk_length = chunk[0] - chunk = chunk[1:chunk_length + 1] - destination, data = None, chunk[len(config.PREFIX):] - else: # Destination - pubkeyhashes = [script.pubkey_to_pubkeyhash(pubkey) for pubkey in pubkeys] - destination, data = script.construct_array(signatures_required, pubkeyhashes, len(pubkeyhashes)), None - - return destination, data - -def decode_p2w(script_pubkey): - try: - bech32 = bitcoinlib.bech32.CBech32Data.from_bytes(0, script_pubkey[2:22]) - return str(bech32), None - except TypeError as e: - raise DecodeError('bech32 decoding error') - -def get_tx_info2(tx_hex, block_parser=None, p2sh_support=False, p2sh_is_segwit=False): - """Get multisig transaction info. - The destinations, if they exists, always comes before the data output; the - change, if it exists, always comes after. - """ - # Decode transaction binary. - ctx = backend.deserialize(tx_hex) - - # Ignore coinbase transactions. - if ctx.is_coinbase(): - raise DecodeError('coinbase transaction') - - # Get destinations and data outputs. - destinations, btc_amount, fee, data = [], 0, 0, b'' - - for vout in ctx.vout: - # Fee is the input values minus output values. - output_value = vout.nValue - fee -= output_value - - # Ignore transactions with invalid script. - try: - asm = script.get_asm(vout.scriptPubKey) - except CScriptInvalidError as e: - raise DecodeError(e) - - if asm[0] == 'OP_RETURN': - new_destination, new_data = decode_opreturn(asm, ctx) - elif asm[-1] == 'OP_CHECKSIG': - new_destination, new_data = decode_checksig(asm, ctx) - elif asm[-1] == 'OP_CHECKMULTISIG': - try: - new_destination, new_data = decode_checkmultisig(asm, ctx) - except: - raise DecodeError('unrecognised output type') - elif p2sh_support and asm[0] == 'OP_HASH160' and asm[-1] == 'OP_EQUAL' and len(asm) == 3: - new_destination, new_data = decode_scripthash(asm) - elif util.enabled('segwit_support') and asm[0] == 0: - # Segwit Vout, second param is redeemScript - #redeemScript = asm[1] - new_destination, new_data = decode_p2w(vout.scriptPubKey) - else: - raise DecodeError('unrecognised output type') - assert not (new_destination and new_data) - assert new_destination != None or new_data != None # `decode_*()` should never return `None, None`. - - if util.enabled('null_data_check'): - if new_data == []: - raise DecodeError('new destination is `None`') - - # All destinations come before all data. - if not data and not new_data and destinations != [config.UNSPENDABLE,]: - destinations.append(new_destination) - btc_amount += output_value - else: - if new_destination: # Change. - break - else: # Data. - data += new_data - - # source can be determined by parsing the p2sh_data transaction - # or from the first spent output - sources = [] - - # P2SH encoding signalling - p2sh_encoding_source = None - if util.enabled('p2sh_encoding') and data == b'P2SH': - data = b'' - for vin in ctx.vin: - if util.enabled("prevout_segwit_fix"): - vin_tx = backend.getrawtransaction(ib2h(vin.prevout.hash)) - vin_ctx = backend.deserialize(vin_tx) - prevout_is_segwit = vin_ctx.has_witness() - else: - prevout_is_segwit = p2sh_is_segwit - - # Ignore transactions with invalid script. - try: - asm = script.get_asm(vin.scriptSig) - except CScriptInvalidError as e: - raise DecodeError(e) - - new_source, new_destination, new_data = p2sh_encoding.decode_p2sh_input(asm, p2sh_is_segwit=prevout_is_segwit) - # this could be a p2sh source address with no encoded data - if new_data is None: - continue; - - if new_source is not None: - if p2sh_encoding_source is not None and new_source != p2sh_encoding_source: - # this p2sh data input has a bad source address - raise DecodeError('inconsistent p2sh inputs') - - p2sh_encoding_source = new_source - - assert not new_destination - - data += new_data - # Only look for source if data were found or destination is `UNSPENDABLE`, - # for speed. - if not data and destinations != [config.UNSPENDABLE,]: - raise BTCOnlyError('no data and not unspendable', ctx) - - # Collect all (unique) source addresses. - # if we haven't found them yet - for vin in ctx.vin[:]: # Loop through inputs. - # Get the full transaction data for this input transaction. - if block_parser: - vin_tx = block_parser.read_raw_transaction(ib2h(vin.prevout.hash)) - vin_ctx = backend.deserialize(vin_tx['__data__']) - else: - vin_tx = backend.getrawtransaction(ib2h(vin.prevout.hash)) - vin_ctx = backend.deserialize(vin_tx) - vout = vin_ctx.vout[vin.prevout.n] - fee += vout.nValue - - asm = script.get_asm(vout.scriptPubKey) - if asm[-1] == 'OP_CHECKSIG': - new_source, new_data = decode_checksig(asm, ctx) - if new_data or not new_source: - raise DecodeError('data in source') - elif asm[-1] == 'OP_CHECKMULTISIG': - new_source, new_data = decode_checkmultisig(asm, ctx) - if new_data or not new_source: - raise DecodeError('data in source') - elif p2sh_support and asm[0] == 'OP_HASH160' and asm[-1] == 'OP_EQUAL' and len(asm) == 3: - new_source, new_data = decode_scripthash(asm) - if new_data or not new_source: - raise DecodeError('data in source') - elif util.enabled('segwit_support') and asm[0] == 0: - # Segwit output - new_source, new_data = decode_p2w(vout.scriptPubKey) - else: - raise DecodeError('unrecognised source type') - - # old; append to sources, results in invalid addresses - # new; first found source is source, the rest can be anything (to fund the TX for example) - if not (util.enabled('first_input_is_source') and len(sources)): - # Collect unique sources. - if new_source not in sources: - sources.append(new_source) - - # use the source from the p2sh data source - if p2sh_encoding_source is not None: - sources = p2sh_encoding_source - else: - sources = '-'.join(sources) - - destinations = '-'.join(destinations) - return sources, destinations, btc_amount, round(fee), data, None - -def reinitialise(db, block_index=None): - """Drop all predefined tables and initialise the database once again.""" - cursor = db.cursor() - - # Delete all of the results of parsing (including the undolog) - for table in TABLES + ['balances', 'undolog', 'undolog_block']: - cursor.execute('''DROP TABLE IF EXISTS {}'''.format(table)) - - # Create missing tables - initialise(db) - - # clean consensus hashes if first block hash doesn't match with checkpoint. - if config.TESTNET: - checkpoints = check.CHECKPOINTS_TESTNET - elif config.REGTEST: - checkpoints = check.CHECKPOINTS_REGTEST - else: - checkpoints = check.CHECKPOINTS_MAINNET - - columns = [column['name'] for column in cursor.execute('''PRAGMA table_info(blocks)''')] - for field in ['ledger_hash', 'txlist_hash']: - if field in columns: - sql = '''SELECT {} FROM blocks WHERE block_index = ?'''.format(field) - first_block = list(cursor.execute(sql, (config.BLOCK_FIRST,))) - if first_block: - first_hash = first_block[0][field] - if first_hash != checkpoints[config.BLOCK_FIRST][field]: - logger.info('First hash changed. Cleaning {}.'.format(field)) - cursor.execute('''UPDATE blocks SET {} = NULL'''.format(field)) - - # For rollbacks, just delete new blocks and then reparse what’s left. - if block_index: - cursor.execute('''DELETE FROM transaction_outputs WHERE block_index > ?''', (block_index,)) - cursor.execute('''DELETE FROM transactions WHERE block_index > ?''', (block_index,)) - cursor.execute('''DELETE FROM blocks WHERE block_index > ?''', (block_index,)) - elif config.TESTNET or config.REGTEST: # block_index NOT specified and we are running testnet - # just blow away the consensus hashes with a full testnet reparse, as we could activate - # new features retroactively, which could otherwise lead to ConsensusError exceptions being raised. - logger.info("Testnet/regtest full reparse detected: Clearing all consensus hashes before performing reparse.") - cursor.execute('''UPDATE blocks SET ledger_hash = NULL, txlist_hash = NULL, messages_hash = NULL''') - - cursor.close() - -def reparse(db, block_index=None, quiet=False): - """Reparse all transactions (atomically). If block_index is set, rollback - to the end of that block. - """ - def reparse_from_undolog(db, block_index, quiet): - """speedy reparse method that utilizes the undolog. - if fails, fallback to the full reparse method""" - if not block_index: - return False # Can't reparse from undolog - - undolog_cursor = db.cursor() - undolog_cursor.setexectrace(None) - undolog_cursor.setrowtrace(None) - - def get_block_index_for_undo_index(undo_indexes, undo_index): - for block_index, first_undo_index in undo_indexes.items(): #in order - if undo_index < first_undo_index: - return block_index - 1 - else: - return next(reversed(undo_indexes)) #the last inserted block_index - - with db: - # Check if we can reparse from the undolog - results = list(undolog_cursor.execute( - '''SELECT block_index, first_undo_index FROM undolog_block WHERE block_index >= ? ORDER BY block_index ASC''', (block_index,))) - undo_indexes = collections.OrderedDict() - for result in results: - undo_indexes[result[0]] = result[1] - - undo_start_block_index = block_index + 1 - - if undo_start_block_index not in undo_indexes: - if block_index in undo_indexes: - # Edge case, should only happen if we're "rolling back" to latest block (e.g. via cmd line) - return True #skip undo - else: - return False # Undolog doesn't go that far back, full reparse required... - - # Grab the undolog... - undolog = list(undolog_cursor.execute( - '''SELECT undo_index, sql FROM undolog WHERE undo_index >= ? ORDER BY undo_index DESC''', - (undo_indexes[undo_start_block_index],))) - - # Replay the undolog backwards, from the last entry to first_undo_index... - for entry in undolog: - logger.info("Undolog: Block {} (undo_index {}): {}".format( - get_block_index_for_undo_index(undo_indexes, entry[0]), entry[0], entry[1])) - undolog_cursor.execute(entry[1]) - - # Trim back tx and blocks - undolog_cursor.execute('''DELETE FROM transaction_outputs WHERE block_index > ?''', (block_index,)) - undolog_cursor.execute('''DELETE FROM transactions WHERE block_index > ?''', (block_index,)) - undolog_cursor.execute('''DELETE FROM blocks WHERE block_index > ?''', (block_index,)) - # As well as undolog entries... - undolog_cursor.execute('''DELETE FROM undolog WHERE undo_index >= ?''', (undo_indexes[undo_start_block_index],)) - undolog_cursor.execute('''DELETE FROM undolog_block WHERE block_index >= ?''', (undo_start_block_index,)) - - undolog_cursor.close() - return True - - if block_index: - logger.info('Rolling back transactions to block {}.'.format(block_index)) - else: - logger.info('Reparsing all transactions.') - - check.software_version() - reparse_start = time.time() - - # Reparse from the undolog if possible - reparsed = reparse_from_undolog(db, block_index, quiet) - - cursor = db.cursor() - - if not reparsed: - if block_index: - logger.info("Could not roll back from undolog. Performing full reparse instead...") - - if quiet: - root_logger = logging.getLogger() - root_level = logger.getEffectiveLevel() - - with db: - reinitialise(db, block_index) - - # Reparse all blocks, transactions. - if quiet: - root_logger.setLevel(logging.WARNING) - - previous_ledger_hash, previous_txlist_hash, previous_messages_hash = None, None, None - cursor.execute('''SELECT * FROM blocks ORDER BY block_index''') - for block in cursor.fetchall(): - util.CURRENT_BLOCK_INDEX = block['block_index'] - previous_ledger_hash, previous_txlist_hash, previous_messages_hash, previous_found_messages_hash = parse_block( - db, block['block_index'], block['block_time'], - previous_ledger_hash=previous_ledger_hash, - previous_txlist_hash=previous_txlist_hash, - previous_messages_hash=previous_messages_hash) - if quiet and block['block_index'] % 10 == 0: # every 10 blocks print status - root_logger.setLevel(logging.INFO) - logger.info('Block (re-parse): %s (hashes: L:%s / TX:%s / M:%s%s)' % ( - block['block_index'], previous_ledger_hash[-5:], previous_txlist_hash[-5:], previous_messages_hash[-5:], - (' [overwrote %s]' % previous_found_messages_hash) if previous_found_messages_hash and previous_found_messages_hash != previous_messages_hash else '')) - if quiet and block['block_index'] % 10 == 0: - root_logger.setLevel(logging.WARNING) - - if quiet: - root_logger.setLevel(root_level) - - with db: - # Check for conservation of assets. - check.asset_conservation(db) - - # Update database version number. - database.update_version(db) - - cursor.close() - reparse_end = time.time() - logger.info("Reparse took {:.3f} minutes.".format((reparse_end - reparse_start) / 60.0)) - - # on full reparse - vacuum the DB afterwards for better subsequent performance (especially on non-SSDs) - if not block_index: - database.vacuum(db) - -def list_tx(db, block_hash, block_index, block_time, tx_hash, tx_index, tx_hex=None): - assert type(tx_hash) == str - cursor = db.cursor() - - # Edge case: confirmed tx_hash also in mempool - cursor.execute('''SELECT * FROM transactions WHERE tx_hash = ?''', (tx_hash,)) - transactions = list(cursor) - if transactions: - return tx_index - - # Get the important details about each transaction. - if tx_hex is None: - tx_hex = backend.getrawtransaction(tx_hash) # TODO: This is the call that is stalling the process the most - - source, destination, btc_amount, fee, data, decoded_tx = get_tx_info(tx_hex, db=db) - - outs = [] - first_one = True #This is for backward compatibility with unique dispensers - if not source and decoded_tx and util.enabled('dispensers', block_index): - outputs = decoded_tx[1] - out_index = 0 - for out in outputs: - if out[0] != decoded_tx[0][0] and dispenser.is_dispensable(db, out[0], out[1]): - - source = decoded_tx[0][0] - destination = out[0] - btc_amount = out[1] - fee = 0 - data = struct.pack(config.SHORT_TXTYPE_FORMAT, dispenser.DISPENSE_ID) - data += b'\x00' - - if util.enabled("multiple_dispenses"): - outs.append({"destination":out[0], "btc_amount":out[1], "out_index":out_index}) - else: - break # Prevent inspection of further dispenses (only first one is valid) - - out_index = out_index + 1 - - # For mempool - if block_hash == None: - block_hash = config.MEMPOOL_BLOCK_HASH - block_index = config.MEMPOOL_BLOCK_INDEX - else: - assert block_index == util.CURRENT_BLOCK_INDEX - - if source and (data or destination == config.UNSPENDABLE or decoded_tx): - logger.debug('Saving transaction: {}'.format(tx_hash)) - cursor.execute('''INSERT INTO transactions( - tx_index, - tx_hash, - block_index, - block_hash, - block_time, - source, - destination, - btc_amount, - fee, - data) VALUES(?,?,?,?,?,?,?,?,?,?)''', - (tx_index, - tx_hash, - block_index, - block_hash, - block_time, - source, - destination, - btc_amount, - fee, - data) - ) - - for next_out in outs: - cursor.execute('''INSERT INTO transaction_outputs( - tx_index, - tx_hash, - block_index, - out_index, - destination, - btc_amount) VALUES (?,?,?,?,?,?)''', - (tx_index, - tx_hash, - block_index, - next_out["out_index"], - next_out["destination"], - next_out["btc_amount"]) - ) - - cursor.close() - - return tx_index + 1 - else: - logger.getChild('list_tx.skip').debug('Skipping transaction: {}'.format(tx_hash)) - - return tx_index - -def kickstart(db, bitcoind_dir): - if bitcoind_dir is None: - if platform.system() == 'Darwin': - bitcoind_dir = os.path.expanduser('~/Library/Application Support/Bitcoin/') - elif platform.system() == 'Windows': - bitcoind_dir = os.path.join(os.environ['APPDATA'], 'Bitcoin') - else: - bitcoind_dir = os.path.expanduser('~/.bitcoin') - if not os.path.isdir(bitcoind_dir): - raise Exception('Bitcoin Core data directory not found at {}. Use --bitcoind-dir parameter.'.format(bitcoind_dir)) - - cursor = db.cursor() - - logger.warning('''Warning: -- Ensure that bitcoind is stopped. -- You must reindex bitcoind after the initialization is complete (restart with `-reindex=1`) -- The initialization may take a while.''') - if input('Proceed with the initialization? (y/N) : ') != 'y': - return - - if config.TESTNET: - first_hash = config.BLOCK_FIRST_TESTNET_HASH - elif config.REGTEST: - first_hash = config.BLOCK_FIRST_REGTEST_HASH - else: - first_hash = config.BLOCK_FIRST_MAINNET_HASH - - start_time_total = time.time() - - # Get hash of last known block. - chain_parser = ChainstateParser(os.path.join(bitcoind_dir, 'chainstate')) - last_hash = chain_parser.get_last_block_hash() - chain_parser.close() - - # Start block parser. - block_parser = BlockchainParser(os.path.join(bitcoind_dir, 'blocks'), os.path.join(bitcoind_dir, 'blocks/index')) - - current_hash = last_hash - tx_index = 0 - with db: - # Prepare SQLite database. # TODO: Be more specific! - logger.info('Preparing database.') - start_time = time.time() - reinitialise(db, block_index=config.BLOCK_FIRST - 1) - logger.info('Prepared database in {:.3f}s'.format(time.time() - start_time)) - - # Get blocks and transactions, moving backwards in time. - while current_hash != None: - start_time = time.time() - transactions = [] - - # Get `tx_info`s for transactions in this block. - block = block_parser.read_raw_block(current_hash) - for tx in block['transactions']: - source, destination, btc_amount, fee, data = get_tx_info(tx['__data__'], block_parser=block_parser, block_index=block['block_index']) - if source and (data or destination == config.UNSPENDABLE): - transactions.append(( - tx['tx_hash'], block['block_index'], block['block_hash'], block['block_time'], - source, destination, btc_amount, fee, data - )) - logger.info('Valid transaction: {}'.format(tx['tx_hash'])) - - # Insert block and transactions into database. - cursor.execute('''INSERT INTO blocks( - block_index, - block_hash, - block_time) VALUES(?,?,?)''', - (block['block_index'], - block['block_hash'], - block['block_time'])) - if len(transactions): - transactions = list(reversed(transactions)) - tx_chunks = [transactions[i:i+90] for i in range(0, len(transactions), 90)] - for tx_chunk in tx_chunks: - sql = '''INSERT INTO transactions - (tx_index, tx_hash, block_index, block_hash, block_time, source, destination, btc_amount, fee, data) - VALUES ''' - bindings = () - bindings_place = [] - # negative tx_index from -1 and inverse order for fast reordering # TODO: Can this be clearer? - for tx in tx_chunk: - bindings += (-(tx_index + 1),) + tx - bindings_place.append('''(?,?,?,?,?,?,?,?,?,?)''') - tx_index += 1 - sql += ', '.join(bindings_place) - cursor.execute(sql, bindings) - - logger.info('Block {} ({}): {}/{} saved in {:.3f}s'.format( - block['block_index'], block['block_hash'], - len(transactions), len(block['transactions']), - time.time() - start_time)) - - # Get hash of next block. - current_hash = block['hash_prev'] if current_hash != first_hash else None - - block_parser.close() - - # Reorder all transactions in database. - logger.info('Reordering transactions.') - start_time = time.time() - cursor.execute('''UPDATE transactions SET tx_index = tx_index + ?''', (tx_index,)) - logger.info('Reordered transactions in {:.3f}s.'.format(time.time() - start_time)) - - # Parse all transactions in database. - reparse(db) - - cursor.close() - logger.info('Total duration: {:.3f}s'.format(time.time() - start_time_total)) - -def last_db_index(db): - cursor = db.cursor() - try: - blocks = list(cursor.execute('''SELECT * FROM blocks WHERE block_index = (SELECT MAX(block_index) from blocks)''')) - try: - return blocks[0]['block_index'] - except IndexError: - return 0 - except apsw.SQLError: - return 0 - -def get_next_tx_index(db): - """Return index of next transaction.""" - cursor = db.cursor() - txes = list(cursor.execute('''SELECT * FROM transactions WHERE tx_index = (SELECT MAX(tx_index) from transactions)''')) - if txes: - assert len(txes) == 1 - tx_index = txes[0]['tx_index'] + 1 - else: - tx_index = 0 - cursor.close() - return tx_index - - - -class MempoolError(Exception): - pass -def follow(db): - # Check software version. - check.software_version() - - # Initialise. - initialise(db) - - # Get index of last block. - if util.CURRENT_BLOCK_INDEX == 0: - logger.warning('New database.') - block_index = config.BLOCK_FIRST - else: - block_index = util.CURRENT_BLOCK_INDEX + 1 - - # Check database version. - try: - check.database_version(db) - except check.DatabaseVersionError as e: - logger.info(str(e)) - # no need to reparse or rollback a new database - if block_index != config.BLOCK_FIRST: - reparse(db, block_index=e.reparse_block_index, quiet=False) - else: #version update was included in reparse(), so don't do it twice - database.update_version(db) - - logger.info('Resuming parsing.') - - # Get index of last transaction. - tx_index = get_next_tx_index(db) - - not_supported = {} # No false positives. Use a dict to allow for O(1) lookups - not_supported_sorted = collections.deque() - # ^ Entries in form of (block_index, tx_hash), oldest first. Allows for easy removal of past, unncessary entries - cursor = db.cursor() - - # a reorg can happen without the block count increasing, or even for that - # matter, with the block count decreasing. This should only delay - # processing of the new blocks a bit. - while True: - start_time = time.time() - # Get block count. - # If the backend is unreachable and `config.FORCE` is set, just sleep - # and try again repeatedly. - try: - block_count = backend.getblockcount() - except (ConnectionRefusedError, http.client.CannotSendRequest, backend.addrindexrs.BackendRPCError) as e: - if config.FORCE: - time.sleep(config.BACKEND_POLL_INTERVAL) - continue - else: - raise e - - # Get new blocks. - if block_index <= block_count: - - current_index = block_index - # Backwards check for incorrect blocks due to chain reorganisation, and stop when a common parent is found. - if block_count - block_index < 100: # Undolog only saves last 100 blocks, if there's a reorg deeper than that manual reparse should be done - requires_rollback = False - while True: - if current_index == config.BLOCK_FIRST: - break - - logger.debug('Checking that block {} is not an orphan.'.format(current_index)) - # Backend parent hash. - current_hash = backend.getblockhash(current_index) - current_cblock = backend.getblock(current_hash) - backend_parent = bitcoinlib.core.b2lx(current_cblock.hashPrevBlock) - - # DB parent hash. - blocks = list(cursor.execute('''SELECT * FROM blocks - WHERE block_index = ?''', (current_index - 1,))) - if len(blocks) != 1: # For empty DB. - break - db_parent = blocks[0]['block_hash'] - - # Compare. - assert type(db_parent) == str - assert type(backend_parent) == str - if db_parent == backend_parent: - break - else: - current_index -= 1 - requires_rollback = True - - # Rollback for reorganisation. - if requires_rollback: - # Record reorganisation. - logger.warning('Blockchain reorganisation at block {}.'.format(current_index)) - log.message(db, block_index, 'reorg', None, {'block_index': current_index}) - - # Rollback the DB. - reparse(db, block_index=current_index-1, quiet=True) - block_index = current_index - tx_index = get_next_tx_index(db) - continue - - # Check version. (Don’t add any blocks to the database while - # running an out‐of‐date client!) - check.software_version() - - - # Get and parse transactions in this block (atomically). - block_hash = backend.getblockhash(current_index) - block = backend.getblock(block_hash) - previous_block_hash = bitcoinlib.core.b2lx(block.hashPrevBlock) - block_time = block.nTime - txhash_list, raw_transactions = backend.get_tx_list(block) - - with db: - util.CURRENT_BLOCK_INDEX = block_index - - # List the block. - cursor.execute('''INSERT INTO blocks( - block_index, - block_hash, - block_time, - previous_block_hash, - difficulty) VALUES(?,?,?,?,?)''', - (block_index, - block_hash, - block_time, - previous_block_hash, - block.difficulty) - ) - - # List the transactions in the block. - for tx_hash in txhash_list: - tx_hex = raw_transactions[tx_hash] - tx_index = list_tx(db, block_hash, block_index, block_time, tx_hash, tx_index, tx_hex) - - # Parse the transactions in the block. - new_ledger_hash, new_txlist_hash, new_messages_hash, found_messages_hash = parse_block(db, block_index, block_time) - - # When newly caught up, check for conservation of assets. - if block_index == block_count: - if config.CHECK_ASSET_CONSERVATION: - check.asset_conservation(db) - - # Remove any non‐supported transactions older than ten blocks. - while len(not_supported_sorted) and not_supported_sorted[0][0] <= block_index - 10: - tx_h = not_supported_sorted.popleft()[1] - del not_supported[tx_h] - - logger.info('Block: %s (%ss, hashes: L:%s / TX:%s / M:%s%s)' % ( - str(block_index), "{:.2f}".format(time.time() - start_time, 3), - new_ledger_hash[-5:], new_txlist_hash[-5:], new_messages_hash[-5:], - (' [overwrote %s]' % found_messages_hash) if found_messages_hash and found_messages_hash != new_messages_hash else '')) - - # Increment block index. - block_count = backend.getblockcount() - block_index += 1 - - else: - # TODO: add zeromq support here to await TXs and Blocks instead of constantly polling - # Get old mempool. - old_mempool = list(cursor.execute('''SELECT * FROM mempool''')) - old_mempool_hashes = [message['tx_hash'] for message in old_mempool] - - if backend.MEMPOOL_CACHE_INITIALIZED is False: - backend.init_mempool_cache() - logger.info("Ready for queries.") - - # Fake values for fake block. - curr_time = int(time.time()) - mempool_tx_index = tx_index - - xcp_mempool = [] - raw_mempool = backend.getrawmempool() - - # For each transaction in Bitcoin Core mempool, if it’s new, create - # a fake block, a fake transaction, capture the generated messages, - # and then save those messages. - # Every transaction in mempool is parsed independently. (DB is rolled back after each one.) - # We first filter out which transactions we've already parsed before so we can batch fetch their raw data - parse_txs = [] - for tx_hash in raw_mempool: - # If already in mempool, copy to new one. - if tx_hash in old_mempool_hashes: - for message in old_mempool: - if message['tx_hash'] == tx_hash: - xcp_mempool.append((tx_hash, message)) - - # If not a supported XCP transaction, skip. - elif tx_hash in not_supported: - pass - - # Else: list, parse and save it. - else: - parse_txs.append(tx_hash) - - # fetch raw for all transactions that need to be parsed - # Sometimes the transactions can’t be found: `{'code': -5, 'message': 'No information available about transaction'}` - # - is txindex enabled in Bitcoind? - # - or was there a block found while batch feting the raw txs - # - or was there a double spend for w/e reason accepted into the mempool (replace-by-fee?) - try: - raw_transactions = backend.getrawtransaction_batch(parse_txs, skip_missing=True) - except Exception as e: - logger.warning('Failed to fetch raw for mempool TXs, restarting loop; %s', (e, )) - continue # restart the follow loop - - parsed_txs_count = 0 - for tx_hash in parse_txs: - - # Get block count everytime we parse some mempool_txs. If there is a new block, we just interrupt this process - if parsed_txs_count % 100 == 0: - if len(parse_txs) > 1000: - logger.info("Mempool parsed txs count:{} from {}".format(parsed_txs_count, len(parse_txs))) - - try: - block_count = backend.getblockcount() - - if block_index <= block_count: - logger.info("Mempool parsing interrupted, there are blocks to parse") - break #Interrupt the process if there is a new block to parse - except (ConnectionRefusedError, http.client.CannotSendRequest, backend.addrindexrs.BackendRPCError) as e: - # Keep parsing what we have, anyway if there is a temporary problem with the server, - # normal parse won't work - pass - - try: - with db: - # List the fake block. - cursor.execute('''INSERT INTO blocks( - block_index, - block_hash, - block_time) VALUES(?,?,?)''', - (config.MEMPOOL_BLOCK_INDEX, - config.MEMPOOL_BLOCK_HASH, - curr_time) - ) - - tx_hex = raw_transactions[tx_hash] - if tx_hex is None: - logger.debug('tx_hash %s not found in backend. Not adding to mempool.', (tx_hash, )) - raise MempoolError - mempool_tx_index = list_tx(db, None, block_index, curr_time, tx_hash, tx_index=mempool_tx_index, tx_hex=tx_hex) - - # Parse transaction. - cursor.execute('''SELECT * FROM transactions WHERE tx_hash = ?''', (tx_hash,)) - transactions = list(cursor) - if transactions: - assert len(transactions) == 1 - transaction = transactions[0] - supported = parse_tx(db, transaction) - if not supported: - not_supported[tx_hash] = '' - not_supported_sorted.append((block_index, tx_hash)) - else: - # If a transaction hasn’t been added to the - # table `transactions`, then it’s not a - # Counterparty transaction. - not_supported[tx_hash] = '' - not_supported_sorted.append((block_index, tx_hash)) - raise MempoolError - - # Save transaction and side‐effects in memory. - cursor.execute('''SELECT * FROM messages WHERE block_index = ?''', (config.MEMPOOL_BLOCK_INDEX,)) - for message in list(cursor): - xcp_mempool.append((tx_hash, message)) - - # Rollback. - raise MempoolError - except exceptions.ParseTransactionError as e: - logger.warn('ParseTransactionError for tx %s: %s' % (tx_hash, e)) - except MempoolError: - pass - - parsed_txs_count = parsed_txs_count + 1 - - if parsed_txs_count < len(parse_txs): - continue #if parse didn't finish is an interruption - else: - if len(parse_txs) > 1000: - logger.info("Mempool parsing finished") - - # Re‐write mempool messages to database. - with db: - cursor.execute('''DELETE FROM mempool''') - for message in xcp_mempool: - tx_hash, new_message = message - new_message['tx_hash'] = tx_hash - cursor.execute('''INSERT INTO mempool VALUES(:tx_hash, :command, :category, :bindings, :timestamp)''', new_message) - - elapsed_time = time.time() - start_time - sleep_time = config.BACKEND_POLL_INTERVAL - elapsed_time if elapsed_time <= config.BACKEND_POLL_INTERVAL else 0 - - logger.getChild('mempool').debug('Refresh mempool: %s XCP txs seen, out of %s total entries (took %ss, next refresh in %ss)' % ( - len(xcp_mempool), len(raw_mempool), - "{:.2f}".format(elapsed_time, 3), - "{:.2f}".format(sleep_time, 3))) - - # Wait - db.wal_checkpoint(mode=apsw.SQLITE_CHECKPOINT_PASSIVE) - time.sleep(sleep_time) - - cursor.close() - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/check.py b/counterpartylib/lib/check.py deleted file mode 100644 index 50789385fb..0000000000 --- a/counterpartylib/lib/check.py +++ /dev/null @@ -1,232 +0,0 @@ -import json -import requests -import logging -logger = logging.getLogger(__name__) -import warnings -import time -import sys - -from counterpartylib.lib import config -from counterpartylib.lib import util -from counterpartylib.lib import exceptions -from counterpartylib.lib import backend -from counterpartylib.lib import database - -CONSENSUS_HASH_SEED = 'We can only see a short distance ahead, but we can see plenty there that needs to be done.' - -CONSENSUS_HASH_VERSION_MAINNET = 2 -CHECKPOINTS_MAINNET = { - config.BLOCK_FIRST_MAINNET: {'ledger_hash': '766ff0a9039521e3628a79fa669477ade241fc4c0ae541c3eae97f34b547b0b7', 'txlist_hash': '766ff0a9039521e3628a79fa669477ade241fc4c0ae541c3eae97f34b547b0b7'}, - 280000: {'ledger_hash': '265719e2770d5a6994f6fe49839069183cd842ee14f56c2b870e56641e8a8725', 'txlist_hash': 'a59b33b4633649db4f14586af47e258ed9b8884dbb7aa308fb1f49a653ee60f4'}, - 290000: {'ledger_hash': '4612ed7034474b4ff1727eb0e216d533ebe7ac755fb015e0f9a170c063f3e84c', 'txlist_hash': 'c15423c849fd360d38cbd6c6c3ea37a07fece723da92353f3056facc2676d9e7'}, - 300000: {'ledger_hash': '9a3dd4949780404d61e5ca1929f94a43f08eb0fa19ccb4b5d6a61cafd7943199', 'txlist_hash': 'efa02dbdcc4158a598e3b476ece5ba9cc8d26f3abc8ac3777ac6dde0f0afc7e6'}, - 310000: {'ledger_hash': '45e43d5cc77ea01129df01d7f55b0c89b2d4e18cd3d626fd92f30bfb37a85f4d', 'txlist_hash': '83cdcf75833d828ded09979b601fde87e2fdb0f5eb1cc6ab5d2042b7ec85f90e'}, - 320000: {'ledger_hash': '91c1d33626669e8098bc762b1a9e3f616884e4d1cadda4881062c92b0d3d3e98', 'txlist_hash': '761793042d8e7c80e14a16c15bb9d40e237c468a87c207a59730b616bdfde7d4'}, - 330000: {'ledger_hash': 'dd56aa97e5ca15841407f383ce1d7814536a594d7cfffcb4cf60bee8b362065a', 'txlist_hash': '3c45b4377a99e020550a198daa45c378c488a72ba199b53deb90b320d55a897b'}, - 334000: {'ledger_hash': '24c4fa4097106031267439eb9fbe8ce2a18560169c67726652b608908c1ca9bb', 'txlist_hash': '764ca9e8d3b9546d1c4ff441a39594548989f60daefc6f28e046996e76a273bf'}, - 335000: {'ledger_hash': 'e57c9d606a615e7e09bf99148596dd28e64b25cd8b081e226d535a64c1ed08d1', 'txlist_hash': '437d9507185b5e193627edf4998aad2264755af8d13dd3948ce119b32dd50ce2'}, - 336000: {'ledger_hash': '1329ff5b80d034b64f6ea3481b7c7176437a8837b2a7cb7b8a265fdd1397572d', 'txlist_hash': '33eb8cacd4c750f8132d81e8e43ca13bd565f1734d7d182346364847414da52f'}, - 337000: {'ledger_hash': '607e6a93e8d97cefea9bd55384898ee90c8477ded8a46017f2294feedbc83409', 'txlist_hash': '20b535a55abcc902ca70c19dd648cbe5149af8b4a4157b94f41b71fc422d428e'}, - 338000: {'ledger_hash': 'f043914c71e4b711abb1c1002767b9a4e7d605e249facaaf7a2046b0e9741204', 'txlist_hash': 'fa2c3f7f76345278271ed5ec391d582858e10b1f154d9b44e5a1f4896400ee46'}, - 339000: {'ledger_hash': '49f7240bc90ebc2f242dd599c7d2c427b9d2ac844992131e6e862b638ae4393a', 'txlist_hash': 'c1e3b497c054dcf67ddd0dc223e8b8a6e09a1a05bacb9fef5c03e48bd01e64e7'}, - 340000: {'ledger_hash': '255760e2abfb79fdd76b65759f1590f582c1747f3eeccc4b2ae37d23e30e0729', 'txlist_hash': '8502004bb63e699b243ac8af072d704c69b817905e74787c2031af971e8cd87c'}, - 341000: {'ledger_hash': '1369cba3909e564d2e725879a8b2cd987df075db121d1d421c8ce16b65f4bf04', 'txlist_hash': 'd217d0bed190cb27f58fcb96b255f8006bc4b9ed739e1bb08507201c49c426c8'}, - 342000: {'ledger_hash': '9e7e9b8620717189ccea697ff2f84fe71bc4ae8d991481ff235164d72a9e6e4f', 'txlist_hash': 'adf75d023760101b2b337f6359dd811b12521c83837eb3f7db3bbfd0b095aa54'}, - 343000: {'ledger_hash': 'aa47312ebe94b35504bec6c74713e404e5f36854e0836839344d13debe50558c', 'txlist_hash': '6bdbbc96364b3c92cea132fe66a0925f9445a249f7062326bdcc4ad4711f0c01'}, - 344000: {'ledger_hash': '40187263aa96d1362bf7b19c8ba0fff7f0c0f3eb132a40fc90601b5926c7e6e3', 'txlist_hash': '98da8efe705c4b54275bfd25f816a7e7a4ff1f67647e17d7a0aaa2a3fef8bda0'}, - 345000: {'ledger_hash': 'e4a1e1be4beea63d9740ca166b75bb4e3ffa2af33e1fe282e5b09c4952a7448c', 'txlist_hash': '777f163eaa5ad79dcb738871d4318a0699defec469d8afe91ab6277ff8d3e8b8'}, - 350000: {'ledger_hash': '6a67e9f2e9d07e7bb3277cf9c24f84c857ed1b8fff4a37e589cd56ade276dd95', 'txlist_hash': '96bcbdbce74b782a845d4fda699846d2d3744044c2870a413c018642b8c7c3bf'}, - 355000: {'ledger_hash': 'a84b17992217c7845e133a8597dac84eba1ee8c48bcc7f74bcf512837120f463', 'txlist_hash': '210d96b42644432b9e1a3433a29af9acb3bad212b67a7ae1dbc011a11b04bc24'}, - 360000: {'ledger_hash': 'ddca07ea43b336b703fb8ebab6c0dc30582eb360d6f0eb0446e1fe58b53dee0a', 'txlist_hash': '31d0ff3e3782cf9464081829c5595b3de5ac477290dc069d98672f3f552767f8'}, - 365000: {'ledger_hash': '2d55b126cca3eca15c07b5da683988f9e01d7346d2ca430e940fd7c07ce84fd7', 'txlist_hash': '7988a823cc1e3234953cc87d261d3c1fede8493d0a31b103357eb23cc7dc2eda'}, - 366000: {'ledger_hash': '64ce274df2784f9ca88a8d7071613ec6527e506ec31cd434eca64c6a3345a6b7', 'txlist_hash': '0d4374da6100e279b24f4ba4a2d6afbfc4fb0fc2d312330a515806e8c5f49404'}, - 370000: {'ledger_hash': 'fabb2a2e91fad3fe7734169d554cca396c1030243044cef42fcf65717cf0fa61', 'txlist_hash': '41d1732868c9ac25951ace5ca9f311a15d5eca9bf8d548e0d988c050bd2aff87'}, - 375000: {'ledger_hash': 'a7ac4e2948cea0c426c8fc201cf57d9c313027ea7bff2b32a25ed28d3dbaa581', 'txlist_hash': '96118a7aa2ca753488755b7419a0f44a7fbc371bc58dcc7ab083c70fc14ef8b3'}, - 380000: {'ledger_hash': '70453ba04c1c0198c4771e7964cffa25f9456c2f71456a8b05dfe935d5fcdc88', 'txlist_hash': '8bf2070103cca6f0bde507b7d20b0ba0630da6349beb560fa64c926d08dbcaef'}, - 385000: {'ledger_hash': '93eb0a6e820bee197e7591edbc5ead7bfa38f32c88aabf4785f080fd6ae96c4c', 'txlist_hash': '1f8f17fd5766382a8c10a2a0e995a7d5a5d1bcd5fc0220d1e2691b2a94dcc78f'}, - 390000: {'ledger_hash': '7d42b98eecbc910a67a5f4ac8dc7d6d9b6995ebc5bdf53663b414965fe7d2c5e', 'txlist_hash': 'b50efc4a4241bf3ec33a38c3b5f34756a9f305fe5fa9a80f7f9b70d5d7b2a780'}, - 395000: {'ledger_hash': '89f9ac390b35e69dd75d6c34854ba501dce2f662fc707aee63cad5822c7660f2', 'txlist_hash': '2151dd2f0aa14685f3d041727a689d5d242578072a049123b317724fc4f1100c'}, - 400000: {'ledger_hash': 'eb681a305125e04b6f044b36045e23ee248ce4eb68433cea2b36d15e7e74d5f1', 'txlist_hash': 'b48e9501e8d6f1f1b4127d868860885d3db76698c2c31a567777257df101cf61'}, - 405000: {'ledger_hash': '3725055b37a8958ade6ca1c277cf50fee6036b4a92befb8da2f7c32f0b210881', 'txlist_hash': '871b2adfd246e3fe69f0fe9098e3251045ed6e9712c4cf90ea8dfdd1eb330ed6'}, - 410000: {'ledger_hash': '1fa9a34f233695ebd7ebb08703bf8d99812fa099f297efc5d307d1ebef902ffd', 'txlist_hash': 'ee3bd84c728a37e2bbe061c1539c9ee6d71db18733b1ed53ee8d320481f55030'}, - 415000: {'ledger_hash': '6772a8a1c784db14c0bf111e415919c9da4e5ca142be0b9e323c82c1b13c74e0', 'txlist_hash': 'cfb81785cd48e9ba0e54fee4d62f49b347489da82139fd5e1555ae0bc11a33d5'}, - 420000: {'ledger_hash': '42167117e16943f44bb8117aa0a39bed2d863a454cd694d0bc5006a7aab23b06', 'txlist_hash': 'a1139870bef8eb9bbe60856029a4f01fce5432eb7aeacd088ba2e033757b86e3'}, -} - -CONSENSUS_HASH_VERSION_TESTNET = 7 -CHECKPOINTS_TESTNET = { - config.BLOCK_FIRST_TESTNET: {'ledger_hash': '63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223', 'txlist_hash': '63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'}, - 316000: {'ledger_hash': 'f645e6877da416b8b91670ac927df686c5ea6fc1158c150ae49d594222ed504c', 'txlist_hash': '3e29bcbf3873326097024cc26e9296f0164f552dd79c2ee7cfc344e6d64fa87d'}, - 319000: {'ledger_hash': '384ca28ac56976bc24a6ab7572b41bc61474e6b87fdee814135701d6a8f5c8a2', 'txlist_hash': '6c05c98418a6daa6de82dd59e000d3f3f5407c5432d4ab7d76047873a38e4d4b'}, - 322000: {'ledger_hash': 'f4015c37eb4f31ac42083fd0389cde4868acb5353d3f3abfe2f3a88aba8cae72', 'txlist_hash': '18f278154e9bc3bbcc39da905ab4ad3023742ab7723b55b0fd1c58c36cd3e9bf'}, - 325000: {'ledger_hash': 'd7f70a927f5aeed38e559ddc0bc4697601477ea43cde928ad228fefc195b02da', 'txlist_hash': '1a60e38664b39e0f501b3e5a60c6fc0bd4ed311b74872922c2dde4cb2267fd3e'}, - 329000: {'ledger_hash': '96637b4400cbe084c2c4f139f59b5bc16770815e96306423aaeb2b2677a9a657', 'txlist_hash': '79d577d8fbba0ad6ae67829dfa5824f758286ccd429d65b7d1d42989134d5b57'}, - 350000: {'ledger_hash': 'cae8fec787bba3d5c968a8f4b6fb22a54c96d5acbeadd0425f6b20c3a8813ea3', 'txlist_hash': '097df9c3079df4d96f59518df72492dfd7a79716462e3a4a30d62a37aec6fc16'}, - 400000: {'ledger_hash': '94abfd9c00c8462c155f64011e71af141b7d524e17de5aeda26b7469fe79b5f0', 'txlist_hash': 'a9fc42b69f80ec69f3f98e8a3cd81f4f946544fd0561a62a0891254c16970a87'}, - 450000: {'ledger_hash': '09eb9f2aa605ce77225362b4b556284acdd9f6d3bc273372dfae4a5be9e9b035', 'txlist_hash': '05af651c1de49d0728834991e50000fbf2286d7928961b71917f682a0f2b7171'}, - 500000: {'ledger_hash': '85f3bca8c88246ddfa1a5ec327e71f0696c182ed2a5fedf3712cd2e87e2661ac', 'txlist_hash': '663b34955116a96501e0c1c27f27d24bad7d45995913367553c5cfe4b8b9d0a9'}, - 550000: {'ledger_hash': 'c143026133af2d83bc49ef205b4623194466ca3e7c79f95da2ad565359ccb5ad', 'txlist_hash': '097b8bca7a243e0b9bdf089f34de15bd2dcd4727fb4e88aae7bfd96302250326'}, - 600000: {'ledger_hash': '82caf720967d0e43a1c49a6c75f255d9056ed1bffe3f96d962478faccdaba8ff', 'txlist_hash': '0d99f42184233426d70102d5ac3c80aaecf804d441a8a0d0ef26038d333ab7a7'}, - 650000: {'ledger_hash': 'bef100ae7d5027a8b3f32416c4f26e1f16b21cee2a986c57be1466a3ba338051', 'txlist_hash': '409ed86e4274b511193d187df92e433c734dcc890bf93496e7a7dee770e7035e'}, - 700000: {'ledger_hash': 'afe5e9c3f3a8c6f19c4f9feaf09df051c28202c6bae64f3563a09ffea9e79a6e', 'txlist_hash': '4f9765158855d24950c7e076615b0ad5b72738d4d579decfd3b93c998edf4fcb'}, - 750000: {'ledger_hash': 'e7c7969a6156facb193b77ef71b5e3fac49c6998e5a94ec3b90292be10ece9cc', 'txlist_hash': '6e511790656d3ffec0c912d697e5d1c2a4e401a1606203c77ab5a5855891bc2c'}, - 800000: {'ledger_hash': '42a7c679e51e5e8d38df26b67673b4850e8e6f72723aa19673b3219fcc02b77b', 'txlist_hash': '885ae1e6c21f5fb3645231aaa6bb6910fc21a0ae0ca5dbe9a4011f3b5295b3e7'}, - 850000: {'ledger_hash': '35b2a2ab4a8bfbc321d4545292887b4ccaea73415c7674f795aefa6e240890eb', 'txlist_hash': '72d5cfe1e729a22da9eacd4d7752c881c43a191904556b65a0fae82b770dcdf3'}, - 900000: {'ledger_hash': 'a5552b4998d2e5a516b9310d6592e7368771c1ad3b6e6330f6bc0baa3db31643', 'txlist_hash': '5a2e9fbd9b52ee32b8e8bfff993ed92dc22510aa7448277a704176cf01e55b04'}, - 950000: {'ledger_hash': '5a5e78b55ac294690229abff7ff8f74f390f3a47dc4d08a0bac40e2e89a5bed2', 'txlist_hash': 'f4fa9838fb38d3e5beffb760fae022dcc59c61c506dd28ac83ee48ba814d04b2'}, - 1000000: {'ledger_hash': 'eafca6700b9fd8f3992f8a18316e9ad59480ef74a4e7737793c101878aba8e1a', 'txlist_hash': '03deb626e031f30acd394bf49c35e11a487cb11e55dff5ba9a3f6d04b460c7de'}, - 1050000: {'ledger_hash': '8012ebaf4c6638173e88ecd3e7bb2242ab88a9bdf877fc32c42dbcd7d2d3bab1', 'txlist_hash': '896274fdba957961083b07b80634126bc9f0434b67d723ed1fa83157ce5cd9a7'}, - 1100000: {'ledger_hash': '76357f917235daa180c904cdf5c44366eef3e33539b7b0ba6a38f89582e82d22', 'txlist_hash': '36ecfd4b07f23176cd6960bc0adef97472c13793e53ac3df0eea0dd2e718a570'}, - 1150000: {'ledger_hash': '5924f004bfdc3be449401c764808ebced542d2e06ba30c5984830292d1a926aa', 'txlist_hash': '9ff139dacf4b04293074e962153b972d25fa16d862dae05f7f3acc15e83c4fe8'}, - 1200000: {'ledger_hash': 'a3d009bd2e0b838c185b8866233d7b4edaff87e5ec4cc4719578d1a8f9f8fe34', 'txlist_hash': '11dcf3a0ab714f05004a4e6c77fe425eb2a6427e4c98b7032412ab29363ffbb2'}, - 1250000: {'ledger_hash': '37244453b4eac67d1dbfc0f60116cac90dab7b814d756653ad3d9a072fbac61a', 'txlist_hash': 'c01ed3113f8fd3a6b54f5cefafd842ebf7c314ce82922e36236414d820c5277a'}, - 1300000: {'ledger_hash': 'a83c1cd582604130fd46f1304560caf0f4e3300f3ce7c3a89824b8901f13027f', 'txlist_hash': '67e663b75a80940941b8370ada4985be583edaa7ba454d49db9a864a7bb7979c'}, - 1350000: {'ledger_hash': 'f96e6aff578896a4568fb69f72aa0a8b52eb9ebffefca4bd7368790341cd821d', 'txlist_hash': '83e7d31217af274b13889bd8b9f8f61afcd7996c2c8913e9b53b1d575f54b7c1'}, - 1400000: {'ledger_hash': '85a23f6fee9ce9c80fa335729312183ff014920bbf297095ac77c4105fb67e17', 'txlist_hash': 'eee762f34a3f82e6332c58e0c256757d97ca308719323af78bf5924f08463e12'}, -} - -CONSENSUS_HASH_VERSION_REGTEST = 1 -CHECKPOINTS_REGTEST = { - config.BLOCK_FIRST_REGTEST: {'ledger_hash': '33cf0669a0d309d7e6b1bf79494613b69262b58c0ea03c9c221d955eb4c84fe5', 'txlist_hash': '33cf0669a0d309d7e6b1bf79494613b69262b58c0ea03c9c221d955eb4c84fe5'}, -} - -class ConsensusError(Exception): - pass - -def consensus_hash(db, field, previous_consensus_hash, content): - cursor = db.cursor() - block_index = util.CURRENT_BLOCK_INDEX - - # Initialise previous hash on first block. - if block_index <= config.BLOCK_FIRST: - assert not previous_consensus_hash - previous_consensus_hash = util.dhash_string(CONSENSUS_HASH_SEED) - - # Get previous hash. - if not previous_consensus_hash: - try: - previous_consensus_hash = list(cursor.execute('''SELECT * FROM blocks WHERE block_index = ?''', (block_index - 1,)))[0][field] - except IndexError: - previous_consensus_hash = None - if not previous_consensus_hash: - raise ConsensusError('Empty previous {} for block {}. Please launch a `reparse`.'.format(field, block_index)) - - # Calculate current hash. - if config.TESTNET: - consensus_hash_version = CONSENSUS_HASH_VERSION_TESTNET - elif config.REGTEST: - consensus_hash_version = CONSENSUS_HASH_VERSION_REGTEST - else: - consensus_hash_version = CONSENSUS_HASH_VERSION_MAINNET - - calculated_hash = util.dhash_string(previous_consensus_hash + '{}{}'.format(consensus_hash_version, ''.join(content))) - - # Verify hash (if already in database) or save hash (if not). - # NOTE: do not enforce this for messages_hashes, those are more informational (for now at least) - found_hash = list(cursor.execute('''SELECT * FROM blocks WHERE block_index = ?''', (block_index,)))[0][field] or None - if found_hash and field != 'messages_hash': - # Check against existing value. - if calculated_hash != found_hash: - raise ConsensusError('Inconsistent {} for block {} (calculated {}, vs {} in database).'.format( - field, block_index, calculated_hash, found_hash)) - else: - # Save new hash. - cursor.execute('''UPDATE blocks SET {} = ? WHERE block_index = ?'''.format(field), (calculated_hash, block_index)) - - # Check against checkpoints. - if config.TESTNET: - checkpoints = CHECKPOINTS_TESTNET - elif config.REGTEST: - checkpoints = CHECKPOINTS_REGTEST - else: - checkpoints = CHECKPOINTS_MAINNET - - if field != 'messages_hash' and block_index in checkpoints and checkpoints[block_index][field] != calculated_hash: - raise ConsensusError('Incorrect {} hash for block {}. Calculated {} but expected {}'.format(field, block_index, calculated_hash, checkpoints[block_index][field],)) - - return calculated_hash, found_hash - -class SanityError(Exception): - pass - -def asset_conservation(db): - logger.debug('Checking for conservation of assets.') - supplies = util.supplies(db) - held = util.held(db) - for asset in supplies.keys(): - asset_issued = supplies[asset] - asset_held = held[asset] if asset in held and held[asset] != None else 0 - if asset_issued != asset_held: - raise SanityError('{} {} issued ≠ {} {} held'.format(util.value_out(db, asset_issued, asset), asset, util.value_out(db, asset_held, asset), asset)) - logger.debug('{} has been conserved ({} {} both issued and held)'.format(asset, util.value_out(db, asset_issued, asset), asset)) - -class VersionError(Exception): - pass -class VersionUpdateRequiredError(VersionError): - pass - -def check_change(protocol_change, change_name): - - # Check client version. - passed = True - if config.VERSION_MAJOR < protocol_change['minimum_version_major']: - passed = False - elif config.VERSION_MAJOR == protocol_change['minimum_version_major']: - if config.VERSION_MINOR < protocol_change['minimum_version_minor']: - passed = False - elif config.VERSION_MINOR == protocol_change['minimum_version_minor']: - if config.VERSION_REVISION < protocol_change['minimum_version_revision']: - passed = False - - if not passed: - explanation = 'Your version of {} is v{}, but, as of block {}, the minimum version is v{}.{}.{}. Reason: ‘{}’. Please upgrade to the latest version and restart the server.'.format( - config.APP_NAME, config.VERSION_STRING, protocol_change['block_index'], protocol_change['minimum_version_major'], protocol_change['minimum_version_minor'], - protocol_change['minimum_version_revision'], change_name) - if util.CURRENT_BLOCK_INDEX >= protocol_change['block_index']: - raise VersionUpdateRequiredError(explanation) - else: - warnings.warn(explanation) - -def software_version(): - if config.FORCE: - return - logger.debug('Checking version.') - - try: - host = 'https://counterpartyxcp.github.io/counterparty-lib/counterpartylib/protocol_changes.json' - response = requests.get(host, headers={'cache-control': 'no-cache'}) - versions = json.loads(response.text) - except (requests.exceptions.ConnectionError, ConnectionRefusedError, ValueError) as e: - logger.warning('Unable to check version! ' + str(sys.exc_info()[1])) - return - - for change_name in versions: - protocol_change = versions[change_name] - try: - check_change(protocol_change, change_name) - except VersionUpdateRequiredError as e: - logger.error("Version Update Required", exc_info=sys.exc_info()) - sys.exit(config.EXITCODE_UPDATE_REQUIRED) - - logger.debug('Version check passed.') - - -class DatabaseVersionError(Exception): - def __init__(self, message, reparse_block_index): - super(DatabaseVersionError, self).__init__(message) - self.reparse_block_index = reparse_block_index - -def database_version(db): - if config.FORCE: - return - logger.debug('Checking database version.') - - version_major, version_minor = database.version(db) - if version_major != config.VERSION_MAJOR: - # Rollback database if major version has changed. - raise DatabaseVersionError('Client major version number mismatch ({} ≠ {}).'.format(version_major, config.VERSION_MAJOR), config.BLOCK_FIRST) - elif version_minor != config.VERSION_MINOR: - # Reparse all transactions if minor version has changed. - raise DatabaseVersionError('Client minor version number mismatch ({} ≠ {}).'.format(version_minor, config.VERSION_MINOR), None) - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/database.py b/counterpartylib/lib/database.py deleted file mode 100644 index 3f6d1f155e..0000000000 --- a/counterpartylib/lib/database.py +++ /dev/null @@ -1,157 +0,0 @@ -import apsw -import logging -logger = logging.getLogger(__name__) -import time -import collections -import copy - -from counterpartylib.lib import config -from counterpartylib.lib import util -from counterpartylib.lib import exceptions -from counterpartylib.lib import log - -BLOCK_MESSAGES = [] - -def rowtracer(cursor, sql): - """Converts fetched SQL data into dict-style""" - dictionary = {} - for index, (name, type_) in enumerate(cursor.getdescription()): - dictionary[name] = sql[index] - return dictionary - -def exectracer(cursor, sql, bindings): - # This means that all changes to database must use a very simple syntax. - # TODO: Need sanity checks here. - sql = sql.lower() - - if sql.startswith('create trigger') or sql.startswith('drop trigger'): - #CREATE TRIGGER stmts may include an "insert" or "update" as part of them - return True - - # Parse SQL. - array = sql.split('(')[0].split(' ') - command = array[0] - if 'insert' in sql: - category = array[2] - elif 'update' in sql: - category = array[1] - else: - #CREATE TABLE, etc - return True - - db = cursor.getconnection() - dictionary = {'command': command, 'category': category, 'bindings': bindings} - - skip_tables = [ - 'blocks', 'transactions', 'transaction_outputs', - 'balances', 'messages', 'mempool', 'assets', - 'new_sends', 'new_issuances' # interim table for CIP10 activation - ] - skip_tables_block_messages = copy.copy(skip_tables) - if command == 'update': - # List message manually. - skip_tables += ['orders', 'bets', 'rps', 'order_matches', 'bet_matches', 'rps_matches'] - - # Record alteration in database. - if category not in skip_tables: - if bindings is not None: - log.message(db, bindings['block_index'], command, category, bindings) - # Record alteration in computation of message feed hash for the block - if category not in skip_tables_block_messages: - # don't include asset_longname as part of the messages hash - # until subassets are enabled - if category == 'issuances' and not util.enabled('subassets'): - if isinstance(bindings, dict) and 'asset_longname' in bindings: del bindings['asset_longname'] - - # don't include memo as part of the messages hash - # until enhanced_sends are enabled - if category == 'sends' and not util.enabled('enhanced_sends'): - if isinstance(bindings, dict) and 'memo' in bindings: del bindings['memo'] - - sorted_bindings = sorted(bindings.items()) if isinstance(bindings, dict) else [bindings,] - BLOCK_MESSAGES.append('{}{}{}'.format(command, category, sorted_bindings)) - - return True - -class DatabaseIntegrityError(exceptions.DatabaseError): - pass -def get_connection(read_only=True, foreign_keys=True, integrity_check=True): - """Connects to the SQLite database, returning a db `Connection` object""" - logger.debug('Creating connection to `{}`.'.format(config.DATABASE)) - - if read_only: - db = apsw.Connection(config.DATABASE, flags=apsw.SQLITE_OPEN_READONLY) - else: - db = apsw.Connection(config.DATABASE) - cursor = db.cursor() - - # For integrity, security. - if foreign_keys and not read_only: - logger.info('Checking database foreign keys...') - cursor.execute('''PRAGMA foreign_keys = ON''') - cursor.execute('''PRAGMA defer_foreign_keys = ON''') - rows = list(cursor.execute('''PRAGMA foreign_key_check''')) - if rows: - for row in rows: - logger.debug('Foreign Key Error: {}'.format(row)) - raise exceptions.DatabaseError('Foreign key check failed.') - - # So that writers don’t block readers. - cursor.execute('''PRAGMA journal_mode = WAL''') - logger.info('Foreign key check completed.') - - # Make case sensitive the `LIKE` operator. - # For insensitive queries use 'UPPER(fieldname) LIKE value.upper()'' - cursor.execute('''PRAGMA case_sensitive_like = ON''') - - if integrity_check: - logger.info('Checking database integrity...') - integral = False - for i in range(10): # DUPE - try: - cursor.execute('''PRAGMA integrity_check''') - rows = cursor.fetchall() - if not (len(rows) == 1 and rows[0][0] == 'ok'): - raise exceptions.DatabaseError('Integrity check failed.') - integral = True - break - except DatabaseIntegrityError: - time.sleep(1) - continue - if not integral: - raise exceptions.DatabaseError('Could not perform integrity check.') - logger.info('Integrity check completed.') - - db.setrowtrace(rowtracer) - db.setexectrace(exectracer) - - cursor.close() - return db - -def version(db): - cursor = db.cursor() - user_version = cursor.execute('PRAGMA user_version').fetchall()[0]['user_version'] - # manage old user_version - if user_version == config.VERSION_MINOR: - version_minor = user_version - version_major = config.VERSION_MAJOR - user_version = (config.VERSION_MAJOR * 1000) + version_minor - cursor.execute('PRAGMA user_version = {}'.format(user_version)) - else: - version_minor = user_version % 1000 - version_major = user_version // 1000 - return version_major, version_minor - -def update_version(db): - cursor = db.cursor() - user_version = (config.VERSION_MAJOR * 1000) + config.VERSION_MINOR - cursor.execute('PRAGMA user_version = {}'.format(user_version)) # Syntax?! - logger.info('Database version number updated.') - -def vacuum(db): - logger.info('Starting database VACUUM. This may take awhile...') - cursor = db.cursor() - cursor.execute('VACUUM') - logger.info('Database VACUUM completed.') - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/kickstart/bc_data_stream.py b/counterpartylib/lib/kickstart/bc_data_stream.py deleted file mode 100644 index 57ab48f559..0000000000 --- a/counterpartylib/lib/kickstart/bc_data_stream.py +++ /dev/null @@ -1,125 +0,0 @@ -# -# Workalike python implementation of Bitcoin's CDataStream class. -# -import struct -import mmap -from .exceptions import SerializationError - -class BCDataStream(object): - def __init__(self): - self.input = None - self.read_cursor = 0 - - def clear(self): - self.input = None - self.read_cursor = 0 - - def write(self, bytes): # Initialize with string of bytes - if self.input is None: - self.input = bytes - else: - self.input += bytes - - def map_file(self, file, start): # Initialize with bytes from file - self.input = mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) - self.read_cursor = start - - def seek_file(self, position): - self.read_cursor = position - - def close_file(self): - self.input.close() - - def read_string(self): - # Strings are encoded depending on length: - # 0 to 252 : 1-byte-length followed by bytes (if any) - # 253 to 65,535 : byte'253' 2-byte-length followed by bytes - # 65,536 to 4,294,967,295 : byte '254' 4-byte-length followed by bytes - # ... and the Bitcoin client is coded to understand: - # greater than 4,294,967,295 : byte '255' 8-byte-length followed by bytes of string - # ... but I don't think it actually handles any strings that big. - if self.input is None: - raise SerializationError("call write(bytes) before trying to deserialize") - - try: - length = self.read_compact_size() - except IndexError: - raise SerializationError("attempt to read past end of buffer") - - return self.read_bytes(length) - - def write_string(self, string): - # Length-encoded as with read-string - self.write_compact_size(len(string)) - self.write(string) - - def read_bytes(self, length): - try: - result = self.input[self.read_cursor:self.read_cursor+length] - self.read_cursor += length - return result - except IndexError: - raise SerializationError("attempt to read past end of buffer") - - return '' - - def read_boolean(self): return self.read_bytes(1)[0] != chr(0) - def read_int16(self): return self._read_num('' - -def message(db, block_index, command, category, bindings, tx_hash=None): - cursor = db.cursor() - - # Get last message index. - messages = list(cursor.execute('''SELECT * FROM messages - WHERE message_index = (SELECT MAX(message_index) from messages)''')) - if messages: - assert len(messages) == 1 - message_index = messages[0]['message_index'] + 1 - else: - message_index = 0 - - # Not to be misleading… - if block_index == config.MEMPOOL_BLOCK_INDEX: - try: - del bindings['status'] - del bindings['block_index'] - del bindings['tx_index'] - except KeyError: - pass - - # Handle binary data. - items = [] - for item in sorted(bindings.items()): - if type(item[1]) == bytes: - items.append((item[0], binascii.hexlify(item[1]).decode('ascii'))) - else: - items.append(item) - - bindings_string = json.dumps(collections.OrderedDict(items)) - cursor.execute('insert into messages values(:message_index, :block_index, :command, :category, :bindings, :timestamp)', - (message_index, block_index, command, category, bindings_string, curr_time())) - - # Log only real transactions. - if block_index != config.MEMPOOL_BLOCK_INDEX: - log(db, command, category, bindings) - - cursor.close() - - -def log (db, command, category, bindings): - - cursor = db.cursor() - - for element in bindings.keys(): - try: - str(bindings[element]) - except KeyError: - bindings[element] = '' - - # Slow?! - def output (quantity, asset): - try: - if asset not in ('fraction', 'leverage'): - return str(util.value_out(db, quantity, asset)) + ' ' + asset - else: - return str(util.value_out(db, quantity, asset)) - except exceptions.AssetError: - return '' - except decimal.DivisionByZero: - return '' - except TypeError: - return '' - - if command == 'update': - if category == 'order': - logger.debug('Database: set status of order {} to {}.'.format(bindings['tx_hash'], bindings['status'])) - elif category == 'bet': - logger.debug('Database: set status of bet {} to {}.'.format(bindings['tx_hash'], bindings['status'])) - elif category == 'order_matches': - logger.debug('Database: set status of order_match {} to {}.'.format(bindings['order_match_id'], bindings['status'])) - elif category == 'bet_matches': - logger.debug('Database: set status of bet_match {} to {}.'.format(bindings['bet_match_id'], bindings['status'])) - elif category == 'dispensers': - escrow_quantity = '' - divisible = get_asset_info(cursor, bindings['asset'])['divisible'] - - if "escrow_quantity" in bindings: - if divisible: - escrow_quantity = "{:.8f}".format(bindings["escrow_quantity"]/config.UNIT) - else: - escrow_quantity = bindings["escrow_quantity"] - - if ("action" in bindings) and bindings["action"] == 'refill dispenser': - logger.info("Dispenser: {} refilled a dispenser with {} {}".format(bindings["source"],escrow_quantity,bindings["asset"])) - elif "prev_status" in bindings: #There was a dispense - if bindings["prev_status"] == 0: - if bindings["status"] == 10: - if bindings["closing_reason"] == "no_more_to_give" or bindings["closing_reason"] == "depleted": - logger.info("Dispenser: {} closed dispenser for {} (dispenser empty)".format(bindings["source"],bindings["asset"])) - elif bindings["closing_reason"] == "max_dispenses_reached": - logger.info("Dispenser: {} closed dispenser for {} (dispenser reached max dispenses limit)".format(bindings["source"],bindings["asset"])) - - elif bindings["status"] == 10 or bindings["status"] == 11: #Address closed the dispenser - - if bindings["status"] == 10: - operator_string = "operator closed" - else: - operator_string = "operator marked the dispenser to close it" - - if util.enabled("dispenser_origin_permission_extended", bindings['block_index']) and ("origin" in bindings) and bindings['source'] != bindings['origin']: - if bindings["status"] == 10: - operator_string = "closed by origin" - else: - operator_string = "marked to close by origin" - - logger.info("Dispenser: {} closed dispenser for {} ({})".format(bindings["source"],bindings["asset"],operator_string)) - # TODO: elif category == 'balances': - # logger.debug('Database: set balance of {} in {} to {}.'.format(bindings['address'], bindings['asset'], output(bindings['quantity'], bindings['asset']).split(' ')[0])) - - elif command == 'insert': - - if category == 'credits': - logger.debug('Credit: {} to {} #{}# <{}>'.format(output(bindings['quantity'], bindings['asset']), bindings['address'], bindings['action'], bindings['event'])) - - elif category == 'debits': - logger.debug('Debit: {} from {} #{}# <{}>'.format(output(bindings['quantity'], bindings['asset']), bindings['address'], bindings['action'], bindings['event'])) - - elif category == 'sends': - logger.info('Send: {} from {} to {} ({}) [{}]'.format(output(bindings['quantity'], bindings['asset']), bindings['source'], bindings['destination'], bindings['tx_hash'], bindings['status'])) - - elif category == 'orders': - logger.info('Order: {} ordered {} for {} in {} blocks, with a provided fee of {:.8f} {} and a required fee of {:.8f} {} ({}) [{}]'.format(bindings['source'], output(bindings['give_quantity'], bindings['give_asset']), output(bindings['get_quantity'], bindings['get_asset']), bindings['expiration'], bindings['fee_provided'] / config.UNIT, config.BTC, bindings['fee_required'] / config.UNIT, config.BTC, bindings['tx_hash'], bindings['status'])) - - elif category == 'order_matches': - logger.info('Order Match: {} for {} ({}) [{}]'.format(output(bindings['forward_quantity'], bindings['forward_asset']), output(bindings['backward_quantity'], bindings['backward_asset']), bindings['id'], bindings['status'])) - - elif category == 'btcpays': - logger.info('{} Payment: {} paid {} to {} for order match {} ({}) [{}]'.format(config.BTC, bindings['source'], output(bindings['btc_amount'], config.BTC), bindings['destination'], bindings['order_match_id'], bindings['tx_hash'], bindings['status'])) - - elif category == 'issuances': - if (get_asset_issuances_quantity(cursor, bindings["asset"]) == 0) or (bindings['quantity'] > 0): #This is the first issuance or the creation of more supply, so we have to log the creation of the token - if bindings['divisible']: - divisibility = 'divisible' - unit = config.UNIT - else: - divisibility = 'indivisible' - unit = 1 - try: - quantity = util.value_out(cursor, bindings['quantity'], None, divisible=bindings['divisible']) - except Exception as e: - quantity = '?' - - if 'asset_longname' in bindings and bindings['asset_longname'] is not None: - logger.info('Subasset Issuance: {} created {} of {} subasset {} as numeric asset {} ({}) [{}]'.format(bindings['source'], quantity, divisibility, bindings['asset_longname'], bindings['asset'], bindings['tx_hash'], bindings['status'])) - else: - logger.info('Issuance: {} created {} of {} asset {} ({}) [{}]'.format(bindings['source'], quantity, divisibility, bindings['asset'], bindings['tx_hash'], bindings['status'])) - - if bindings['locked']: - lock_issuance = get_lock_issuance(cursor, bindings["asset"]) - - if (lock_issuance == None) or (lock_issuance['tx_hash'] == bindings['tx_hash']): - logger.info('Issuance: {} locked asset {} ({}) [{}]'.format(bindings['source'], bindings['asset'], bindings['tx_hash'], bindings['status'])) - - if bindings['transfer']: - logger.info('Issuance: {} transfered asset {} to {} ({}) [{}]'.format(bindings['source'], bindings['asset'], bindings['issuer'], bindings['tx_hash'], bindings['status'])) - - elif category == 'broadcasts': - if bindings['locked']: - logger.info('Broadcast: {} locked his feed ({}) [{}]'.format(bindings['source'], bindings['tx_hash'], bindings['status'])) - else: - logger.info('Broadcast: ' + bindings['source'] + ' at ' + isodt(bindings['timestamp']) + ' with a fee of {}%'.format(output(D(bindings['fee_fraction_int'] / 1e8), 'fraction')) + ' (' + bindings['tx_hash'] + ')' + ' [{}]'.format(bindings['status'])) - - elif category == 'bets': - logger.info('Bet: {} against {}, by {}, on {}'.format(output(bindings['wager_quantity'], config.XCP), output(bindings['counterwager_quantity'], config.XCP), bindings['source'], bindings['feed_address'])) - - elif category == 'bet_matches': - placeholder = '' - if bindings['target_value'] >= 0: # Only non‐negative values are valid. - placeholder = ' that ' + str(output(bindings['target_value'], 'value')) - if bindings['leverage']: - placeholder += ', leveraged {}x'.format(output(bindings['leverage'] / 5040, 'leverage')) - logger.info('Bet Match: {} for {} against {} for {} on {} at {}{} ({}) [{}]'.format(util.BET_TYPE_NAME[bindings['tx0_bet_type']], output(bindings['forward_quantity'], config.XCP), util.BET_TYPE_NAME[bindings['tx1_bet_type']], output(bindings['backward_quantity'], config.XCP), bindings['feed_address'], isodt(bindings['deadline']), placeholder, bindings['id'], bindings['status'])) - - elif category == 'dividends': - logger.info('Dividend: {} paid {} per unit of {} ({}) [{}]'.format(bindings['source'], output(bindings['quantity_per_unit'], bindings['dividend_asset']), bindings['asset'], bindings['tx_hash'], bindings['status'])) - - elif category == 'burns': - logger.info('Burn: {} burned {} for {} ({}) [{}]'.format(bindings['source'], output(bindings['burned'], config.BTC), output(bindings['earned'], config.XCP), bindings['tx_hash'], bindings['status'])) - - elif category == 'cancels': - logger.info('Cancel: {} ({}) [{}]'.format(bindings['offer_hash'], bindings['tx_hash'], bindings['status'])) - - elif category == 'rps': - log_message = 'RPS: {} opens game with {} possible moves and a wager of {}'.format(bindings['source'], bindings['possible_moves'], output(bindings['wager'], 'XCP')) - logger.info(log_message) - - elif category == 'rps_matches': - log_message = 'RPS Match: {} is playing a {}-moves game with {} with a wager of {} ({}) [{}]'.format(bindings['tx0_address'], bindings['possible_moves'], bindings['tx1_address'], output(bindings['wager'], 'XCP'), bindings['id'], bindings['status']) - logger.info(log_message) - - elif category == 'rpsresolves': - - if bindings['status'] == 'valid': - rps_matches = list(cursor.execute('''SELECT * FROM rps_matches WHERE id = ?''', (bindings['rps_match_id'],))) - assert len(rps_matches) == 1 - rps_match = rps_matches[0] - log_message = 'RPS Resolved: {} is playing {} on a {}-moves game with {} with a wager of {} ({}) [{}]'.format(rps_match['tx0_address'], bindings['move'], rps_match['possible_moves'], rps_match['tx1_address'], output(rps_match['wager'], 'XCP'), rps_match['id'], rps_match['status']) - else: - log_message = 'RPS Resolved: {} [{}]'.format(bindings['tx_hash'], bindings['status']) - logger.info(log_message) - - elif category == 'order_expirations': - logger.info('Expired order: {}'.format(bindings['order_hash'])) - - elif category == 'order_match_expirations': - logger.info('Expired Order Match awaiting payment: {}'.format(bindings['order_match_id'])) - - elif category == 'bet_expirations': - logger.info('Expired bet: {}'.format(bindings['bet_hash'])) - - elif category == 'bet_match_expirations': - logger.info('Expired Bet Match: {}'.format(bindings['bet_match_id'])) - - elif category == 'bet_match_resolutions': - # DUPE - cfd_type_id = util.BET_TYPE_ID['BullCFD'] + util.BET_TYPE_ID['BearCFD'] - equal_type_id = util.BET_TYPE_ID['Equal'] + util.BET_TYPE_ID['NotEqual'] - - if bindings['bet_match_type_id'] == cfd_type_id: - if bindings['settled']: - logger.info('Bet Match Settled: {} credited to the bull, {} credited to the bear, and {} credited to the feed address ({})'.format(output(bindings['bull_credit'], config.XCP), output(bindings['bear_credit'], config.XCP), output(bindings['fee'], config.XCP), bindings['bet_match_id'])) - else: - logger.info('Bet Match Force‐Liquidated: {} credited to the bull, {} credited to the bear, and {} credited to the feed address ({})'.format(output(bindings['bull_credit'], config.XCP), output(bindings['bear_credit'], config.XCP), output(bindings['fee'], config.XCP), bindings['bet_match_id'])) - - elif bindings['bet_match_type_id'] == equal_type_id: - logger.info('Bet Match Settled: {} won the pot of {}; {} credited to the feed address ({})'.format(bindings['winner'], output(bindings['escrow_less_fee'], config.XCP), output(bindings['fee'], config.XCP), bindings['bet_match_id'])) - - elif category == 'rps_expirations': - logger.info('Expired RPS: {}'.format(bindings['rps_hash'])) - - elif category == 'rps_match_expirations': - logger.info('Expired RPS Match: {}'.format(bindings['rps_match_id'])) - - elif category == 'destructions': - try: - asset_info = get_asset_info(cursor, bindings['asset']) - quantity = bindings['quantity'] - if asset_info['divisible']: - quantity = "{:.8f}".format(quantity/config.UNIT) - except IndexError as e: - quantity = '?' - - logger.info('Destruction: {} destroyed {} {} with tag ‘{}’({}) [{}]'.format(bindings['source'], quantity, bindings['asset'], bindings['tag'], bindings['tx_hash'], bindings['status'])) - - elif category == 'dispensers': - each_price = bindings['satoshirate'] - currency = config.BTC - dispenser_label = 'dispenser' - escrow_quantity = bindings['escrow_quantity'] - give_quantity = bindings['give_quantity'] - - if (bindings['oracle_address'] != None) and util.enabled('oracle_dispensers'): - each_price = "{:.2f}".format(each_price/100.0) - oracle_last_price, oracle_fee, currency, oracle_last_updated = util.get_oracle_last_price(db, bindings['oracle_address'], bindings['block_index']) - dispenser_label = 'oracle dispenser using {}'.format(bindings['oracle_address']) - else: - each_price = "{:.8f}".format(each_price/config.UNIT) - - divisible = get_asset_info(cursor, bindings['asset'])['divisible'] - - if divisible: - escrow_quantity = "{:.8f}".format(escrow_quantity/config.UNIT) - give_quantity = "{:.8f}".format(give_quantity/config.UNIT) - - if bindings['status'] == 0: - logger.info('Dispenser: {} opened a {} for asset {} with {} balance, giving {} {} for each {} {}'.format(bindings['source'], dispenser_label, bindings['asset'], escrow_quantity, give_quantity, bindings['asset'], each_price, currency)) - elif bindings['status'] == 1: - logger.info('Dispenser: {} (empty address) opened a {} for asset {} with {} balance, giving {} {} for each {} {}'.format(bindings['source'], dispenser_label, bindings['asset'], escrow_quantity, give_quantity, bindings['asset'], each_price, currency)) - elif bindings['status'] == 10: - logger.info('Dispenser: {} closed a {} for asset {}'.format(bindings['source'], dispenser_label, bindings['asset'])) - - elif category == 'dispenses': - cursor.execute('SELECT * FROM dispensers WHERE tx_hash=:tx_hash', { - 'tx_hash': bindings['dispenser_tx_hash'] - }) - dispensers = cursor.fetchall() - dispenser = dispensers[0] - - if (dispenser["oracle_address"] != None) and util.enabled('oracle_dispensers'): - tx_btc_amount = get_tx_info(cursor, bindings['tx_hash'])/config.UNIT - oracle_last_price, oracle_fee, oracle_fiat_label, oracle_last_price_updated = util.get_oracle_last_price(db, dispenser["oracle_address"], bindings['block_index']) - fiatpaid = round(tx_btc_amount*oracle_last_price,2) - - logger.info('Dispense: {} from {} to {} for {:.8f} {} ({} {}) ({})'.format(output(bindings['dispense_quantity'], bindings['asset']), bindings['source'], bindings['destination'], tx_btc_amount, config.BTC, fiatpaid, oracle_fiat_label, bindings['tx_hash'])) - else: - logger.info('Dispense: {} from {} to {} ({})'.format(output(bindings['dispense_quantity'], bindings['asset']), bindings['source'], bindings['destination'], bindings['tx_hash'])) - - cursor.close() - -def get_lock_issuance(cursor, asset): - cursor.execute('''SELECT * FROM issuances \ - WHERE (status = ? AND asset = ? AND locked = ?) - ORDER BY tx_index ASC''', ('valid', asset, True)) - issuances = cursor.fetchall() - - if len(issuances) > 0: - return issuances[0] - - return None - -def get_asset_issuances_quantity(cursor, asset): - cursor.execute('''SELECT COUNT(*) AS issuances_count FROM issuances \ - WHERE (status = ? AND asset = ?) - ORDER BY tx_index DESC''', ('valid', asset)) - issuances = cursor.fetchall() - return issuances[0]['issuances_count'] - -def get_asset_info(cursor, asset): - if asset == config.BTC or asset == config.XCP: - return {'divisible':True} - - cursor.execute('''SELECT * FROM issuances \ - WHERE (status = ? AND asset = ?) - ORDER BY tx_index DESC''', ('valid', asset)) - issuances = cursor.fetchall() - return issuances[0] - -def get_tx_info(cursor, tx_hash): - cursor.execute('SELECT * FROM transactions WHERE tx_hash=:tx_hash', { - 'tx_hash': tx_hash - }) - transactions = cursor.fetchall() - transaction = transactions[0] - - return transaction["btc_amount"] - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 diff --git a/counterpartylib/lib/messages/dispenser.py b/counterpartylib/lib/messages/dispenser.py deleted file mode 100644 index 9e3b38a418..0000000000 --- a/counterpartylib/lib/messages/dispenser.py +++ /dev/null @@ -1,605 +0,0 @@ -#! /usr/bin/python3 -# -# What is a dispenser? -# -# A dispenser is a type of order where the holder address gives out a given amount -# of units of an asset for a given amount of BTC satoshis received. -# It's a very simple but powerful semantic to allow swaps to operate on-chain. -# - -import binascii -import json -import pprint -import struct -import logging -from math import floor -logger = logging.getLogger(__name__) - -from counterpartylib.lib import config -from counterpartylib.lib import exceptions -from counterpartylib.lib import util -from counterpartylib.lib import log -from counterpartylib.lib import message_type -from counterpartylib.lib import address -from counterpartylib.lib import backend - -FORMAT = '>QQQQB' -LENGTH = 33 -ID = 12 -DISPENSE_ID = 13 - -STATUS_OPEN = 0 -STATUS_OPEN_EMPTY_ADDRESS = 1 -#STATUS_OPEN_ORACLE_PRICE = 20 -#STATUS_OPEN_ORACLE_PRICE_EMPTY_ADDRESS = 21 -STATUS_CLOSED = 10 -STATUS_CLOSING = 11 - -def initialise(db): - cursor = db.cursor() - cursor.execute('''CREATE TABLE IF NOT EXISTS dispensers( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - give_quantity INTEGER, - escrow_quantity INTEGER, - satoshirate INTEGER, - status INTEGER, - give_remaining INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) - ''') - # Disallows invalids: FOREIGN KEY (order_match_id) REFERENCES order_matches(id)) - cursor.execute('''CREATE INDEX IF NOT EXISTS - dispensers_source_idx ON dispensers (source) - ''') - cursor.execute('''CREATE INDEX IF NOT EXISTS - dispensers_asset_idx ON dispensers (asset) - ''') - - cursor.execute('''CREATE TABLE IF NOT EXISTS dispenses( - tx_index INTEGER, - dispense_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - dispense_quantity INTEGER, - dispenser_tx_hash TEXT, - PRIMARY KEY (tx_index, dispense_index, source, destination), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) - ''') - - cursor.execute('''CREATE TABLE IF NOT EXISTS dispenser_refills( - tx_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - dispense_quantity INTEGER, - dispenser_tx_hash TEXT, - PRIMARY KEY (tx_index, tx_hash, source, destination), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)) - ''') - - columns = [column['name'] for column in cursor.execute('''PRAGMA table_info(dispenses)''')] - if 'dispenser_tx_hash' not in columns: - cursor.execute('ALTER TABLE dispenses ADD COLUMN dispenser_tx_hash TEXT') - - columns = [column['name'] for column in cursor.execute('''PRAGMA table_info(dispensers)''')] - if 'oracle_address' not in columns: - cursor.execute('ALTER TABLE dispensers ADD COLUMN oracle_address TEXT') - - #this column will be used to know when a dispenser was marked to close - if 'last_status_tx_hash' not in columns: - cursor.execute('ALTER TABLE dispensers ADD COLUMN last_status_tx_hash TEXT') - - if "origin" not in columns: - cursor.execute('ALTER TABLE dispensers ADD COLUMN origin TEXT') - - cursor.execute("UPDATE dispensers AS d SET origin = (SELECT t.source FROM transactions t WHERE d.tx_hash = t.tx_hash)") - - cursor.execute('''INSERT INTO dispenser_refills - SELECT t.tx_index, deb.event, deb.block_index, deb.address, dis.source, deb.asset, deb.quantity, dis.tx_hash FROM debits deb - LEFT JOIN transactions t ON t.tx_hash = deb.event - LEFT JOIN dispensers dis ON - dis.source = deb.address - AND dis.asset = deb.asset - AND dis.tx_index = (SELECT max(dis2.tx_index) FROM dispensers dis2 WHERE dis2.source = deb.address AND dis2.asset = deb.asset AND dis2.block_index <= deb.block_index) - WHERE deb.action = 'refill dispenser' AND dis.source IS NOT NULL'''); - - -def validate (db, source, asset, give_quantity, escrow_quantity, mainchainrate, status, open_address, block_index, oracle_address): - problems = [] - order_match = None - asset_id = None - - if asset == config.BTC: - problems.append('cannot dispense %s' % config.BTC) - return None, problems - - # resolve subassets - asset = util.resolve_subasset_longname(db, asset) - - if status == STATUS_OPEN or status == STATUS_OPEN_EMPTY_ADDRESS: - if give_quantity <= 0: - problems.append('give_quantity must be positive') - if mainchainrate <= 0: - problems.append('mainchainrate must be positive') - if escrow_quantity < give_quantity: - problems.append('escrow_quantity must be greater or equal than give_quantity') - elif not(status == STATUS_CLOSED): - problems.append('invalid status %i' % status) - - cursor = db.cursor() - cursor.execute('''SELECT quantity FROM balances \ - WHERE address = ? and asset = ?''', (source,asset,)) - available = cursor.fetchall() - - if len(available) == 0: - problems.append('address doesn\'t has the asset %s' % asset) - elif len(available) >= 1 and available[0]['quantity'] < escrow_quantity: - problems.append('address doesn\'t has enough balance of %s (%i < %i)' % (asset, available[0]['quantity'], escrow_quantity)) - else: - if status == STATUS_OPEN_EMPTY_ADDRESS and not(open_address): - open_address = source - status = STATUS_OPEN - - - if util.enabled("dispenser_origin_permission_extended", block_index) and status == STATUS_CLOSED and open_address and open_address != source: - cursor.execute('''SELECT * FROM dispensers WHERE source = ? AND asset = ? AND status IN (0,11) AND origin=?''', (open_address, asset, source)) - else: - query_address = open_address if status == STATUS_OPEN_EMPTY_ADDRESS else source - cursor.execute('''SELECT * FROM dispensers WHERE source = ? AND asset = ? AND status IN (0,11)''', (query_address, asset)) - open_dispensers = cursor.fetchall() - if len(open_dispensers) == 0 or open_dispensers[0]["status"] != STATUS_CLOSING: - if status == STATUS_OPEN or status == STATUS_OPEN_EMPTY_ADDRESS: - if len(open_dispensers) > 0: - max_refills = util.get_value_by_block_index("max_refills", block_index) - refilling_count = 0 - if max_refills > 0: - cursor.execute('''SELECT count(*) cnt FROM dispenser_refills WHERE dispenser_tx_hash = ?''', (open_dispensers[0]["tx_hash"],)) - refilling_count = cursor.fetchall()[0]['cnt'] - - #It's a valid refill - if open_dispensers[0]['satoshirate'] == mainchainrate and open_dispensers[0]['give_quantity'] == give_quantity: - if (max_refills > 0) and (refilling_count >= max_refills): - problems.append('the dispenser reached its maximum refilling') - else: - if open_dispensers[0]['satoshirate'] != mainchainrate: - problems.append('address has a dispenser already opened for asset %s with a different mainchainrate' % asset) - if open_dispensers[0]['give_quantity'] != give_quantity: - problems.append('address has a dispenser already opened for asset %s with a different give_quantity' % asset) - elif status == STATUS_CLOSED: - if len(open_dispensers) == 0: - problems.append('address doesnt has an open dispenser for asset %s' % asset) - - if status == STATUS_OPEN_EMPTY_ADDRESS: - #If an address is trying to refill a dispenser in a different address and it's the creator - if not (util.enabled("dispenser_origin_permission_extended", block_index) and (len(open_dispensers) > 0) and (open_dispensers[0]["origin"] == source)): - cursor.execute('''SELECT count(*) cnt FROM dispensers WHERE source = ? AND status = ? AND origin = ?''', (query_address,STATUS_CLOSED,source)) - dispensers_from_same_origin = cursor.fetchall() - - if not (util.enabled("dispenser_origin_permission_extended", block_index) and dispensers_from_same_origin[0]['cnt'] > 0): - #It means that the same origin has not opened other dispensers in this address - cursor.execute('''SELECT count(*) cnt FROM balances WHERE address = ?''', (query_address,)) - existing_balances = cursor.fetchall() - - if existing_balances[0]['cnt'] > 0: - problems.append('cannot open on another address if it has any balance history') - - if util.enabled("dispenser_origin_permission_extended", block_index): - address_oldest_transaction = backend.get_oldest_tx(query_address) - if ("block_index" in address_oldest_transaction) and (address_oldest_transaction["block_index"] > 0) and (block_index > address_oldest_transaction["block_index"]): - problems.append('cannot open on another address if it has any confirmed bitcoin txs') - - if len(problems) == 0: - asset_id = util.generate_asset_id(asset, block_index) - if asset_id == 0: - problems.append('cannot dispense %s' % asset) # How can we test this on a test vector? - else: - problems.append('address has already a dispenser about to close, no action can be taken until it closes') - - cursor.close() - - if oracle_address is not None and util.enabled('oracle_dispensers', block_index): - last_price, last_fee, last_label, last_updated = util.get_oracle_last_price(db, oracle_address, block_index) - - if last_price is None: - problems.append('The oracle address %s has not broadcasted any price yet' % oracle_address) - - if give_quantity > config.MAX_INT or escrow_quantity > config.MAX_INT or mainchainrate > config.MAX_INT: - problems.append('integer overflow') - - if len(problems) > 0: - return None, problems - else: - return asset_id, None - -def compose (db, source, asset, give_quantity, escrow_quantity, mainchainrate, status, open_address=None, oracle_address=None): - assetid, problems = validate(db, source, asset, give_quantity, escrow_quantity, mainchainrate, status, open_address, util.CURRENT_BLOCK_INDEX, oracle_address) - if problems: raise exceptions.ComposeError(problems) - - destination = [] - data = message_type.pack(ID) - data += struct.pack(FORMAT, assetid, give_quantity, escrow_quantity, mainchainrate, status) - if (status == STATUS_OPEN_EMPTY_ADDRESS and open_address) or (util.enabled("dispenser_origin_permission_extended") and status == STATUS_CLOSED and open_address and open_address != source): - data += address.pack(open_address) - if oracle_address is not None and util.enabled('oracle_dispensers'): - oracle_fee = calculate_oracle_fee(db, escrow_quantity, give_quantity, mainchainrate, oracle_address, util.CURRENT_BLOCK_INDEX) - - if oracle_fee >= config.DEFAULT_REGULAR_DUST_SIZE: - destination.append((oracle_address,oracle_fee)) - data += address.pack(oracle_address) - - return (source, destination, data) - -def calculate_oracle_fee(db, escrow_quantity, give_quantity, mainchainrate, oracle_address, block_index): - last_price, last_fee, last_fiat_label, last_updated = util.get_oracle_last_price(db, oracle_address, block_index) - last_fee_multiplier = (last_fee / config.UNIT) - - #Format mainchainrate to ######.## - oracle_mainchainrate = util.satoshirate_to_fiat(mainchainrate) - oracle_mainchainrate_btc = oracle_mainchainrate/last_price - - #Calculate the total amount earned for dispenser and the fee - remaining = int(floor(escrow_quantity / give_quantity)) - total_quantity_btc = oracle_mainchainrate_btc * remaining - oracle_fee_btc = int(total_quantity_btc * last_fee_multiplier *config.UNIT) - - return oracle_fee_btc - -def parse (db, tx, message): - cursor = db.cursor() - - # Unpack message. - try: - action_address = tx['source'] - oracle_address = None - assetid, give_quantity, escrow_quantity, mainchainrate, dispenser_status = struct.unpack(FORMAT, message[0:LENGTH]) - read = LENGTH - if dispenser_status == STATUS_OPEN_EMPTY_ADDRESS or (util.enabled("dispenser_origin_permission_extended") and dispenser_status == STATUS_CLOSED and len(message) > read): - action_address = address.unpack(message[LENGTH:LENGTH+21]) - read = LENGTH + 21 - if len(message) > read: - oracle_address = address.unpack(message[read:read+21]) - asset = util.generate_asset_name(assetid, util.CURRENT_BLOCK_INDEX) - status = 'valid' - except (exceptions.UnpackError, struct.error) as e: - assetid, give_quantity, mainchainrate, asset = None, None, None, None - status = 'invalid: could not unpack' - - - if status == 'valid': - if util.enabled("dispenser_parsing_validation", util.CURRENT_BLOCK_INDEX): - asset_id, problems = validate(db, tx['source'], asset, give_quantity, escrow_quantity, mainchainrate, dispenser_status, action_address if dispenser_status in [STATUS_OPEN_EMPTY_ADDRESS, STATUS_CLOSED] else None, tx['block_index'], oracle_address) - else: - problems = None - - if problems: - status = 'invalid: ' + '; '.join(problems) - else: - if dispenser_status == STATUS_OPEN or dispenser_status == STATUS_OPEN_EMPTY_ADDRESS: - cursor.execute('SELECT * FROM dispensers WHERE source=:source AND asset=:asset AND status=:status', { - 'source': action_address, - 'asset': asset, - 'status': STATUS_OPEN - }) - existing = cursor.fetchall() - - if len(existing) == 0: - if (oracle_address != None) and util.enabled('oracle_dispensers', tx['block_index']): - oracle_fee = calculate_oracle_fee(db, escrow_quantity, give_quantity, mainchainrate, oracle_address, tx['block_index']) - - if oracle_fee >= config.DEFAULT_REGULAR_DUST_SIZE: - if tx["destination"] != oracle_address or tx["btc_amount"] < oracle_fee: - status = 'invalid: insufficient or non-existent oracle fee' - - - if status == 'valid': - # Create the new dispenser - try: - if dispenser_status == STATUS_OPEN_EMPTY_ADDRESS: - cursor.execute('SELECT count(*) cnt FROM balances WHERE address=:address AND quantity > 0', { - 'address': action_address - }) - counts = cursor.fetchall()[0] - - if counts['cnt'] == 0: - util.debit(db, tx['source'], asset, escrow_quantity, action='open dispenser empty addr', event=tx['tx_hash']) - util.credit(db, action_address, asset, escrow_quantity, action='open dispenser empty addr', event=tx['tx_hash']) - util.debit(db, action_address, asset, escrow_quantity, action='open dispenser empty addr', event=tx['tx_hash']) - else: - status = 'invalid: address not empty' - else: - util.debit(db, tx['source'], asset, escrow_quantity, action='open dispenser', event=tx['tx_hash']) - except util.DebitError as e: - status = 'invalid: insufficient funds' - - if status == 'valid': - bindings = { - 'tx_index': tx['tx_index'], - 'tx_hash': tx['tx_hash'], - 'block_index': tx['block_index'], - 'source': action_address, - 'asset': asset, - 'give_quantity': give_quantity, - 'escrow_quantity': escrow_quantity, - 'satoshirate': mainchainrate, - 'status': STATUS_OPEN, - 'give_remaining': escrow_quantity, - 'oracle_address': oracle_address, - 'origin': tx['source'] - } - - if util.enabled("dispenser_origin_permission_extended"): - bindings["origin"] = tx["source"] - - sql = '''insert into dispensers (tx_index, tx_hash, block_index, source, asset, give_quantity, escrow_quantity, satoshirate, status, give_remaining, oracle_address, origin, last_status_tx_hash) - values(:tx_index, :tx_hash, :block_index, :source, :asset, :give_quantity, :escrow_quantity, :satoshirate, :status, :give_remaining, :oracle_address, :origin, NULL)''' - cursor.execute(sql, bindings) - elif len(existing) == 1 and existing[0]['satoshirate'] == mainchainrate and existing[0]['give_quantity'] == give_quantity: - if tx["source"]==action_address or (util.enabled("dispenser_origin_permission_extended", tx['block_index']) and tx["source"] == existing[0]["origin"]): - if (oracle_address != None) and util.enabled('oracle_dispensers', tx['block_index']): - oracle_fee = calculate_oracle_fee(db, escrow_quantity, give_quantity, mainchainrate, oracle_address, tx['block_index']) - - if oracle_fee >= config.DEFAULT_REGULAR_DUST_SIZE: - if tx["destination"] != oracle_address or tx["btc_amount"] < oracle_fee: - status = 'invalid: insufficient or non-existent oracle fee' - - if status == 'valid': - # Refill the dispenser by the given amount - bindings = { - 'source': tx['source'] if not util.enabled("dispenser_origin_permission_extended", tx['block_index']) else action_address, - 'asset': asset, - 'prev_status': dispenser_status, - 'give_remaining': existing[0]['give_remaining'] + escrow_quantity, - 'status': STATUS_OPEN, - 'block_index': tx['block_index'], - 'action':'refill dispenser', - 'escrow_quantity':escrow_quantity - } - bindings_refill = { - 'tx_index':tx["tx_index"], - 'tx_hash':tx["tx_hash"], - 'block_index':tx["block_index"], - 'source': tx['source'], - 'destination': action_address, - 'asset': asset, - 'dispenser_quantity': escrow_quantity, - 'status': STATUS_OPEN - } - - try: - util.debit(db, tx['source'], asset, escrow_quantity, action='refill dispenser', event=tx['tx_hash']) - sql = 'UPDATE dispensers SET give_remaining=:give_remaining \ - WHERE source=:source AND asset=:asset AND status=:status' - cursor.execute(sql, bindings) - sql = "INSERT INTO dispenser_refills VALUES(:tx_index, :tx_hash, :block_index, :source, :destination, :asset, :dispenser_quantity, (SELECT tx_hash FROM dispensers WHERE source=:destination AND asset=:asset AND status=:status))" - cursor.execute(sql, bindings_refill) - except (util.DebitError): - status = 'insufficient funds' - else: - status = 'invalid: can only refill dispenser from source or origin' - else: - status = 'can only have one open dispenser per asset per address' - elif dispenser_status == STATUS_CLOSED: - close_delay = util.get_value_by_block_index("dispenser_close_delay", tx['block_index']) - close_from_another_address = util.enabled("dispenser_origin_permission_extended", tx['block_index']) and action_address and action_address != tx["source"] - query_dispenser = 'SELECT tx_index, give_remaining FROM dispensers WHERE source=:source AND asset=:asset AND status=:status' - query_bindings = { - 'source': tx['source'], - 'asset': asset, - 'status': STATUS_OPEN - } - - if close_from_another_address: - query_dispenser = query_dispenser + " AND origin=:origin" - query_bindings["origin"] = tx["source"] - query_bindings["source"] = action_address - - cursor.execute(query_dispenser, query_bindings) - existing = cursor.fetchall() - - if len(existing) == 1: - if close_delay == 0: - util.credit(db, tx['source'], asset, existing[0]['give_remaining'], action='close dispenser', event=tx['tx_hash']) - - bindings = { - 'source': tx['source'], - 'asset': asset, - 'status': STATUS_CLOSED, - 'block_index': tx['block_index'], - 'tx_index': existing[0]['tx_index'] - } - sql = 'UPDATE dispensers SET give_remaining=0, status=:status WHERE source=:source AND asset=:asset' - else: - bindings = { - 'source': tx['source'], - 'asset': asset, - 'status': STATUS_CLOSING, - 'block_index': tx['block_index'], - 'last_status_tx_hash': tx['tx_hash'], - 'tx_index': existing[0]['tx_index'] - } - sql = 'UPDATE dispensers SET status=:status, last_status_tx_hash=:last_status_tx_hash WHERE source=:source AND asset=:asset AND status IN (0,1)' - - if close_from_another_address: - sql = sql + " AND origin=:origin" - bindings["origin"] = tx["source"] - bindings["source"] = action_address - - cursor.execute(sql, bindings) - else: - status = 'dispenser inexistent' - else: - status = 'invalid: status must be one of OPEN or CLOSE' - - if status != 'valid': - logger.warn("Not storing [dispenser] tx [%s]: %s" % (tx['tx_hash'], status)) - - cursor.close() - -def is_dispensable(db, address, amount): - cursor = db.cursor() - cursor.execute('SELECT * FROM dispensers WHERE source=:source AND status IN (0,11)', { - 'source': address, - #'status': [STATUS_OPEN, STATUS_CLOSING] - }) - dispensers = cursor.fetchall() - cursor.close() - - for next_dispenser in dispensers: - if next_dispenser["oracle_address"] != None: - last_price, last_fee, last_fiat_label, last_updated = util.get_oracle_last_price(db, next_dispenser['oracle_address'], util.CURRENT_BLOCK_INDEX) - fiatrate = util.satoshirate_to_fiat(next_dispenser["satoshirate"]) - if amount >= fiatrate/last_price: - return True - else: - if amount >= next_dispenser["satoshirate"]: - return True - - return False - -def dispense(db, tx): - cursor = db.cursor() - - outs = [] - if util.enabled("multiple_dispenses"): - cursor.execute('SELECT txs.source AS source, txs_outs.* FROM transaction_outputs txs_outs LEFT JOIN transactions txs ON txs.tx_hash = txs_outs.tx_hash WHERE txs_outs.tx_hash=:tx_hash ORDER BY txs_outs.out_index', { - 'tx_hash': tx['tx_hash'] - }) - outs = cursor.fetchall() - else: - outs = [tx] - - dispense_index = 0 - - for next_out in outs: - cursor.execute('SELECT * FROM dispensers WHERE source=:source AND status IN (0,11) ORDER BY asset', { - 'source': next_out['destination'], - #'status': [STATUS_OPEN, STATUS_CLOSING] - }) - dispensers = cursor.fetchall() - - for dispenser in dispensers: - satoshirate = dispenser['satoshirate'] - give_quantity = dispenser['give_quantity'] - - if satoshirate > 0 and give_quantity > 0: - if (dispenser['oracle_address'] != None) and util.enabled('oracle_dispensers', next_out['block_index']): - last_price, last_fee, last_fiat_label, last_updated = util.get_oracle_last_price(db, dispenser['oracle_address'], next_out['block_index']) - fiatrate = util.satoshirate_to_fiat(satoshirate) - must_give = int(floor(((next_out['btc_amount'] / config.UNIT) * last_price)/fiatrate)) - else: - must_give = int(floor(next_out['btc_amount'] / satoshirate)) - - remaining = int(floor(dispenser['give_remaining'] / give_quantity)) - actually_given = min(must_give, remaining) * give_quantity - give_remaining = dispenser['give_remaining'] - actually_given - - assert give_remaining >= 0 - - # Skip dispense if quantity is 0 - if util.enabled('zero_quantity_value_adjustment_1') and actually_given==0: - continue - - util.credit(db, next_out['source'], dispenser['asset'], actually_given, action='dispense', event=next_out['tx_hash']) - - # Checking if the dispenser reach its max dispenses limit - max_dispenses_limit = util.get_value_by_block_index("max_dispenses_limit", next_out["block_index"]) - max_dispenser_limit_hit = False - - if max_dispenses_limit > 0: - sql = 'SELECT MAX(block_index) AS max_block_index FROM dispenser_refills WHERE dispenser_tx_hash = :dispenser_tx_hash' - cursor.execute(sql, {'dispenser_tx_hash': dispenser['tx_hash']}) - max_block_index_result = cursor.fetchall() - from_block_index = 1 - - if len(max_block_index_result) > 0: - if max_block_index_result[0]["max_block_index"] is not None: - from_block_index = max_block_index_result[0]["max_block_index"] - - sql = 'SELECT COUNT(*) AS dispenses_count FROM dispenses WHERE dispenser_tx_hash = :dispenser_tx_hash AND block_index >= :block_index' - cursor.execute(sql, {'dispenser_tx_hash': dispenser['tx_hash'], 'block_index': from_block_index}) - dispenses_count_result = cursor.fetchall()[0] - dispenses_count = dispenses_count_result["dispenses_count"] - - if dispenses_count+1 >= max_dispenses_limit: - max_dispenser_limit_hit = True - - dispenser['give_remaining'] = give_remaining - if give_remaining < dispenser['give_quantity'] or max_dispenser_limit_hit: - # close the dispenser - dispenser['give_remaining'] = 0 - if give_remaining > 0: - if max_dispenser_limit_hit: - credit_action = 'Closed: Max dispenses reached' - dispenser['closing_reason'] = "max_dispenses_reached" - else: - credit_action = 'dispenser close' - dispenser['closing_reason'] = "no_more_to_give" - - # return the remaining to the owner - util.credit(db, dispenser['source'], dispenser['asset'], give_remaining, action=credit_action, event=next_out['tx_hash']) - else: - dispenser['closing_reason'] = "depleted" - dispenser['status'] = STATUS_CLOSED - - dispenser['block_index'] = next_out['block_index'] - dispenser['prev_status'] = STATUS_OPEN - cursor.execute('UPDATE DISPENSERS SET give_remaining=:give_remaining, status=:status \ - WHERE source=:source AND asset=:asset AND satoshirate=:satoshirate AND give_quantity=:give_quantity AND status IN (0,11)', dispenser) - - bindings = { - 'tx_index': next_out['tx_index'], - 'tx_hash': next_out['tx_hash'], - 'dispense_index': dispense_index, - 'block_index': next_out['block_index'], - 'source': next_out['destination'], - 'destination': next_out['source'], - 'asset': dispenser['asset'], - 'dispense_quantity': actually_given, - 'dispenser_tx_hash': dispenser['tx_hash'] - } - sql = 'INSERT INTO dispenses(tx_index, dispense_index, tx_hash, block_index, source, destination, asset, dispense_quantity, dispenser_tx_hash) \ - VALUES(:tx_index, :dispense_index, :tx_hash, :block_index, :source, :destination, :asset, :dispense_quantity, :dispenser_tx_hash);' - cursor.execute(sql, bindings) - dispense_index += 1 - - cursor.close() - -def close_pending(db, block_index): - cursor = db.cursor() - block_delay = util.get_value_by_block_index("dispenser_close_delay", block_index) - - if block_delay > 0: - cursor.execute('SELECT d.*, t.source AS tx_source, t.block_index AS tx_block_index FROM dispensers d LEFT JOIN transactions t ON t.tx_hash = d.last_status_tx_hash WHERE status=:status AND last_status_tx_hash IS NOT NULL AND :block_index>=t.block_index+:delay', { - 'status': STATUS_CLOSING, - 'delay': block_delay, - 'block_index': block_index - }) - pending_dispensers = cursor.fetchall() - - for dispenser in pending_dispensers: - util.credit(db, dispenser['tx_source'], dispenser['asset'], dispenser['give_remaining'], action='close dispenser', event=dispenser['last_status_tx_hash']) - - bindings = { - 'source': dispenser['tx_source'], - 'asset': dispenser['asset'], - 'status': STATUS_CLOSED, - 'block_index': dispenser['tx_block_index'], - 'tx_index': dispenser['tx_index'] - } - sql = 'UPDATE dispensers SET give_remaining=0, status=:status WHERE source=:source AND asset=:asset' - - #closed from another address - if dispenser['tx_source'] != dispenser['source']: - sql = sql + " AND origin=:origin" - bindings["origin"] = dispenser['tx_source'] - bindings["source"] = dispenser['source'] - - cursor.execute(sql, bindings) \ No newline at end of file diff --git a/counterpartylib/lib/messages/versions/mpma_util/internals.py b/counterpartylib/lib/messages/versions/mpma_util/internals.py deleted file mode 100644 index 59a682366a..0000000000 --- a/counterpartylib/lib/messages/versions/mpma_util/internals.py +++ /dev/null @@ -1,234 +0,0 @@ -import struct -import json -import logging -import binascii -import math -from bitcoin.core import key -from functools import reduce -from itertools import groupby - -from bitstring import BitArray, BitStream, ConstBitStream, ReadError - -logger = logging.getLogger(__name__) - -from counterpartylib.lib import (config, util, exceptions, util, message_type, address) - -## encoding functions - -def _encode_constructBaseLUT(snds): - # t is a tuple of the form (asset, addr, amnt [, memo, is_hex]) - return sorted(list(set([t[1] for t in snds]))) # Sorted to make list determinist - -def _encode_constructBaseAssets(sends): - # t is a tuple of the form (asset, addr, amnt [, memo, is_hex]) - return sorted(list(set([t[0] for t in sends]))) # Sorted to make list determinist - -def _encode_constructLUT(sends): - baseLUT = _encode_constructBaseLUT(sends) - - # What's this? It calculates the minimal number of bits needed to represent an item index inside the baseLUT - lutNbits = math.ceil(math.log2(len(baseLUT))) - - return { - "nbits": lutNbits, - "addrs": baseLUT - } - -def _encode_compressLUT(lut): - return b''.join([struct.pack('>H', len(lut['addrs']))] + - [ - address.pack(addr) - for addr in lut['addrs'] - ]) - -def _encode_memo(memo=None, is_hex=False): - '''Tightly pack a memo as a Bit array''' - - if memo is not None: - # signal a 1 bit for existence of the memo - barr = BitArray('0b1') - - if is_hex: - # signal a 1 bit for hex encoded memos - barr.append('0b1') - if type(memo) is str: # append the string as hex-string - barr.append('uint:6=%i' % (len(memo) >> 1)) - memo = '0x%s' % memo - else: - barr.append('uint:6=%i' % len(memo)) - - barr.append(memo) - else: - # signal a 0 bit for a string encoded memo - barr.append('0b0') - barr.append('uint:6=%i' % len(memo)) - barr.append(BitArray(memo.encode('utf-8'))) - - return barr - else: - # if the memo is None, return just a 0 bit - return BitArray('0b0') - -def _safe_tuple_index(t, i): - '''Get an element from a tuple, returning None if it's out of bounds''' - - if len(t) <= i: - return None - else: - return t[i] - -def _encode_constructSendList(send_asset, lut, sends): - # t is a tuple of the form (asset, addr, amnt, memo, is_hex) - # if there's no memo specified, memo and is_hex are None - return [ - (lut['addrs'].index(t[1]), t[2], _safe_tuple_index(t, 3), _safe_tuple_index(t, 4)) - for t in sends - if t[0] == send_asset - ] - -def _solve_asset(db, assetName, block_index): - asset = util.resolve_subasset_longname(db, assetName) - return util.get_asset_id(db, asset, block_index) - -def _encode_compressSendList(db, nbits, send, block_index): - r = BitArray() - r.append('uintbe:64=%i' % _solve_asset(db, send['assetName'], block_index)) - r.append('uint:%i=%i' % (nbits, len(send['sendList'])-1)) - for sendItem in send['sendList']: - idx = sendItem[0] - amnt = sendItem[1] - r.append('uint:%i=%i' % (nbits, idx)) - r.append('uintbe:64=%i' % amnt) - - try: - memoStr = _encode_memo(memo=sendItem[2], is_hex=sendItem[3]) - except: - memoStr = BitArray('0b0') - - r.append(memoStr) - return r - -def _encode_constructSends(sends): - lut = _encode_constructLUT(sends) - assets = _encode_constructBaseAssets(sends) - - sendLists = [ - { - "assetName": asset, - "sendList": _encode_constructSendList(asset, lut, sends) - } - for asset in assets - ] - - return { - "lut": lut, - "sendLists": sendLists - } - -def _encode_compressSends(db, mpmaSend, block_index, memo=None, memo_is_hex=False): - compressedLUT = _encode_compressLUT(mpmaSend['lut']) - memo_arr = _encode_memo(memo, memo_is_hex).bin - - isends = '0b' + memo_arr + ''.join([ - ''.join(['1', _encode_compressSendList(db, mpmaSend['lut']['nbits'], sendList, block_index).bin]) - for sendList in mpmaSend['sendLists'] - ]) - bstr = ''.join([isends, '0']) - pad = '0' * ((8 - (len(bstr) - 2)) % 8) # That -2 is because the prefix 0b is there - barr = BitArray(bstr + pad) - return b''.join([ - compressedLUT, - barr.bytes - ]) - -def _encode_mpmaSend(db, sends, block_index, memo=None, memo_is_hex=False): - mpma = _encode_constructSends(sends) - send = _encode_compressSends(db, mpma, block_index, memo=memo, memo_is_hex=memo_is_hex) - - return send - -## decoding functions - -def _decode_decodeLUT(data): - (numAddresses,) = struct.unpack('>H', data[0:2]) - if numAddresses == 0: - raise exceptions.DecodeError('address list can\'t be empty') - p = 2 - addressList = [] - bytesPerAddress = 21 - - for i in range(0, numAddresses): - addr_raw = data[p:p+bytesPerAddress] - - addressList.append(address.unpack(addr_raw)) - p += bytesPerAddress - - lutNbits = math.ceil(math.log2(numAddresses)) - - return addressList, lutNbits, data[p:] - -def _decode_decodeSendList(stream, nbits, lut, block_index): - asset_id = stream.read('uintbe:64') - - if nbits > 0: - numRecipients = stream.read('uint:%i' % nbits) - rangeLimit = numRecipients + 1 - else: - numRecipients = 1 - rangeLimit = numRecipients - sendList = [] - asset = util.generate_asset_name(asset_id, block_index) - for i in range(0, rangeLimit): - if nbits > 0: - idx = stream.read('uint:%i' % nbits) - else: - idx = 0 - addr = lut[idx] - amount = stream.read('uintbe:64') - - memo, is_hex = _decode_memo(stream) - if memo is not None: - sendList.append((addr, amount, memo, is_hex)) - else: - sendList.append((addr, amount)) - - - return asset, sendList - -def _decode_decodeSends(stream, nbits, lut, block_index): - #stream = ConstBitStream(data) - sends = {} - - while stream.read('bool'): - asset, sendList = _decode_decodeSendList(stream, nbits, lut, block_index) - sends[asset] = sendList - - return sends - -def _decode_memo(stream): - if stream.read('bool'): - is_hex = stream.read('bool') - mlen = stream.read('uint:6') - data = stream.read('bytes:%i' % mlen) - - if not(is_hex): - # is an utf8 string - data = data.decode('utf-8') - - return data, is_hex - else: - return None, None - -def _decode_mpmaSendDecode(data, block_index): - lut, nbits, remain = _decode_decodeLUT(data) - stream = ConstBitStream(remain) - memo, is_hex = _decode_memo(stream) - sends = _decode_decodeSends(stream, nbits, lut, block_index) - if memo is not None: - for asset in sends: - sendList = sends[asset] - for idx, send in enumerate(sendList): - if len(send) == 2: - sendList[idx] = (send[0], send[1], memo, is_hex) - - return sends diff --git a/counterpartylib/lib/util.py b/counterpartylib/lib/util.py deleted file mode 100644 index 4ab534ff4e..0000000000 --- a/counterpartylib/lib/util.py +++ /dev/null @@ -1,954 +0,0 @@ -import time -import decimal -import sys -import json -import logging -logger = logging.getLogger(__name__) -import apsw -import inspect -import requests -from datetime import datetime -from dateutil.tz import tzlocal -from operator import itemgetter -import fractions -import warnings -import binascii -import re -import hashlib -import sha3 -import bitcoin as bitcoinlib -import os -import collections -import threading -import random -import itertools - -from counterpartylib.lib import exceptions -from counterpartylib.lib.exceptions import DecodeError -from counterpartylib.lib import config - -D = decimal.Decimal -B26_DIGITS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' - -# subasset contain only characters a-zA-Z0-9.-_@! -SUBASSET_DIGITS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_@!' -SUBASSET_REVERSE = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6,'g':7,'h':8,'i':9,'j':10,'k':11,'l':12,'m':13,'n':14, - 'o':15,'p':16,'q':17,'r':18,'s':19,'t':20,'u':21,'v':22,'w':23,'x':24,'y':25,'z':26, - 'A':27,'B':28,'C':29,'D':30,'E':31,'F':32,'G':33,'H':34,'I':35,'J':36,'K':37,'L':38,'M':39, - 'N':40,'O':41,'P':42,'Q':43,'R':44,'S':45,'T':46,'U':47,'V':48,'W':49,'X':50,'Y':51,'Z':52, - '0':53,'1':54,'2':55,'3':56,'4':57,'5':58,'6':59,'7':60,'8':61,'9':62,'.':63,'-':64,'_':65,'@':66,'!':67} - -# Obsolete in Python 3.4, with enum module. -BET_TYPE_NAME = {0: 'BullCFD', 1: 'BearCFD', 2: 'Equal', 3: 'NotEqual'} -BET_TYPE_ID = {'BullCFD': 0, 'BearCFD': 1, 'Equal': 2, 'NotEqual': 3} - -json_dump = lambda x: json.dumps(x, sort_keys=True, indent=4) -json_print = lambda x: print(json_dump(x)) - -BLOCK_LEDGER = [] - -CURRENT_BLOCK_INDEX = None - -CURR_DIR = os.path.dirname(os.path.realpath(__file__)) -with open(CURR_DIR + '/../protocol_changes.json') as f: - PROTOCOL_CHANGES = json.load(f) - -class RPCError (Exception): pass - -# TODO: Move to `util_test.py`. -# TODO: This doesn’t timeout properly. (If server hangs, then unhangs, no result.) -def api(method, params): - """Poll API via JSON-RPC.""" - headers = {'content-type': 'application/json'} - payload = { - "method": method, - "params": params, - "jsonrpc": "2.0", - "id": 0, - } - - response = requests.post(config.RPC, data=json.dumps(payload), headers=headers) - if response == None: - raise RPCError('Cannot communicate with {} server.'.format(config.XCP_NAME)) - elif response.status_code != 200: - if response.status_code == 500: - raise RPCError('Malformed API call.') - else: - raise RPCError(str(response.status_code) + ' ' + response.reason) - - response_json = response.json() - if 'error' not in response_json.keys() or response_json['error'] == None: - try: - return response_json['result'] - except KeyError: - raise RPCError(response_json) - else: - raise RPCError('{} ({})'.format(response_json['error']['message'], response_json['error']['code'])) - -def chunkify(l, n): - n = max(1, n) - return [l[i:i + n] for i in range(0, len(l), n)] - -def flat(z): - return [x for x in z] - -def py34TupleAppend(first_elem, t): - # Had to do it this way to support python 3.4, if we start - # using the 3.5 runtime this can be replaced by: - # (first_elem, *t) - - l = list(t) - l.insert(0, first_elem) - return tuple(l) - -def accumulate(l): - it = itertools.groupby(l, itemgetter(0)) - for key, subiter in it: - yield key, sum(item[1] for item in subiter) - -def date_passed(date): - """Check if the date has already passed.""" - return date <= int(time.time()) - -def price (numerator, denominator): - """Return price as Fraction or Decimal.""" - if CURRENT_BLOCK_INDEX >= 294500 or config.TESTNET or config.REGTEST: # Protocol change. - return fractions.Fraction(numerator, denominator) - else: - numerator = D(numerator) - denominator = D(denominator) - return D(numerator / denominator) - -def last_message(db): - """Return latest message from the db.""" - cursor = db.cursor() - messages = list(cursor.execute('''SELECT * FROM messages WHERE message_index = (SELECT MAX(message_index) from messages)''')) - if messages: - assert len(messages) == 1 - last_message = messages[0] - else: - raise exceptions.DatabaseError('No messages found.') - cursor.close() - return last_message - -def generate_asset_id(asset_name, block_index): - """Create asset_id from asset_name.""" - if asset_name == config.BTC: return 0 - elif asset_name == config.XCP: return 1 - - if len(asset_name) < 4: - raise exceptions.AssetNameError('too short') - - # Numeric asset names. - if enabled('numeric_asset_names'): # Protocol change. - if asset_name[0] == 'A': - # Must be numeric. - try: - asset_id = int(asset_name[1:]) - except ValueError: - raise exceptions.AssetNameError('non‐numeric asset name starts with ‘A’') - - # Number must be in range. - if not (26**12 + 1 <= asset_id <= 2**64 - 1): - raise exceptions.AssetNameError('numeric asset name not in range') - - return asset_id - elif len(asset_name) >= 13: - raise exceptions.AssetNameError('long asset names must be numeric') - - if asset_name[0] == 'A': raise exceptions.AssetNameError('non‐numeric asset name starts with ‘A’') - - # Convert the Base 26 string to an integer. - n = 0 - for c in asset_name: - n *= 26 - if c not in B26_DIGITS: - raise exceptions.AssetNameError('invalid character:', c) - digit = B26_DIGITS.index(c) - n += digit - asset_id = n - - if asset_id < 26**3: - raise exceptions.AssetNameError('too short') - - return asset_id - -def generate_asset_name (asset_id, block_index): - """Create asset_name from asset_id.""" - if asset_id == 0: return config.BTC - elif asset_id == 1: return config.XCP - - if asset_id < 26**3: - raise exceptions.AssetIDError('too low') - - if enabled('numeric_asset_names'): # Protocol change. - if asset_id <= 2**64 - 1: - if 26**12 + 1 <= asset_id: - asset_name = 'A' + str(asset_id) - return asset_name - else: - raise exceptions.AssetIDError('too high') - - # Divide that integer into Base 26 string. - res = [] - n = asset_id - while n > 0: - n, r = divmod (n, 26) - res.append(B26_DIGITS[r]) - asset_name = ''.join(res[::-1]) - - """ - return asset_name + checksum.compute(asset_name) - """ - return asset_name - - -def get_asset_id (db, asset_name, block_index): - """Return asset_id from asset_name.""" - if not enabled('hotfix_numeric_assets'): - return generate_asset_id(asset_name, block_index) - cursor = db.cursor() - cursor.execute('''SELECT * FROM assets WHERE asset_name = ?''', (asset_name,)) - assets = list(cursor) - if len(assets) == 1: - return int(assets[0]['asset_id']) - else: - raise exceptions.AssetError('No such asset: {}'.format(asset_name)) - -def get_asset_name (db, asset_id, block_index): - """Return asset_name from asset_id.""" - if not enabled('hotfix_numeric_assets'): - return generate_asset_name(asset_id, block_index) - cursor = db.cursor() - cursor.execute('''SELECT * FROM assets WHERE asset_id = ?''', (str(asset_id),)) - assets = list(cursor) - if len(assets) == 1: - return assets[0]['asset_name'] - elif not assets: - return 0 # Strange, I know… - -# If asset_name is an existing subasset (PARENT.child) then return the corresponding numeric asset name (A12345) -# If asset_name is not an existing subasset, then return the unmodified asset_name -def resolve_subasset_longname(db, asset_name): - if enabled('subassets'): - subasset_longname = None - try: - subasset_parent, subasset_longname = parse_subasset_from_asset_name(asset_name) - except Exception as e: - logger.warn("Invalid subasset {}".format(asset_name)) - subasset_longname = None - - if subasset_longname is not None: - cursor = db.cursor() - cursor.execute('''SELECT asset_name FROM assets WHERE asset_longname = ?''', (subasset_longname,)) - assets = list(cursor) - cursor.close() - if len(assets) == 1: - return assets[0]['asset_name'] - - return asset_name - - -# checks and validates subassets (PARENT.SUBASSET) -# throws exceptions for assset or subasset names with invalid syntax -# returns (None, None) if the asset is not a subasset name -def parse_subasset_from_asset_name(asset): - subasset_parent = None - subasset_child = None - subasset_longname = None - chunks = asset.split('.', 1) - if (len(chunks) == 2): - subasset_parent = chunks[0] - subasset_child = chunks[1] - subasset_longname = asset - - # validate parent asset - validate_subasset_parent_name(subasset_parent) - - # validate child asset - validate_subasset_longname(subasset_longname, subasset_child) - - return (subasset_parent, subasset_longname) - -# throws exceptions for invalid subasset names -def validate_subasset_longname(subasset_longname, subasset_child=None): - if subasset_child is None: - chunks = subasset_longname.split('.', 1) - if (len(chunks) == 2): - subasset_child = chunks[1] - else: - subasset_child = '' - - if len(subasset_child) < 1: - raise exceptions.AssetNameError('subasset name too short') - if len(subasset_longname) > 250: - raise exceptions.AssetNameError('subasset name too long') - - # can't start with period, can't have consecutive periods, can't contain anything not in SUBASSET_DIGITS - previous_digit = '.' - for c in subasset_child: - if c not in SUBASSET_DIGITS: - raise exceptions.AssetNameError('subasset name contains invalid character:', c) - if c == '.' and previous_digit == '.': - raise exceptions.AssetNameError('subasset name contains consecutive periods') - previous_digit = c - if previous_digit == '.': - raise exceptions.AssetNameError('subasset name ends with a period') - - return True - -# throws exceptions for invalid subasset names -def validate_subasset_parent_name(asset_name): - if asset_name == config.BTC: - raise exceptions.AssetNameError('parent asset cannot be {}'.format(config.BTC)) - if asset_name == config.XCP: - raise exceptions.AssetNameError('parent asset cannot be {}'.format(config.XCP)) - if len(asset_name) < 4: - raise exceptions.AssetNameError('parent asset name too short') - if len(asset_name) >= 13: - raise exceptions.AssetNameError('parent asset name too long') - if asset_name[0] == 'A': - raise exceptions.AssetNameError('parent asset name starts with ‘A’') - for c in asset_name: - if c not in B26_DIGITS: - raise exceptions.AssetNameError('parent asset name contains invalid character:', c) - return True - -def compact_subasset_longname(string): - """Compacts a subasset name string into an array of bytes to save space using a base68 encoding scheme. - Assumes all characters provided belong to SUBASSET_DIGITS. - """ - name_int = 0 - for i, c in enumerate(string[::-1]): - name_int += (68 ** i) * SUBASSET_REVERSE[c] - return name_int.to_bytes((name_int.bit_length() + 7) // 8, byteorder='big') - -def expand_subasset_longname(raw_bytes): - """Expands an array of bytes into a subasset name string.""" - integer = int.from_bytes(raw_bytes, byteorder='big') - if integer == 0: - return '' - ret = '' - while integer != 0: - ret = SUBASSET_DIGITS[integer % 68 - 1] + ret - integer //= 68 - return ret - -def generate_random_asset (): - return 'A' + str(random.randint(26**12 + 1, 2**64 - 1)) - -def parse_options_from_string(string): - """Parse options integer from string, if exists.""" - string_list = string.split(" ") - if len(string_list) == 2: - try: - options = int(string_list.pop()) - except: - raise exceptions.OptionsError('options not an integer') - return options - else: - return False - -def validate_address_options(options): - """Ensure the options are all valid and in range.""" - if (options > config.MAX_INT) or (options < 0): - raise exceptions.OptionsError('options integer overflow') - elif options > config.ADDRESS_OPTION_MAX_VALUE: - raise exceptions.OptionsError('options out of range') - elif not active_options(config.ADDRESS_OPTION_MAX_VALUE, options): - raise exceptions.OptionsError('options not possible') - -def active_options(config, options): - """Checks if options active in some given config.""" - return config & options == options - -class DebitError (Exception): pass -def debit (db, address, asset, quantity, action=None, event=None): - """Debit given address by quantity of asset.""" - block_index = CURRENT_BLOCK_INDEX - - if type(quantity) != int: - raise DebitError('Quantity must be an integer.') - if quantity < 0: - raise DebitError('Negative quantity.') - if quantity > config.MAX_INT: - raise DebitError('Quantity can\'t be higher than MAX_INT.') - if asset == config.BTC: - raise DebitError('Cannot debit bitcoins.') - - debit_cursor = db.cursor() - - # Contracts can only hold XCP balances. - if enabled('contracts_only_xcp_balances'): # Protocol change. - if len(address) == 40: - assert asset == config.XCP - - if asset == config.BTC: - raise exceptions.BalanceError('Cannot debit bitcoins from a {} address!'.format(config.XCP_NAME)) - - debit_cursor.execute('''SELECT * FROM balances \ - WHERE (address = ? AND asset = ?)''', (address, asset)) - balances = debit_cursor.fetchall() - if not len(balances) == 1: - old_balance = 0 - else: - old_balance = balances[0]['quantity'] - - if old_balance < quantity: - raise DebitError('Insufficient funds.') - - balance = round(old_balance - quantity) - balance = min(balance, config.MAX_INT) - assert balance >= 0 - - bindings = { - 'quantity': balance, - 'address': address, - 'asset': asset - } - sql='update balances set quantity = :quantity where (address = :address and asset = :asset)' - debit_cursor.execute(sql, bindings) - - # Record debit. - bindings = { - 'block_index': block_index, - 'address': address, - 'asset': asset, - 'quantity': quantity, - 'action': action, - 'event': event - } - sql='insert into debits values(:block_index, :address, :asset, :quantity, :action, :event)' - debit_cursor.execute(sql, bindings) - debit_cursor.close() - - BLOCK_LEDGER.append('{}{}{}{}'.format(block_index, address, asset, quantity)) - -class CreditError (Exception): pass -def credit (db, address, asset, quantity, action=None, event=None): - """Credit given address by quantity of asset.""" - block_index = CURRENT_BLOCK_INDEX - - if type(quantity) != int: - raise CreditError('Quantity must be an integer.') - if quantity < 0: - raise CreditError('Negative quantity.') - if quantity > config.MAX_INT: - raise CreditError('Quantity can\'t be higher than MAX_INT.') - if asset == config.BTC: - raise CreditError('Cannot debit bitcoins.') - - credit_cursor = db.cursor() - - # Contracts can only hold XCP balances. - if enabled('contracts_only_xcp_balances'): # Protocol change. - if len(address) == 40: - assert asset == config.XCP - - credit_cursor.execute('''SELECT * FROM balances \ - WHERE (address = ? AND asset = ?)''', (address, asset)) - balances = credit_cursor.fetchall() - if len(balances) == 0: - assert balances == [] - - #update balances table with new balance - bindings = { - 'address': address, - 'asset': asset, - 'quantity': quantity, - } - sql='insert into balances values(:address, :asset, :quantity)' - credit_cursor.execute(sql, bindings) - elif len(balances) > 1: - assert False - else: - old_balance = balances[0]['quantity'] - assert type(old_balance) == int - balance = round(old_balance + quantity) - balance = min(balance, config.MAX_INT) - - bindings = { - 'quantity': balance, - 'address': address, - 'asset': asset - } - sql='update balances set quantity = :quantity where (address = :address and asset = :asset)' - credit_cursor.execute(sql, bindings) - - # Record credit. - bindings = { - 'block_index': block_index, - 'address': address, - 'asset': asset, - 'quantity': quantity, - 'action': action, - 'event': event - } - sql='insert into credits values(:block_index, :address, :asset, :quantity, :action, :event)' - - credit_cursor.execute(sql, bindings) - credit_cursor.close() - - BLOCK_LEDGER.append('{}{}{}{}'.format(block_index, address, asset, quantity)) - -class QuantityError(Exception): pass - -def is_divisible(db, asset): - """Check if the asset is divisible.""" - if asset in (config.BTC, config.XCP): - return True - else: - cursor = db.cursor() - cursor.execute('''SELECT * FROM issuances \ - WHERE (status = ? AND asset = ?) ORDER BY tx_index DESC''', ('valid', asset)) - issuances = cursor.fetchall() - if not issuances: raise exceptions.AssetError('No such asset: {}'.format(asset)) - return issuances[0]['divisible'] - -def get_asset_issuer(db, asset): - """Check if the asset is divisible.""" - if asset in (config.BTC, config.XCP): - return True - else: - cursor = db.cursor() - cursor.execute('''SELECT * FROM issuances \ - WHERE (status = ? AND asset = ?) ORDER BY tx_index DESC''', ('valid', asset)) - issuances = cursor.fetchall() - if not issuances: raise exceptions.AssetError('No such asset: {}'.format(asset)) - return issuances[0]['issuer'] - -def get_asset_description(db, asset): - if asset in (config.BTC, config.XCP): - return '' - else: - cursor = db.cursor() - cursor.execute('''SELECT * FROM issuances \ - WHERE (status = ? AND asset = ?) ORDER BY tx_index DESC''', ('valid', asset)) - issuances = cursor.fetchall() - if not issuances: raise exceptions.AssetError('No such asset: {}'.format(asset)) - return issuances[0]['description'] - -def value_input(quantity, asset, divisible): - if asset == 'leverage': - return round(quantity) - - if asset in ('value', 'fraction', 'price', 'odds'): - return float(quantity) # TODO: Float?! - - if divisible: - quantity = D(quantity) * config.UNIT - if quantity == quantity.to_integral(): - return int(quantity) - else: - raise QuantityError('Divisible assets have only eight decimal places of precision.') - else: - quantity = D(quantity) - if quantity != round(quantity): - raise QuantityError('Fractional quantities of indivisible assets.') - return round(quantity) - -def value_in(db, quantity, asset, divisible=None): - if asset not in ['leverage', 'value', 'fraction', 'price', 'odds'] and divisible == None: - divisible = is_divisible(db, asset) - return value_input(quantity, asset, divisible) - -def value_output(quantity, asset, divisible): - - def norm(num, places): - """Round only if necessary.""" - num = round(num, places) - fmt = '{:.' + str(places) + 'f}' - num = fmt.format(num) - return num.rstrip('0')+'0' if num.rstrip('0')[-1] == '.' else num.rstrip('0') - - if asset == 'fraction': - return str(norm(D(quantity) * D(100), 6)) + '%' - - if asset in ('leverage', 'value', 'price', 'odds'): - return norm(quantity, 6) - - if divisible: - quantity = D(quantity) / D(config.UNIT) - if quantity == quantity.to_integral(): - return str(quantity) + '.0' # For divisible assets, display the decimal point. - else: - return norm(quantity, 8) - else: - quantity = D(quantity) - if quantity != round(quantity): - raise QuantityError('Fractional quantities of indivisible assets.') - return round(quantity) - -def value_out(db, quantity, asset, divisible=None): - if asset not in ['leverage', 'value', 'fraction', 'price', 'odds'] and divisible == None: - divisible = is_divisible(db, asset) - return value_output(quantity, asset, divisible) - -### SUPPLIES ### - -def holders(db, asset, exclude_empty_holders=False): - """Return holders of the asset.""" - holders = [] - cursor = db.cursor() - # Balances - if exclude_empty_holders: - cursor.execute('''SELECT * FROM balances \ - WHERE asset = ? AND quantity > ?''', (asset, 0)) - else: - cursor.execute('''SELECT * FROM balances \ - WHERE asset = ?''', (asset, )) - - for balance in list(cursor): - holders.append({'address': balance['address'], 'address_quantity': balance['quantity'], 'escrow': None}) - # Funds escrowed in orders. (Protocol change.) - cursor.execute('''SELECT * FROM orders \ - WHERE give_asset = ? AND status = ?''', (asset, 'open')) - for order in list(cursor): - holders.append({'address': order['source'], 'address_quantity': order['give_remaining'], 'escrow': order['tx_hash']}) - # Funds escrowed in pending order matches. (Protocol change.) - cursor.execute('''SELECT * FROM order_matches \ - WHERE (forward_asset = ? AND status = ?)''', (asset, 'pending')) - for order_match in list(cursor): - holders.append({'address': order_match['tx0_address'], 'address_quantity': order_match['forward_quantity'], 'escrow': order_match['id']}) - cursor.execute('''SELECT * FROM order_matches \ - WHERE (backward_asset = ? AND status = ?)''', (asset, 'pending')) - for order_match in list(cursor): - holders.append({'address': order_match['tx1_address'], 'address_quantity': order_match['backward_quantity'], 'escrow': order_match['id']}) - - # Bets and RPS (and bet/rps matches) only escrow XCP. - if asset == config.XCP: - cursor.execute('''SELECT * FROM bets \ - WHERE status = ?''', ('open',)) - for bet in list(cursor): - holders.append({'address': bet['source'], 'address_quantity': bet['wager_remaining'], 'escrow': bet['tx_hash']}) - cursor.execute('''SELECT * FROM bet_matches \ - WHERE status = ?''', ('pending',)) - for bet_match in list(cursor): - holders.append({'address': bet_match['tx0_address'], 'address_quantity': bet_match['forward_quantity'], 'escrow': bet_match['id']}) - holders.append({'address': bet_match['tx1_address'], 'address_quantity': bet_match['backward_quantity'], 'escrow': bet_match['id']}) - - cursor.execute('''SELECT * FROM rps \ - WHERE status = ?''', ('open',)) - for rps in list(cursor): - holders.append({'address': rps['source'], 'address_quantity': rps['wager'], 'escrow': rps['tx_hash']}) - cursor.execute('''SELECT * FROM rps_matches \ - WHERE status IN (?, ?, ?)''', ('pending', 'pending and resolved', 'resolved and pending')) - for rps_match in list(cursor): - holders.append({'address': rps_match['tx0_address'], 'address_quantity': rps_match['wager'], 'escrow': rps_match['id']}) - holders.append({'address': rps_match['tx1_address'], 'address_quantity': rps_match['wager'], 'escrow': rps_match['id']}) - - if enabled('dispensers_in_holders'): - # Funds escrowed in dispensers. - cursor.execute('''SELECT * FROM dispensers \ - WHERE asset = ? AND status = ?''', (asset, 0)) - - - for dispenser in list(cursor): - holders.append({'address': dispenser['source'], 'address_quantity': dispenser['give_remaining'], 'escrow': None}) - - cursor.close() - return holders - -def xcp_created (db): - """Return number of XCP created thus far.""" - cursor = db.cursor() - cursor.execute('''SELECT SUM(earned) AS total FROM burns \ - WHERE (status = ?)''', ('valid',)) - total = list(cursor)[0]['total'] or 0 - cursor.close() - return total - -def xcp_destroyed (db): - """Return number of XCP destroyed thus far.""" - cursor = db.cursor() - # Destructions - cursor.execute('''SELECT SUM(quantity) AS total FROM destructions \ - WHERE (status = ? AND asset = ?)''', ('valid', config.XCP)) - destroyed_total = list(cursor)[0]['total'] or 0 - # Subtract issuance fees. - cursor.execute('''SELECT SUM(fee_paid) AS total FROM issuances\ - WHERE status = ?''', ('valid',)) - issuance_fee_total = list(cursor)[0]['total'] or 0 - # Subtract dividend fees. - cursor.execute('''SELECT SUM(fee_paid) AS total FROM dividends\ - WHERE status = ?''', ('valid',)) - dividend_fee_total = list(cursor)[0]['total'] or 0 - # Subtract sweep fees. - cursor.execute('''SELECT SUM(fee_paid) AS total FROM sweeps\ - WHERE status = ?''', ('valid',)) - sweeps_fee_total = list(cursor)[0]['total'] or 0 - cursor.close() - return destroyed_total + issuance_fee_total + dividend_fee_total + sweeps_fee_total - -def xcp_supply (db): - """Return the XCP supply.""" - return xcp_created(db) - xcp_destroyed(db) - -def creations (db): - """Return creations.""" - cursor = db.cursor() - creations = {config.XCP: xcp_created(db)} - cursor.execute('''SELECT asset, SUM(quantity) AS created FROM issuances \ - WHERE status = ? GROUP BY asset''', ('valid',)) - - for issuance in cursor: - asset = issuance['asset'] - created = issuance['created'] - creations[asset] = created - - cursor.close() - return creations - -def destructions (db): - """Return destructions.""" - cursor = db.cursor() - destructions = {config.XCP: xcp_destroyed(db)} - cursor.execute('''SELECT asset, SUM(quantity) AS destroyed FROM destructions \ - WHERE (status = ? AND asset != ?) GROUP BY asset''', ('valid', config.XCP)) - - for destruction in cursor: - asset = destruction['asset'] - destroyed = destruction['destroyed'] - destructions[asset] = destroyed - - cursor.close() - return destructions - -def asset_issued_total (db, asset): - """Return asset total issued.""" - cursor = db.cursor() - cursor.execute('''SELECT SUM(quantity) AS total FROM issuances \ - WHERE (status = ? AND asset = ?)''', ('valid', asset)) - issued_total = list(cursor)[0]['total'] or 0 - cursor.close() - return issued_total - -def asset_destroyed_total (db, asset): - """Return asset total destroyed.""" - cursor = db.cursor() - cursor.execute('''SELECT SUM(quantity) AS total FROM destructions \ - WHERE (status = ? AND asset = ?)''', ('valid', asset)) - destroyed_total = list(cursor)[0]['total'] or 0 - cursor.close() - return destroyed_total - -def asset_supply (db, asset): - """Return asset supply.""" - return asset_issued_total(db, asset) - asset_destroyed_total(db, asset) - -def supplies (db): - """Return supplies.""" - d1 = creations(db) - d2 = destructions(db) - return {key: d1[key] - d2.get(key, 0) for key in d1.keys()} - -def held (db): #TODO: Rename ? - queries = [ - "SELECT asset, SUM(quantity) AS total FROM balances GROUP BY asset", - "SELECT give_asset AS asset, SUM(give_remaining) AS total FROM orders WHERE status = 'open' GROUP BY asset", - "SELECT give_asset AS asset, SUM(give_remaining) AS total FROM orders WHERE status = 'filled' and give_asset = 'XCP' and get_asset = 'BTC' GROUP BY asset", - "SELECT forward_asset AS asset, SUM(forward_quantity) AS total FROM order_matches WHERE status = 'pending' GROUP BY asset", - "SELECT backward_asset AS asset, SUM(backward_quantity) AS total FROM order_matches WHERE status = 'pending' GROUP BY asset", - "SELECT 'XCP' AS asset, SUM(wager_remaining) AS total FROM bets WHERE status = 'open'", - "SELECT 'XCP' AS asset, SUM(forward_quantity) AS total FROM bet_matches WHERE status = 'pending'", - "SELECT 'XCP' AS asset, SUM(backward_quantity) AS total FROM bet_matches WHERE status = 'pending'", - "SELECT 'XCP' AS asset, SUM(wager) AS total FROM rps WHERE status = 'open'", - "SELECT 'XCP' AS asset, SUM(wager * 2) AS total FROM rps_matches WHERE status IN ('pending', 'pending and resolved', 'resolved and pending')", - "SELECT asset, SUM(give_remaining) AS total FROM dispensers WHERE status IN (0,1,11) GROUP BY asset", - ] - - sql = "SELECT asset, SUM(total) AS total FROM (" + " UNION ALL ".join(queries) + ") GROUP BY asset;" - - cursor = db.cursor() - cursor.execute(sql) - held = {} - for row in cursor: - asset = row['asset'] - total = row['total'] - held[asset] = total - - return held - -### SUPPLIES ### - - -class GetURLError (Exception): pass -def get_url(url, abort_on_error=False, is_json=True, fetch_timeout=5): - """Fetch URL using requests.get.""" - try: - r = requests.get(url, timeout=fetch_timeout) - except Exception as e: - raise GetURLError("Got get_url request error: %s" % e) - else: - if r.status_code != 200 and abort_on_error: - raise GetURLError("Bad status code returned: '%s'. result body: '%s'." % (r.status_code, r.text)) - result = json.loads(r.text) if is_json else r.text - return result - - -def dhash(text): - if not isinstance(text, bytes): - text = bytes(str(text), 'utf-8') - - return hashlib.sha256(hashlib.sha256(text).digest()).digest() - - -def dhash_string(text): - return binascii.hexlify(dhash(text)).decode() - - -def get_balance (db, address, asset): - """Get balance of contract or address.""" - cursor = db.cursor() - balances = list(cursor.execute('''SELECT * FROM balances WHERE (address = ? AND asset = ?)''', (address, asset))) - cursor.close() - if not balances: return 0 - else: return balances[0]['quantity'] - -# Why on Earth does `binascii.hexlify()` return bytes?! -def hexlify(x): - """Return the hexadecimal representation of the binary data. Decode from ASCII to UTF-8.""" - return binascii.hexlify(x).decode('ascii') -def unhexlify(hex_string): - return binascii.unhexlify(bytes(hex_string, 'utf-8')) - -### Protocol Changes ### -def enabled(change_name, block_index=None): - """Return True if protocol change is enabled.""" - if config.REGTEST: - return True # All changes are always enabled on REGTEST - - if config.TESTNET: - index_name = 'testnet_block_index' - else: - index_name = 'block_index' - - enable_block_index = PROTOCOL_CHANGES[change_name][index_name] - - if not block_index: - block_index = CURRENT_BLOCK_INDEX - - if block_index >= enable_block_index: - return True - else: - return False - -def get_value_by_block_index(change_name, block_index=None): - - if not block_index: - block_index = CURRENT_BLOCK_INDEX - - if config.REGTEST: - max_block_index_testnet = -1 - for key, value in PROTOCOL_CHANGES[change_name]["testnet"]: - if int(key) > int(max_block_index): - max_block_index = key - - return PROTOCOL_CHANGES[change_name]["testnet"][max_block_index]["value"] - - if config.TESTNET: - index_name = 'testnet' - else: - index_name = 'mainnet' - - max_block_index = -1 - for key in PROTOCOL_CHANGES[change_name][index_name]: - if int(key) > int(max_block_index) and block_index >= int(key): - max_block_index = key - - return PROTOCOL_CHANGES[change_name][index_name][max_block_index]["value"] - -def transfer(db, source, destination, asset, quantity, action, event): - """Transfer quantity of asset from source to destination.""" - debit(db, source, asset, quantity, action=action, event=event) - credit(db, destination, asset, quantity, action=action, event=event) - -ID_SEPARATOR = '_' -def make_id(hash_1, hash_2): - return hash_1 + ID_SEPARATOR + hash_2 -def parse_id(match_id): - assert match_id[64] == ID_SEPARATOR - return match_id[:64], match_id[65:] # UTF-8 encoding means that the indices are doubled. - -def sizeof(v): - if isinstance(v, dict) or isinstance(v, DictCache): - s = 0 - for dk, dv in v.items(): - s += sizeof(dk) - s += sizeof(dv) - - return s - else: - return sys.getsizeof(v) - -class DictCache: - """Threadsafe FIFO dict cache""" - def __init__(self, size=100): - if int(size) < 1 : - raise AttributeError('size < 1 or not a number') - self.size = size - self.dict = collections.OrderedDict() - self.lock = threading.Lock() - - def __getitem__(self,key): - with self.lock: - return self.dict[key] - - def __setitem__(self,key,value): - with self.lock: - while len(self.dict) >= self.size: - self.dict.popitem(last=False) - self.dict[key] = value - - def __delitem__(self,key): - with self.lock: - del self.dict[key] - - def __len__(self): - with self.lock: - return len(self.dict) - - def __contains__(self, key): - with self.lock: - return key in self.dict - - def refresh(self, key): - with self.lock: - self.dict.move_to_end(key, last=True) - - -URL_USERNAMEPASS_REGEX = re.compile('.+://(.+)@') -def clean_url_for_log(url): - m = URL_USERNAMEPASS_REGEX.match(url) - if m and m.group(1): - url = url.replace(m.group(1), 'XXXXXXXX') - - return url - -# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 - -# ORACLES -def satoshirate_to_fiat(satoshirate): - return round(satoshirate/100.0,2) - -def get_oracle_last_price(db, oracle_address, block_index): - cursor = db.cursor() - cursor.execute('SELECT * FROM broadcasts WHERE source=:source AND status=:status AND block_index<:block_index ORDER by tx_index DESC LIMIT 1', { - 'source': oracle_address, - 'status': 'valid', - 'block_index': block_index - }) - broadcasts = cursor.fetchall() - cursor.close() - - if len(broadcasts) == 0: - return None, None, None, None - - oracle_broadcast = broadcasts[0] - oracle_label = oracle_broadcast["text"].split("-") - if len(oracle_label) == 2: - fiat_label = oracle_label[1] - else: - fiat_label = "" - - return oracle_broadcast['value'], oracle_broadcast['fee_fraction_int'], fiat_label, oracle_broadcast['block_index'] \ No newline at end of file diff --git a/counterpartylib/test/fixtures/__init__.py b/counterpartylib/test/fixtures/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.log b/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.log deleted file mode 100644 index 5b588b75c9..0000000000 --- a/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.log +++ /dev/null @@ -1,261 +0,0 @@ -Creating connection to `:memory:`. -Checking database integrity. -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.00000000; txid: 5f00a83de4b1acc6a510a03552679041fffaae22de1fffdbe309a36bb6111505; vout: 0; confirmations: 7', 'amount: 1.00000000; txid: 9d34af75fca5282eb97f1aba6cf0f23e78556e6fc04a16e013351d841093d539; vout: 0; confirmations: 7'] -Fee/KB 0.00025000 -New input: amount: 1.00000000; txid: 5f00a83de4b1acc6a510a03552679041fffaae22de1fffdbe309a36bb6111505; vout: 0; confirmations: 7 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.37994375 BTC -Credit: 930.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #burn# <9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30> -Burn: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 burned 0.62 BTC for 930.0 XCP (9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.00000000; txid: 9d34af75fca5282eb97f1aba6cf0f23e78556e6fc04a16e013351d841093d539; vout: 0; confirmations: 8', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.00000000; txid: 9d34af75fca5282eb97f1aba6cf0f23e78556e6fc04a16e013351d841093d539; vout: 0; confirmations: 8 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.99976750 BTC -Debit: 0.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <896436390e05977c173311d54cddacbb898bdbf1bb11bd4b7e4932004eb00df6> -Credit: 0.5 XCP to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <896436390e05977c173311d54cddacbb898bdbf1bb11bd4b7e4932004eb00df6> -Send: 0.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (896436390e05977c173311d54cddacbb898bdbf1bb11bd4b7e4932004eb00df6) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.99976750; txid: 896436390e05977c173311d54cddacbb898bdbf1bb11bd4b7e4932004eb00df6; vout: 2; confirmations: 1', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 2'] -Fee/KB 0.00025000 -New input: amount: 0.99976750; txid: 896436390e05977c173311d54cddacbb898bdbf1bb11bd4b7e4932004eb00df6; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 1000000 -Size: 272 Fee: 0.01000000 Change quantity: 0.98968950 BTC -Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered 0.5 BTC for 1.0 XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1) [open] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.98968950; txid: 7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1; vout: 1; confirmations: 1', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 3'] -Fee/KB 0.00025000 -New input: amount: 0.98968950; txid: 7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.98954350 BTC -Debit: 1.05 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #open order# -Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered 1.05 XCP for 0.5 BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433) [open] -Considering: 7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1 -Tx0 Price: 2.0; Tx1 Inverse Price: 2.1 -Potential forward quantities: 50000000, 52500000 -Forward Quantity: 50000000 -Backward Quantity: 100000000 -Tx0 fee provided remaining: 0.01; required fee: 0.00857142 -Order Match: 0.5 BTC for 1.0 XCP (7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1_e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433) [pending] -Order match has only -10 confirmation(s). -data_btc_out=15600 (data_value=7800 len(data_array)=2) -Sorted candidate UTXOs: ['amount: 0.98954350; txid: e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433; vout: 1; confirmations: 1', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 4'] -Fee/KB 0.00025000 -New input: amount: 0.98954350; txid: e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 387 final_fee 9675 -Size: 387 Fee: 0.00009675 Change quantity: 0.48929075 BTC -Credit: 1.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #btcpay# <5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61> -Database: set status of order_match 7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1_e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433 to completed. -BTC Payment: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 paid 0.5 BTC to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 for order match 7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1_e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433 (5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.50000000; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 0; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 1', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 5'] -Fee/KB 0.00025000 -New input: amount: 0.50000000; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 0; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.49985400 BTC -Debit: 0.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #issuance fee# <59c87f1f8a28eece244652b6284b40681a2620bfae8b58c32f303e55f06be41d> -Issuance: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 created 10.0 of divisible asset BBBB (59c87f1f8a28eece244652b6284b40681a2620bfae8b58c32f303e55f06be41d) [valid] -Credit: 10.0 BBBB to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #issuance# <59c87f1f8a28eece244652b6284b40681a2620bfae8b58c32f303e55f06be41d> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49985400; txid: 59c87f1f8a28eece244652b6284b40681a2620bfae8b58c32f303e55f06be41d; vout: 1; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 2', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 6'] -Fee/KB 0.00025000 -New input: amount: 0.49985400; txid: 59c87f1f8a28eece244652b6284b40681a2620bfae8b58c32f303e55f06be41d; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.49970800 BTC -Debit: 0.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #issuance fee# <6573e8856c4451ae0b0fa39453dc25be1050599a1473933b57b0c093d63e6291> -Issuance: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 created 100000 of indivisible asset BBBC (6573e8856c4451ae0b0fa39453dc25be1050599a1473933b57b0c093d63e6291) [valid] -Credit: 100000 BBBC to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #issuance# <6573e8856c4451ae0b0fa39453dc25be1050599a1473933b57b0c093d63e6291> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49970800; txid: 6573e8856c4451ae0b0fa39453dc25be1050599a1473933b57b0c093d63e6291; vout: 1; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 3', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 7'] -Fee/KB 0.00025000 -New input: amount: 0.49970800; txid: 6573e8856c4451ae0b0fa39453dc25be1050599a1473933b57b0c093d63e6291; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.49947550 BTC -Debit: 0.04 BBBB from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# -Credit: 0.04 BBBB to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# -Send: 0.04 BBBB from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (c62b0567e929ffc2529da427a5b0df1968b53a0436a1d28aa76fce3705b6b595) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49947550; txid: c62b0567e929ffc2529da427a5b0df1968b53a0436a1d28aa76fce3705b6b595; vout: 2; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 4', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 8'] -Fee/KB 0.00025000 -New input: amount: 0.49947550; txid: c62b0567e929ffc2529da427a5b0df1968b53a0436a1d28aa76fce3705b6b595; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.49924300 BTC -Debit: 526 BBBC from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <1935e06458e6ab179a84307d47dcd442e0b2e1c172c5fb929eafa3a57225d1b0> -Credit: 526 BBBC to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <1935e06458e6ab179a84307d47dcd442e0b2e1c172c5fb929eafa3a57225d1b0> -Send: 526 BBBC from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (1935e06458e6ab179a84307d47dcd442e0b2e1c172c5fb929eafa3a57225d1b0) [valid] -Total quantity to be distributed in dividends: 0.00000024 XCP -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49924300; txid: 1935e06458e6ab179a84307d47dcd442e0b2e1c172c5fb929eafa3a57225d1b0; vout: 2; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 5', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 9'] -Fee/KB 0.00025000 -New input: amount: 0.49924300; txid: 1935e06458e6ab179a84307d47dcd442e0b2e1c172c5fb929eafa3a57225d1b0; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.49909700 BTC -Debit: 0.00000024 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #dividend# <6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f> -Debit: 0.0002 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #dividend fee# <6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f> -Credit: 0.00000024 XCP to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #dividend# <6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f> -Dividend: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 paid 0.000006 XCP per unit of BBBB (6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f) [valid] -Total quantity to be distributed in dividends: 0.004208 XCP -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49909700; txid: 6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f; vout: 1; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 6', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 10'] -Fee/KB 0.00025000 -New input: amount: 0.49909700; txid: 6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.49895100 BTC -Debit: 0.004208 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #dividend# <462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087> -Debit: 0.0002 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #dividend fee# <462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087> -Credit: 0.004208 XCP to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #dividend# <462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087> -Dividend: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 paid 0.000008 XCP per unit of BBBC (462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49895100; txid: 462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087; vout: 1; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 7', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 11'] -Fee/KB 0.00025000 -New input: amount: 0.49895100; txid: 462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.49880500 BTC -Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:33:20 with a fee of 99.999999%% (3bd2702db834abf080054f2391e229d0ca8dc9d578256f23e744ad0e5997d4e8) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49880500; txid: 3bd2702db834abf080054f2391e229d0ca8dc9d578256f23e744ad0e5997d4e8; vout: 1; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 8', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 12'] -Fee/KB 0.00025000 -New input: amount: 0.49880500; txid: 3bd2702db834abf080054f2391e229d0ca8dc9d578256f23e744ad0e5997d4e8; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.49857250 BTC -Debit: 0.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet# <19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9> -Bet: 0.5 XCP against 0.25 XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49857250; txid: 19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9; vout: 2; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 9', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 13'] -Fee/KB 0.00025000 -New input: amount: 0.49857250; txid: 19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.49834000 BTC -Expired order: 7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1 -Debit: 0.25 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet# <43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84> -Bet: 0.25 XCP against 0.415 XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 -Considering: 19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9 -Tx0 Inverse Odds: 0.5; Tx1 Odds: 0.6024096385542169 -Potential forward quantities: 50000000, 41500000 -Forward Quantity: 41500000 -Backward Quantity: 20750000 -Credit: 0.0425 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #filled# <43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84> -Bet Match: BullCFD for 0.415 XCP against BearCFD for 0.2075 XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:00 that 0.0 value, leveraged 3.0x (19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9_43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49834000; txid: 43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84; vout: 2; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 10', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 14'] -Fee/KB 0.00025000 -New input: amount: 0.49834000; txid: 43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.49810750 BTC -Credit: 0.05 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #cancel order# -Expired order: e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433 -Debit: 1.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet# <1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d> -Bet: 1.5 XCP against 3.5 XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49810750; txid: 1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d; vout: 2; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 11', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 15'] -Fee/KB 0.00025000 -New input: amount: 0.49810750; txid: 1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.49787500 BTC -Debit: 3.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet# <005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531> -Bet: 3.5 XCP against 1.5 XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 -Considering: 19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9 -Skipping: leverages disagree. -Considering: 1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d -Tx0 Inverse Odds: 2.3333333333333335; Tx1 Odds: 2.3333333333333335 -Potential forward quantities: 150000000, 150000000 -Forward Quantity: 150000000 -Backward Quantity: 350000000 -Credit: 0.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #filled# <005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531> -Credit: 0.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #filled# <005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531> -Bet Match: BullCFD for 1.5 XCP against BearCFD for 3.5 XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:00 that 0.0 value, leveraged 1.0x (1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d_005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49787500; txid: 005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531; vout: 2; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 12', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 16'] -Fee/KB 0.00025000 -New input: amount: 0.49787500; txid: 005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.49764250 BTC -Debit: 7.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet# -Bet: 7.5 XCP against 6.5 XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49764250; txid: e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da; vout: 2; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 13', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 17'] -Fee/KB 0.00025000 -New input: amount: 0.49764250; txid: e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.49741000 BTC -Debit: 6.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet# -Bet: 6.5 XCP against 7.5 XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 -Considering: e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da -Tx0 Inverse Odds: 0.8666666666666667; Tx1 Odds: 0.8666666666666667 -Potential forward quantities: 750000000, 750000000 -Forward Quantity: 750000000 -Backward Quantity: 650000000 -Credit: 0.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #filled# -Credit: 0.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #filled# -Bet Match: Equal for 7.5 XCP against NotEqual for 6.5 XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:36:40 that 1.0 value, leveraged 1.0x (e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da_dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49741000; txid: dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9; vout: 2; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 14', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 18'] -Fee/KB 0.00025000 -New input: amount: 0.49741000; txid: dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.49726400 BTC -Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:34:10 with a fee of 5.0%% (6b37e7c729d923e82bd81ad87917384173f636edead62da66946e1363e652b09) [valid] -Credit: 0.591375 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet settled: liquidated for bear# <6b37e7c729d923e82bd81ad87917384173f636edead62da66946e1363e652b09> -Credit: 0.031125 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #feed fee# <6b37e7c729d923e82bd81ad87917384173f636edead62da66946e1363e652b09> -Bet Match Force‐Liquidated: 0.0 XCP credited to the bull, 0.591375 XCP credited to the bear, and 0.031125 XCP credited to the feed address (19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9_43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84) -Database: set status of bet_match 19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9_43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84 to settled: liquidated for bear. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49726400; txid: 6b37e7c729d923e82bd81ad87917384173f636edead62da66946e1363e652b09; vout: 1; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 15', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 19'] -Fee/KB 0.00025000 -New input: amount: 0.49726400; txid: 6b37e7c729d923e82bd81ad87917384173f636edead62da66946e1363e652b09; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.49711800 BTC -Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:01 with a fee of 5.0%% (720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7) [valid] -Credit: 1.593 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet settled# <720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7> -Credit: 3.157 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet settled# <720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7> -Credit: 0.25 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #feed fee# <720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7> -Bet Match Settled: 1.593 XCP credited to the bull, 3.157 XCP credited to the bear, and 0.25 XCP credited to the feed address (1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d_005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531) -Database: set status of bet_match 1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d_005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531 to settled. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49711800; txid: 720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7; vout: 1; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 16', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 20'] -Fee/KB 0.00025000 -New input: amount: 0.49711800; txid: 720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.49697200 BTC -Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:36:41 with a fee of 5.0%% (6e29568b84864b47c5e677a8a32b4e5527998f9bc3f6cb9aedece456e267cd3c) [valid] -Credit: 13.3 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet settled: for notequal# <6e29568b84864b47c5e677a8a32b4e5527998f9bc3f6cb9aedece456e267cd3c> -Credit: 0.7 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #feed fee# <6e29568b84864b47c5e677a8a32b4e5527998f9bc3f6cb9aedece456e267cd3c> -Bet Match Settled: NotEqual won the pot of 13.3 XCP; 0.7 XCP credited to the feed address (e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da_dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9) -Database: set status of bet_match e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da_dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9 to settled: for notequal. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.49697200; txid: 6e29568b84864b47c5e677a8a32b4e5527998f9bc3f6cb9aedece456e267cd3c; vout: 1; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 17', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 21'] -Fee/KB 0.00025000 -New input: amount: 0.49697200; txid: 6e29568b84864b47c5e677a8a32b4e5527998f9bc3f6cb9aedece456e267cd3c; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.49682600 BTC -Debit: 0.5 BBBB from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #open order# <9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3> -Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered 0.5 BBBB for 0.5 XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3) [open] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 0.49682600; txid: 9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3; vout: 1; confirmations: 1', 'amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 18', 'amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 22'] -Fee/KB 0.00025000 -New input: amount: 0.49682600; txid: 9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: -0.50323025 BTC -New input: amount: 0.48929075; txid: 5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61; vout: 3; confirmations: 18 -final_fee inputs: 2 size: 406 final_fee 10150 -Size: 406 Fee: 0.00010150 Change quantity: -0.01398475 BTC -New input: amount: 0.37994375; txid: 9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30; vout: 1; confirmations: 22 -final_fee inputs: 3 size: 587 final_fee 14675 -Size: 587 Fee: 0.00014675 Change quantity: 0.36591375 BTC -Credit: 569.99887262 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #burn# -Burn: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 burned 0.38 BTC for 569.99887262 XCP (c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.36591375; txid: c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.36591375; txid: c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.36568125 BTC -Credit: 0.085 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #recredit wager remaining# <19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9> -Expired bet: 19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9 -Debit: 10000 BBBC from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# -Credit: 10000 BBBC to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# -Send: 10000 BBBC from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (d37210d41a23ada8baf982a85190a742f7de9901f585e99e30ed3c9694efb657) [valid] -Credit: 0.5 BBBB to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #cancel order# <9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3> -Expired order: 9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3 diff --git a/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.sql b/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.sql deleted file mode 100644 index 66b7ddd767..0000000000 --- a/counterpartylib/test/fixtures/scenarios/multisig_1_of_2.sql +++ /dev/null @@ -1,1400 +0,0 @@ -PRAGMA page_size=4096; --- PRAGMA encoding='UTF-8'; --- PRAGMA auto_vacuum=NONE; --- PRAGMA max_page_count=1073741823; - -BEGIN TRANSACTION; - --- Table addresses -DROP TABLE IF EXISTS addresses; -CREATE TABLE addresses( - address TEXT UNIQUE, - options INTEGER, - block_index INTEGER); --- Triggers and indices on addresses -CREATE TRIGGER _addresses_delete BEFORE DELETE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO addresses(rowid,address,options,block_index) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.options)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _addresses_insert AFTER INSERT ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM addresses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _addresses_update AFTER UPDATE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE addresses SET address='||quote(old.address)||',options='||quote(old.options)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX addresses_idx ON addresses (address); - --- Table assets -DROP TABLE IF EXISTS assets; -CREATE TABLE assets( - asset_id TEXT UNIQUE, - asset_name TEXT UNIQUE, - block_index INTEGER, - asset_longname TEXT); -INSERT INTO assets VALUES('0','BTC',NULL,NULL); -INSERT INTO assets VALUES('1','XCP',NULL,NULL); -INSERT INTO assets VALUES('18279','BBBB',310005,NULL); -INSERT INTO assets VALUES('18280','BBBC',310006,NULL); --- Triggers and indices on assets -CREATE TRIGGER _assets_delete BEFORE DELETE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO assets(rowid,asset_id,asset_name,block_index,asset_longname) VALUES('||old.rowid||','||quote(old.asset_id)||','||quote(old.asset_name)||','||quote(old.block_index)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _assets_insert AFTER INSERT ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM assets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _assets_update AFTER UPDATE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE assets SET asset_id='||quote(old.asset_id)||',asset_name='||quote(old.asset_name)||',block_index='||quote(old.block_index)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE UNIQUE INDEX asset_longname_idx ON assets(asset_longname); -CREATE INDEX id_idx ON assets (asset_id); -CREATE INDEX name_idx ON assets (asset_name); - --- Table balances -DROP TABLE IF EXISTS balances; -CREATE TABLE balances( - address TEXT, - asset TEXT, - quantity INTEGER); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',149849426438); -INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50420824); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',996000000); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',89474); -INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000); -INSERT INTO balances VALUES('1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10526); --- Triggers and indices on balances -CREATE TRIGGER _balances_delete BEFORE DELETE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO balances(rowid,address,asset,quantity) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||')'); - END; -CREATE TRIGGER _balances_insert AFTER INSERT ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM balances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _balances_update AFTER UPDATE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE balances SET address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_asset_idx ON balances (address, asset); - --- Table bet_expirations -DROP TABLE IF EXISTS bet_expirations; -CREATE TABLE bet_expirations( - bet_index INTEGER PRIMARY KEY, - bet_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (bet_index, bet_hash) REFERENCES bets(tx_index, tx_hash)); -INSERT INTO bet_expirations VALUES(13,'19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310023); --- Triggers and indices on bet_expirations -CREATE TRIGGER _bet_expirations_delete BEFORE DELETE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_expirations(rowid,bet_index,bet_hash,source,block_index) VALUES('||old.rowid||','||quote(old.bet_index)||','||quote(old.bet_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_expirations_insert AFTER INSERT ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_expirations_update AFTER UPDATE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_expirations SET bet_index='||quote(old.bet_index)||',bet_hash='||quote(old.bet_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_expirations -DROP TABLE IF EXISTS bet_match_expirations; -CREATE TABLE bet_match_expirations( - bet_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on bet_match_expirations -CREATE TRIGGER _bet_match_expirations_delete BEFORE DELETE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_expirations(rowid,bet_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_match_expirations_insert AFTER INSERT ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_expirations_update AFTER UPDATE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_expirations SET bet_match_id='||quote(old.bet_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_resolutions -DROP TABLE IF EXISTS bet_match_resolutions; -CREATE TABLE bet_match_resolutions( - bet_match_id TEXT PRIMARY KEY, - bet_match_type_id INTEGER, - block_index INTEGER, - winner TEXT, - settled BOOL, - bull_credit INTEGER, - bear_credit INTEGER, - escrow_less_fee INTEGER, - fee INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO bet_match_resolutions VALUES('19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9_43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84',1,310018,'0',0,59137500,NULL,NULL,3112500); -INSERT INTO bet_match_resolutions VALUES('1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d_005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531',1,310019,'1',159300000,315700000,NULL,NULL,25000000); -INSERT INTO bet_match_resolutions VALUES('e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da_dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9',5,310020,NULL,NULL,NULL,'NotEqual',1330000000,70000000); --- Triggers and indices on bet_match_resolutions -CREATE TRIGGER _bet_match_resolutions_delete BEFORE DELETE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_resolutions(rowid,bet_match_id,bet_match_type_id,block_index,winner,settled,bull_credit,bear_credit,escrow_less_fee,fee) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.bet_match_type_id)||','||quote(old.block_index)||','||quote(old.winner)||','||quote(old.settled)||','||quote(old.bull_credit)||','||quote(old.bear_credit)||','||quote(old.escrow_less_fee)||','||quote(old.fee)||')'); - END; -CREATE TRIGGER _bet_match_resolutions_insert AFTER INSERT ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_resolutions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_resolutions_update AFTER UPDATE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_resolutions SET bet_match_id='||quote(old.bet_match_id)||',bet_match_type_id='||quote(old.bet_match_type_id)||',block_index='||quote(old.block_index)||',winner='||quote(old.winner)||',settled='||quote(old.settled)||',bull_credit='||quote(old.bull_credit)||',bear_credit='||quote(old.bear_credit)||',escrow_less_fee='||quote(old.escrow_less_fee)||',fee='||quote(old.fee)||' WHERE rowid='||old.rowid); - END; - --- Table bet_matches -DROP TABLE IF EXISTS bet_matches; -CREATE TABLE bet_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_bet_type INTEGER, - tx1_bet_type INTEGER, - feed_address TEXT, - initial_value INTEGER, - deadline INTEGER, - target_value REAL, - leverage INTEGER, - forward_quantity INTEGER, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO bet_matches VALUES('19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9_43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84',13,'19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',14,'43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310013,10,10,310022,99999999,'settled: liquidated for bear'); -INSERT INTO bet_matches VALUES('1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d_005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531',15,'1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',16,'005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310015,10,10,310024,99999999,'settled'); -INSERT INTO bet_matches VALUES('e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da_dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9',17,'e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',18,'dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',2,3,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310017,10,10,310026,99999999,'settled: for notequal'); --- Triggers and indices on bet_matches -CREATE TRIGGER _bet_matches_delete BEFORE DELETE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_bet_type,tx1_bet_type,feed_address,initial_value,deadline,target_value,leverage,forward_quantity,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_bet_type)||','||quote(old.tx1_bet_type)||','||quote(old.feed_address)||','||quote(old.initial_value)||','||quote(old.deadline)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.forward_quantity)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bet_matches_insert AFTER INSERT ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_matches_update AFTER UPDATE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_bet_type='||quote(old.tx0_bet_type)||',tx1_bet_type='||quote(old.tx1_bet_type)||',feed_address='||quote(old.feed_address)||',initial_value='||quote(old.initial_value)||',deadline='||quote(old.deadline)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',forward_quantity='||quote(old.forward_quantity)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_feed_idx ON bet_matches (feed_address, status); - --- Table bets -DROP TABLE IF EXISTS bets; -CREATE TABLE bets( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - feed_address TEXT, - bet_type INTEGER, - deadline INTEGER, - wager_quantity INTEGER, - wager_remaining INTEGER, - counterwager_quantity INTEGER, - counterwager_remaining INTEGER, - target_value REAL, - leverage INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO bets VALUES(13,'19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9',310012,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'expired'); -INSERT INTO bets VALUES(14,'43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84',310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1,1388000100,25000000,4250000,41500000,0,0.0,15120,10,310023,99999999,'filled'); -INSERT INTO bets VALUES(15,'1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d',310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,150000000,0,350000000,0,0.0,5040,10,310024,99999999,'filled'); -INSERT INTO bets VALUES(16,'005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531',310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1,1388000100,350000000,0,150000000,0,0.0,5040,10,310025,99999999,'filled'); -INSERT INTO bets VALUES(17,'e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da',310016,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',2,1388000200,750000000,0,650000000,0,1.0,5040,10,310026,99999999,'filled'); -INSERT INTO bets VALUES(18,'dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9',310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',3,1388000200,650000000,0,750000000,0,1.0,5040,10,310027,99999999,'filled'); --- Triggers and indices on bets -CREATE TRIGGER _bets_delete BEFORE DELETE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bets(rowid,tx_index,tx_hash,block_index,source,feed_address,bet_type,deadline,wager_quantity,wager_remaining,counterwager_quantity,counterwager_remaining,target_value,leverage,expiration,expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.feed_address)||','||quote(old.bet_type)||','||quote(old.deadline)||','||quote(old.wager_quantity)||','||quote(old.wager_remaining)||','||quote(old.counterwager_quantity)||','||quote(old.counterwager_remaining)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bets_insert AFTER INSERT ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bets_update AFTER UPDATE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bets SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',feed_address='||quote(old.feed_address)||',bet_type='||quote(old.bet_type)||',deadline='||quote(old.deadline)||',wager_quantity='||quote(old.wager_quantity)||',wager_remaining='||quote(old.wager_remaining)||',counterwager_quantity='||quote(old.counterwager_quantity)||',counterwager_remaining='||quote(old.counterwager_remaining)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX feed_valid_bettype_idx ON bets (feed_address, status, bet_type); - --- Table blocks -DROP TABLE IF EXISTS blocks; -CREATE TABLE blocks( - block_index INTEGER UNIQUE, - block_hash TEXT UNIQUE, - block_time INTEGER, - previous_block_hash TEXT UNIQUE, - difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, - PRIMARY KEY (block_index, block_hash)); -INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); -INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'98ccdf7cd2fb29a8a01cbed5f133b70b6966c6c56354dad00baacedd0673c87e','faf6476a908c85f6e26ca5d182688d6da3f326296602d5ad3aa5979cb8bc110b','f5843c07fb03fd5db4cd4dd0737cab8e2b3bd423f58da0e098cff02044556568'); -INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'fd43dc5efe2ee796ef7d24f8d478a67aa58bf85f538ef4b9a49b983a315deb26','f26a699c16b97ebb94d1efb170f5d6c8f2eb7f142fc6b00f3110744306247167','0f6386a71df285439aff2091081a2e1fe1930f0991a86f30d7ebf1e5632da8ff'); -INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'dbae4fff32545b4f3c104fb5a051dcaeacecd27401c84c09f93923b8bc30eab5','83ad9694ba7355702d30ab146748ef62d432adfca276c4cef218094875ea56fa','3635fc938720f59e10712971ce6191d0126eb22354048d805439493db7e338e5'); -INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'fd0ae9793d9513540246b94ad116fc0531e8e07b2c014752e175a12e2a7a82d4','914c5104ba32dc170caa204ceef20539ebe6bbc1d91a3d9606bf021f0d450fd2','330405f6077d2946072001144134b8ccee5309df734ad5f45da267cf5c13919a'); -INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'bd894777a85b731155a0d6362766b4220c03db4f3e5fbf030d6c2529cb5f3537','9286144a2f996077cda776eb11193ef5dc3f5cf93c8ff29cf7d5b2f4add15605','0ca3109ff79f64cefd1ecd4f9192db21e68f66afedf87a499416c74fe44028a5'); -INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'264c98f1d460f78e52def545d25482fd76549a5309d04841bc27b335f06470a2','a6b97bbaec97bace0a2ae28e227f3d17c87b8a572401ec73363d00b6dae2c2fd','4494cf782435097ed12ae08eeea4e3e21dfbc6be7bd08a2b77385842f81d0068'); -INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'a1f2aa5a0b8d030c2fc4e1243c3173319ecf68d232262ea3dc8bfdd03a3f923a','6bd97be8a62908c88fe8e8b2f1c4f748e3500a2454579ff8b88d8d44a02eeb41','5db48af9f8819b9fb3baee15a9b937a27fa37a1a4c718fe8499db4742d93642d'); -INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'8709aa2d5064ea2b7ab51a887d21f5fddcb7046753cd883317b533ed121f8504','513d2bdf239850135f891e542115a36e055e00e9975aa996dec33dad8dbba8c7','54956316e50cfe4be9beff69409ad2edb1268ecb6396c8516abc35b876630495'); -INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'c1c516176fe38b69b31e3668b5ef20805bd90d3112c77f5652f838af8e7f604a','787d45e677db97608f3ad6953297ddafabccf9f6ff620cbb23ae19c7b15a5de6','c3801bf11d7632319e521568f8157de0b6381cfe46b2ae2f3bcfbecacb3d9d36'); -INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'ae8ee9e681f0ac96de96babc1c80e5188b3e0cb91074a0dfd8511ee7d0ae64c8','1ca498ac13747f3480fad17fd226dd2549b8ad1698ff46105d9104fe9500421d','3760b0f90c4366c0cfe27ea7531278badd7e8b8a47ae3cb011733f3eb15b30ec'); -INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'0451ffa5d7ffb0e588e58ac7eacf77f6b3e17f1d27c1039f03d7716b16fb234f','ecc216286ef67454c5fd287518bf057bcb4abe09b4146e9a7371f0eced984e00','20f0ef7726d7624d6a20316307ed1b6496aa28e3e7b2d979db9c0dc132b0d65e'); -INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'dfaae3f28c2f75e4bcc49034ff2a191b5a41b88035c5d266181617c8c65ad5d3','b62659ce7988b0d324a6f4ebd3c5f31ec07fe1362ded1fd6509892446b850072','ddb6e767dbdb465c6c506718bc5981f95e56dbe01387437ef7debd345abc6a7c'); -INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'c711e8cf2d9bbed01724a7b22cbd4900a4fd0a126bb7ecbd7c97ca15a6276553','e82579903ead26fa4564651d12b8ba6bfa6ea7b64a90975650b2eaa857d01992','e5963ffce3f9213c5ca6f288c6b4e7642537e48be1c54a8fbdef946130ff2405'); -INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'3dfa5822de8a4c674f1517b17e50d2ef63ccbb1fc4ae96fe5e1dc05cd353aa4b','7ce118322952fc58158fb3773245abd897eee30bc8c64524b01acb3eb4782677','d2ae2b9ce7de03cbd9be4f863167047d2bde2ecfaf70495608bc3bdf4794e759'); -INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'49fcaed957776bc62c9f1feac30dad8c0574596d312f9efee7a453e00bf64866','ff463f94f50daff01aa245dcd327c3da3840325f2916982cc9c57f0ae34af548','2fd0ed2b252af32d7336f30fcff43db31ecae8c798ae3a3c9ac68d6eba5fc097'); -INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'4e4abd3e8ab2658a7ac673e3a178ceac76fee41cf48bb6ed007d241c079979bf','67041390e6d3e576b99c4d457b847a0f16ee4eaaa12617f1dc8698d193d89094','4f3485223c95164865477d8180a8a5ba2a2a454a6301e1476413659e53056341'); -INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'17a28cca0777254af26544edfefcad8810e847e5d173fded9a7813719cf1162f','f6a0d431a83291a088c9c164c51f3f001eaf19a81863834f59f885605caa9260','741adcb7e47dfc3a3d6bbc1afa78abb2a03d24015c856ea94392ba013a2c4a8c'); -INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'1fb58120e9eb78908fda6265cad12b4a5770701e9a271bd5c4bc94059bd3bab5','71dda6919e8d17e053a0e0b2abde0d581d9c8f768bcccc8f7b1f13e79d66bb66','a2bef7f403bfea1d96f2c967bc208c84ac218bccdb5343d382684e6c732b831f'); -INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'304243c1b11644e04d325d7100e4c757c07b874f0349e60163a5a544e84e951f','7523472a8d1a0d991b2819f1c5e4575a5c4e2d3de88bf6082f50e394a947e7c9','7f85ec6434d221e90b7880dc0de8c381cca352e3aff7a99ee659ea17342aa52b'); -INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'fc9905ee4863b3cf29a3e558ee690a24ed978a4fd79c464bdde30a34cfff19fe','3ea51d4d4d2f52fb9b49b26e91c082a24f7a7ac5107b4ddc1f8ea7c4f2b9611d','41494a383d3c2aa5ddd3e65a7b2c52de0808d71e8cf9c2e904cbf9e6cd8c2d5a'); -INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'e433feac4a09ad727bd3764b10a568acf5c659745a695e9d7e8790514f6bc98e','8b4d76d52e57c92d5fca2a185cfd1f9d67c3ded62555e8755b729b2e82b87cd6','ca6c6cdd3d8ee785b668d4da93f0b0ffe049a3802f62bb9931ae7c37e07fb317'); -INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'622f92da40eae0b1b57218b32ad18daf7d79c9e0202fed4a288d75b8fdcd19d2','17b0e95e8e6e27289c510dd34f6985233ef7f0fe5c8a0d362565aeedd6e9999b','a19e6f965ecf2af6278fcc419913b07425926582244354fc9bd9853e90a4bfcf'); -INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'b7aa8d9ebc37d52d8dcce2cc17431d6edf5a183b73ac85bb3d91276592215cfd','b58dde2fa24be2e4a0cfb2c85fd8fee704c2a86d40ba2e79201842ad0a90791b','511285af5664c1e2aec3a583f485707309abb4fd6bad104be2a43ea979968509'); -INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'501c058860063ca599f3b946d465b3bbd84fd483a2a80527e456e3de32b48a19','9fbcd2b7667a9c48b40ea5d9e7e3fccdd910daa1c436de91a7596c331fca6105','188d3d587b947965e0efe7856c714b67f527b5344a4d0da2b31c10eb1b7d2a9a'); -INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'222986ec44fae1a6196d64dec24b79872970823f17bf0459d3b247bdef316675','db933e70448c060bb5d3bfb307fb05e2796680c6df47090360b8d6b7cf67ca12','46f78dd6e4798cc748cc095d91fb3810beb567f370f4d3bf911d233656f9aaee'); -INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'bcd88006b9cb98445a74c656d424435e82eeaef95dd9c54e394b42808dc9cb8b','23374cf6cdc58adb36bea3ee8451321fb90ea77f4783a74dd28af8bd891df356','9df5257ad648a107cfebf467481ac3998ce8768bce2383be33ddc5730a7dd979'); -INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'3de7bf2043ac2e68bc9eaf8d1c12195a4f2400bc78c8deed0d487af11edf401e','a0394bee7560c69883eb46b63b14908375fc613c46176840ed62f9cf57442573','968f0d6aef4fb6313f5aeba7172a658ff77c1d9c1a29f89b8d9b00e288d62baf'); -INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'6c2a67783cf36e8987dc1805f87532ee1b94f79fb00952d8ee4cf3daaf655f85','8f08bbf6b0c64b09a4d6f1b73991e0f3b48309613bb006b6a0d5d78190350234','6de52a98d65f7137c6f416f965e5b36abb71e771d72e4f192f8348a090579222'); -INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'659c73390e2e7eccc07d690fb438181c604787208bc45f466e57721fa1e21a64','5827d4ab0174a8e79569d2b479d4d4d931166004aa833a36143f2a4be7b57d01','77d34d07c9352761db552ebbc35caf2798b7304b678177a50e47e63f7431d611'); -INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'87449e7ff7316e49012934d83c1f5b733cedf39680299a9582eb216e260e0c02','3cffa210af1a32ed7ee3f88ca8462389ba45359aa1207aab0980361e61b90fef','09af709f53afc6186e343acf3beb0e93729cd229d76b4454a26d586e52db941c'); -INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'6c4a7f749d0308edf5c88b3ea4de3b1d497ba3bc06435594d77686318b744b0f','9f71252f81e53bba0c1746bc09035895707841f0f5260b498b10de2a7ffde64b','652c074104008752eb456cf9f6ebb0af68e4363b6f5fdd6e9be870894dcc3837'); -INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'ecc04b1b2c7803ca17dc2a32adebd0960de2c04c8dbfec9cd88771dd883c885a','4742011b2b042e35df72ff725207ead03f3fcdca89877cb2d29a2738456a6b39','1378ea730fddf2c25d82070c9a60564c9a672eec43ba876f601620165edf4d55'); -INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'01e769c5b990db44a9e534bc6c759567eb4283e0ea252578dd525923c7fde02c','e0d760b1db71dc3eeb2ae5b95d10604f5a1cb6bc513d1b9498be0a9f4c7e2402','09008b0a8f1f7b0565052187ae8696e71565f1633df1452c44623cdb7351562a'); -INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'2df6b8dca0ffa8d6d55997605188637c2b86300e4dd7ebe3f1f275690169fd46','bf7f6ac6ba5fee1dcdc7ebb30b65a1bfecd26d53c689c0001e01f66fa7c7e4f7','d67d428357afc13efe80aaa5adfcf854ad65e161af2caaea239241fc61c4f7f6'); -INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'7f0dc7c1527a7d11831d272f0295eacabcb96fa3599f5a716bd29ba1bb6b7577','116fa2e29b8c46272b9de2bd29469d0996f9156431f48c465aeeb8390ba612d6','0e3b33269583f3ea520000f33c22aefde00dd20e39e4d3a75795a7c844bf01b6'); -INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'5e0cdf1764ed94672c29144f9c1bd9c3e70784f17c9dd1c9e4ce703a99bb3599','73ac8f51cc2552bafdebcdc9745199c5e3e66d6e9b8a6a92db2e2be6532a40ac','0dd74d18c80374acd5e4b760a3e4bd0ceab64fb9b33ee22261628cdfd1c7702d'); -INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'96da34a5a66b89aa3e8857b4a4edca51a56a0cbbfe600d8153077875624a153e','f0e0167580f1f1030de9762a87a83e0757d7d33c4884573395bed37aa7a4f729','bc123e0ebf45daad5b5090bafa2d2834737786c27fefd000ee89bdbe115f220c'); -INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'d481358c19b4220aa9a3d135fd0651fada6df8d0f27b9ec954ac07950e876c0c','a5b01e8e2024b42cf1442c2bcc9bc1c434d3279fb285d7c679acc2bff0a96dcf','d273a1c3d9f91a2c16c32c408a378e22ee9d5b9cfdce76d573a79e92a92d2320'); -INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'4e9fcc454ee53b3617c792eb6577c2eefa6eee6aa4a2925538cb1976d48817c9','f1ceb0c1650024cb85e37b7b4f908986138fa976df14641026dba60fcaf1eb6e','2c685e6757a48ec1e03f71aa7334088ae08b240155df63bf2a8e36764a9d9333'); -INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'795c5652d9679942a02060edfb497b072009695d9a72fb144fa3591dba65a2ce','e42fc2488d02b706742e68b901f67512344283247b06cf2f22dedc9f277208c7','f3e2ad6c5fd105f8f6c21ee3a0de1b1c61f220e516e269b89bf2cf6c679c3470'); -INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'e569e6e8083818e594e92b3356833e8dd54fcfcf5ed25af0d09e36e24b9dd441','24cddac7a7f2de85a731d867a760012105a615815e9fea47699c41f1b2a98309','43767cdff8d7b1fc48823b3c6abf367903c4a7778736cc7b69a5095c32674026'); -INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'2247fcc633175a91921d226f412e56822379c79ca799117c39ecaaca0a702192','08cf35151a639a552a1868d030b91f7287c463d74a1144f468fcbc3e0affe1df','65720a35ec9758bdf0423b37dc8b9230477495ae7f3b4f3ba525d0f5e91d514f'); -INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'0246c3a2a70b33a038ccdb816f6b0922a50d08310f360cbd5db4df58e97fc4dd','58171ec1b64f6d95d94ebecf089874b106b1544422dbaee4200040e096af7248','8ce0047e19847a94995f4fe7a004f93715341a62904a0cbd82704fecc44c088d'); -INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'cbe39e9d1a132cdc568f893bbc3d4f55d27bacf7af31f027ebea1b4bed9f0009','21090ddee12db3da4caa1c2a6c78b577fb4be82015005a9160edcf1b8c994192','e4212ff27b1898df4fcd54101f7c39b8ceb85cdd346eb98e41321b2d404e121b'); -INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'1202b05e118f0940ce270d9002d010076115a0197d889fee2d971a77709899bc','d2262c8e4281eb175a12e456fd200c149fb3f9af4fda593c4b78b3a3ca666651','d6351cb9686f71ed50beb13bb1fdff729f75d1979b700cc4153b78246636e4fe'); -INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'0bc49f765419c0b5b4911cccf03b0d9959aabacda266480b98245de0c0d35fc5','9f4b90d44c9f404ae8e24cf85933007b22b0acc377f360637d507c3da8f8206c','2bbdc9601860b4f0d4b778ff46f2cae6d046c417850288cf1686d79e76879d0f'); -INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'e42bf9806d0ff3a0663756f7955b30735747d14fcb0915c89884baa12795163d','eaacd7db19d79eec28bc87ca8d6260ebdd28d279825ae31dd5b6212168bf79a9','a2b44fcf3ed2bfac6e1e555af46721af837ed7f8e725968db0e513a0ec59da8e'); -INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'b19b5e14741284b4ca06b736120e903363651460a6efb3ede1aca3a4f3c00df1','3299d3ec1b6294cb2024c87c6997fd56c90c70a1e9d784f00ecbbd45294bdd0e','71dfedd101bd18169ecfbe9d37108bcf89304c2ace724f43319e9d1fff93b8b3'); -INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'e870de901ba86d65d0e2053251ffb32cc7dffb55fcc2efbc006a2b9137314a39','8a5d199d0d958fd903f752fa2a36678e961cd6f027913e16f2acf0c116e7c3cc','7a850412efe622dd0ba3612cc543a5afd363a36ead93b2cc65c586aa4c4a0a6e'); -INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'44cf354cdc8552ed37e5911340397d3531d0ba45100feae27377130d4ddef359','d6499b3b3b29d2a409635a4d953f8e93df6e9e61738e69111c414b57302d213f','2c5e8d0c3ec258cf1aa2a6660124f416a7bed6acba596a603e2e4cf1f43fc6d3'); -INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'7d72f11f48ac99553e1b2c52a7ff5645fbe05728a10a002727b9270dbb32daed','6bb3b07573fdc7483e7a7c3494c55dab6b31bdb0ec24dcea3ff907a97c50d362','a2882b2950066a928beac81571c576a1ffef3cb3d04a4d1c57c28c03cb90f090'); -INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'35a965dc90686fc4eb20450da81ca8db9125e25c2cdd7146fd61d98841d80c24','59ce15e92bb04cbdd95b690691f33ac0fd7a35138039016255282d4c7ef41c8b','accabbf7739efa8ade77afed985899a525f00c789ccb043a599d7056ddee8d56'); -INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'8604d503e7194ee1c8ebe1143019207b2aad163655107a3d23d018ef26cef550','c2ac33247bce88bff40fe4221b60e7b8e4aff7b64f26554c7a954d734be8c5ea','e345343baedc221dd9d8eb2f3a59f5966a903c58e76b14925717a7db82d54a9d'); -INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'ecdb64ffc44490eeb12199d2da5c1189c07f4102f5b91494cbe4ec68fe6bb6d4','391445eb2e112e8845244332b586b23ad0c9f11037336142eb317b51f6fee16b','f0f0735b81b25337b3d84a004ac04d1c9b4b05a5c8f214591c1e344ed81b7daa'); -INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'b96b0d51d6327284f5922b65e5d023afd2b2e44c9e11f435afbe2a71df4e6eb2','0d817401e9907d28a03bbd685dc10f70217dd6b9be21246c8c94930a7132329f','7f819515316fd9196df77318d069ae9ef0d746f17eb9a15b482eca1925f9dfa5'); -INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'c5be3fc23a9c41b7b78cc7df4ed13d1d35fdd7edab77c998cef5a5a5fe2a7d33','afc66bc7a19b647ffe0133b674a4306b86f22dd56edb4471c95cacd4edbe20ca','7b056a283ef6010f2a119141c34729712a09ea7186c5c64d191222701c9e6165'); -INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'faa7cf6128f229fe3d408797c77ef2972eb28d16542b32ec87c5fd42d2495018','386ffd3667146cd26c3138903a980bfc455964904ce8e82f0224c7c15dfe7ac3','584ef3d7a363a8d390a181c2ab095ecf5769d46c334d7aab0f91bbec3e00d8aa'); -INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'135af680c59a3d707ff3e6b67fbbb0aaaf0a97724d36ba584087658ae8c0db19','e1d0391d21eca721f2c6f44a075f69b0d136c1807105dd057c9ba44d66ca75d8','f7bd8caa4432635ca406fe28d620e48d4b0afe9331c7081e9f87c350f9bf9e9c'); -INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'496b559ef740feabe42d55356bc770bab7b927d79260c22848b7f47d51918f11','3b9e23dcd7439d71beeee8fc1dbcb1dc228d41da9cd8c4aa059a371a9448f811','1f6c2c6219077bf9df5c8cee460f630276a85f8da1d0f602f95bfde54353e0a5'); -INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'608eb77e572aa596c9e14c6e4cb1dc1993bcbcfe735cf0453124c2801192ecc9','abb2bb8c78547f58e88dfba4b2fd4fa5d0c70f414c1222c850e7b746e3ac8a5b','864cd57e3f1eb01023930669257fef6b37570b0eaf2d6cdb87cb7fdffa6d2fc8'); -INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'bc5c375d1237425486c9f46bd749fba20b5635bcaf3e2d9178b35ddfbb700f14','1478a0099c77e6991e35ab6fbdaed41f6812fd43ac7d2bbc83d8e6442559f304','ffe51f8636dc116089de2d0c54980677b39b3c86464b242df11659b09c212361'); -INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'c6d48d72746c0e18fa0f1b0b16f663869be2c4684a9d98b634e691ea495f4d81','942c318b5e4c3ff92c33df7f25acb1dfec635b6552dff548fbb2fac75ed360ee','ee0404237c27fb1a2ac804b9e5165e98271635330d5336f3c9603f8f7ffc956d'); -INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'8deffdb1602f1aa2d0d1956d2297ba30ac78901ea27eb223ad8bf7ca83b18110','b0dfbd59db113072f7692fb53a696ce539f07838c2f920b62d72d4379fe0d9a2','be2f8d85577f7f88b544db97edac8864e0a76cc0f521464bab0a9a12bcf08d67'); -INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'34859861f240c6553ffbf63fff9bc884f231276ec6173964d5fc6641a6d79b16','26149d8a88bcc7cf6ea6d1d5b3629eeaf99fd8304f5755e82aad549a9e986fdc','4159d43acb4aded5687e9f81105884bf5d5783b3b083334741a214aa4d406b7e'); -INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'fa185f9b97a1666ce3b966dc09b8a7870ba55896a54a54f54d3420708d5a8ae0','dfbb97c5c74e0cb4a79de6e8a0321f4e83217af17bbb1f304427871d637e28eb','dda985cdade4eb449a3f37a1a63f9502f337627c521c67677a775b63072bfac3'); -INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'9f75da9f944d59b1841d690b2994ead7fb0ee3d679ddbdb0b692e49238f66603','11a4debf5c39121329596bbebc7b3cd092220e62fad5c880757b403096a9b220','00d8454feae2726d875c1350713aa034130819b6f12dc495b1dc0458c6e4ee2d'); -INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'4740587d203632d1b4061343436e25e12941f0f80be03c3ab390a1c08b842b59','e6b49b968947750d5dd81b1aa1e0a8de173caf04a34538d230c24b3e0af89459','15d3c1e3141a66b3b411199206474271dc24feed4cf19cc0a5887686aef759ed'); -INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'d6eecb0ca22f29b50e52cd5dec8f408250a7b1ddc61bfa9bf6cc6ef0a85a6ffc','6ec7fb40dfde6c070f454c8a18ad8b588a42d32ba1bfcda6c48f5e24da590c8a','bfa7e54de30770c2cbdb7a02c2784585d06e7356d1cba490ed4305d2b354d60d'); -INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'1508605d4796eb2d8b0553b307827f570b5020f4cacf773926b6c8f2c1b003c8','155fe971815f4e9e10d27d65cfe569bf77c7ad88eaa133828ba3d2a9a390810d','e6d4e06b1735079cb2dd05b956c21ea85391f62cb1bfc1886cb9402191f74772'); -INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'ea7afbe0817cfef5a5a940bf88b057d01d092182dd5d0c7fd156b6750fdf4cb2','e9e06033f3e983a6ea8c42f8c42e336ceadfaa05d55376027d3f902c9db32b0c','5a76669265580b4302fc0baa63a2ae174810b1d936d453c38904d1aa07960c31'); -INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'f805d8bd0b724ffeb9e466367e8524bcbcf2c0fe0525b8ff2707af2013824a2c','30861c1756466031943619f3a3c937c513854924c8ff4722b3ab3ed3611109e9','9a741684a6ff1924925e7e6a9ab78277832ee3bcb6016091987d5e3e047fa0aa'); -INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'305123423486d17e97e8370399b9079a35977465e4cf8c5b33d50bd7004b463b','6dfdaa3cea6523f38608c87f6f1dfab87ba208074761b62674669724083b4683','f434f74eed5fc1ba188fd773054d19cc57089d4a17a0e74b96cda7f0d4db737d'); -INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'b04fcd2cf46165fa31626b476aa06f9ad8c8cd1d5aa1cfdc014e0d55fa7e0761','53e9133f8a9c6cb60ef1bcc852fe551599d309bcbd29e8aed4fd18a8b72c22e5','0c526b4a2b8096f18127a8b7b75d7449244af6b42be7be8de48e04e5562e8382'); -INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'209f05567343042c8a9172138cc14e28a2e53f9addf16c7affa469fbea9728ae','2474222b38cb0beec52450d26b8a0521ecebc6886a85acb1d8b51e398b06b596','9692943b04bb25acf74819fcfd90d868b1e22c4bb424786ec7f1bdb5f66576cf'); -INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'fc18c0dcd6011c4147575f09bdc6e1eb0e6ae7d3144339859054df458651618a','5a99d067d1a6a5d5e33d832a792a6c263745501114d002088905418236346568','8f08ffb3d0ee7c5658ac7dcdff188dce6ff134a85f988ca542628229b5a38ba9'); -INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'f304dbebd02e4536b1754502e6f51e058ed309fdf95a2db8329dd7e5635824ad','dc2c8fcca1ab4ed77690d5ad72eaa2f345bc201f9c79fb5ab59455b444bbe9a2','9babb572a86e194022ead67d8e1fe2e274073bcbcc4d500ba462aa869e67672e'); -INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'f39c071315c869425bdbcf05ff84130a0860f5f47b4f851cea970f58a6edc9f8','0ac7bff9355b79f8e3ec5272504ba202d65ab9450e34d8c92229993c522c9691','91572b33ee58a78793eb4b686c3b4b6b866f9d4db4e367eb2124974a21b1a814'); -INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'20624d783cd8e82044df58c05e6171a744505df43623d9c2a828c1331f505ca8','e17bb6ef0382d32f6ff93dc32a67bf560f55cf01fda842240774f18a25fc3472','1774aff1775bb01a303c562831b1ed543f5df86f4ac3a0f7feb198a5911acf27'); -INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'41ae6610121587bd8171a02da3c50645e8e6d3642aef2c560d46f12707506b66','f039b86ef220cb599e9556f12f51c42259802fa8ae172fb55e1730e75f148513','809541ce48cd8f3953346eca49980edc5fd5d089d2bb238c860c8483bf4b3ee7'); -INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'bbc2068f2a4b47c86198a5cb7242e26f385077126c7a3294eca6607485b1170b','9305177eb5f808653c880286437271c094ffb8f519e8c10f51fcc8fdd19ea732','ce124d884860c9b7248f320b435e54ba541b1e1715d38c0accd158d52058b5c5'); -INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'fc4350d187ec74fa6dfbbca7f6c51849b78356f853c6c713d10ae4a39ee4f7e2','325e4cf30a62948dd50f054adbedd0443755006381a324f57ac14c8d27f7f011','957acea8f477a21225acf67d1876a2c6ad2da7c642e2544783f074cfb160eed2'); -INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'3cadb90f0285d3e3bb107caa2165e88d855cfa057fcff1fccfb278a8f64c9b1c','7301e06a3aefc7f395698d2e9ce3e844b94865c84eca5293c8555585798a1c14','d49fbe45adb24ea86ac85fea2318f4091a9c26d596effd4a90596f47b8e9a58b'); -INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'f3390bff59484b5ce0d84f5034fc88f4d862334ef3c0d7addaa9be7f0e67006f','d80d7432dc26b3a8f935966757777d984c89844276e73e3c38c9dde1d4c6d991','fecb00c8aa26d1f1efb224ff2248e4a2c1da885819cfc2d971797ae30628702a'); -INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'0354bf318eaec5c79b4a7835c76c89f373ab0e413f9fe4ebdea442f57763a971','1f2ffc4bf75ff07c0bbe000af392fb69974069bdaec74b9e381ec8c18c67a5e8','e47c7f5896d23e75b18c5b7b3cd993924bc3bbcc7d3e047c2c183207c6273ac7'); -INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'e22b7a64e15ded24f6c54a5f627354dd2c3ed8175c2f4cd31aa5a6789d7b67e4','704bcae1bbeab09f7a04bb45ced511c9568d2fa36fb46e43793cd17e417f0cae','3b458c2ae798c5ad603d946c033d218b1cfd9caa0e4e6d72398ba6464d9f65d6'); -INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'7b8a6f62709cf4d20820031f43d968ea46d73d8cee4ad40f414da60b9be4e676','fed501d12e79749110562556f61a520089ee62c48c3bd136c3f3a3e064cbd7b4','bd396755a5d8602cee181cccdda6c6f049f8e189b858d8f8bd5841170295624c'); -INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'ae82ee2f7f1e075937b5b8eef065f8643a7bef0428e00689ee773558905eef19','0d3a7183c84c14eac1d088ce03d5d62638a46240dfcd18bb19802ec2735d09f7','7924328176d4eb93ce13c0664d21c2a40b945c21853829b7bae2c132b2cfe09d'); -INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'ced371f1349e81cc2f179f064e4b9b202650a0f79e9b4513666ace29f0e8b3cb','65b03b0b4e86711db382923d510a8b8c374d7d91a265158bd76d028881f96be6','88602366635ef8561b8d00f71660643640e9e32ac8046977a3917de7c0baf3d2'); -INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'6c343897092c5dfcd32ee96dc8b96f38fedd31fa58cf5757a3e15a254942cd59','d1a1d68d4bb45353d9416b5c9a381a46f470ff1ef4d7ed84a89ed930a34b0b90','12158802e3ca114cd21ee7660d4186bd9da9d4b9da3584d6de459d75eb8a0fdb'); -INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'abc7afdaefa89bf58bc4c28401740657eca24c902ba551f55becb6a1c8992675','9daa29f3dade34ea52aaf665929c08ab4cfdad6146f5990af63ae5f65dc2d220','49bc3b48fb296a1cc4abefb0f976c731498871d3488b02d8fcf7ab1112d2ac59'); -INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'4c8ca9b4eeae7adfec822b20665e7bd6fecb51d4f30cc2c826f18402d8401a9b','708e704befc57404cc9a8aff365f6c7a551f4e0ade5f4306afe7f5f61d2363c7','e93861961bbc6d2ef29a57c880cb7480bac835735fa4754cc136a33f9d771ad1'); -INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'fe7fd2b60c3216d79dfe4e6d38880f6d3b9fde747b619f2c477108825235663d','503741aa027d907eebb588de69f2e6e467e94e3b07725ff3743d53335a5cc9d7','11c10d805e442b6ebb4e210cec1c9c38279b5f3b58918fb0765140afa05cac92'); -INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'420b8ff3c159f7e89df2274682e7ef798a0c0233149365114bfd934c38806098','bf16ff697ef4e4b2f41a8c6eaeb5c022acb4514f5f141f7cdbe1263ba104193b','53fe650e241c4b4685f04ba614a9603e051ff82f7da278dd6a7230bb0ea98841'); -INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'f4fac6a570b4f6332a628a3f8e27f5f081689fb4255363cff1cd8bd0244eecea','b7ef1f6c61cdf012c14d7bc8fb4b6f90390832bac973827396bb9f6b9dee9e72','a7ec18c66221f682cb57620fb668e94e63e64d968eb0623982fb6ea49a6673c5'); -INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'adea7b4cacc06ba1f7dc260f30039943936f5baeecf5a8a452d4cbcaa994a70d','0bffad5d3910aead7e1eb63ee327b9f1e203fa119ae9391d2290b08f7c0831cd','863d5376e6b17e6899a1b9334a8db0d8df0aedbd5d5125e65178ce37c1a54f91'); -INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'a2290c6a24befab16b4d9ed768c3129d582edbafdf8a2326c7ed50397e5db674','fd0c7a177827bb5ebd0a3d0490e0ca1ddcc6823599212a44d948c0746ea52582','b356835b58287a7f6eedf3388c730ab000091753ea125d21d343b285f10b7086'); -INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'b3c321ea2fb119cbaacfb39f219be47cb346cdd40d895980afd34b4157a3b7ec','254fd4cfc2c3636fae0a1edbb355b5f07fb542e7a5885afecb7cd50c8b45c84b','f400d00019ebd19f97f57cbcef5ff643174a1c036aca4210cb205dd9231d7ae8'); -INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'456a1bd4d6b30f24e798a9c1f975af109db030b0bca19db6b29788f938ce6c4d','ca6a989cd85b0f73757dae18386c5dff4847d165becb1f4cd04262ba1d847eb1','b22ef52d77c9572c5cf946302387b774a82e51038c1047169990131744bed7f8'); -INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'f48d6574488a24155420ae76aa7dcecfe73f6a262a2434a96eb2e93f6bbf02b6','a221e896c331a78d422602d354cfa9a85a73a5bb404af65cdec85ff7e3928983','e9bd7687474dbb570873554c0e6bbd216b9dc77837a322381c98808a76f5ed15'); -INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'e936debeb5d219215ba24e56ed34edb435131877c2947c0801824155fdc70c05','67e26c3ae5904cc0f8481a2f7d981a4ce03b2a9d0ab57bd28191441b15cb8e22','8b5ffc1a16f7821b17c4e22a45993fbde520a314cbb78b917917a466faf8d750'); -INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'2b033a615b9eb693ed59daca9bc047f61a3519bec5c2b64f968cf717c75afe79','aa62bfa22a177fa198181fadb4fc3ae013946fd6462937f98962d4e048e62915','76312af13fbaca8329f7c7534d1101ba3b22e8e7360a221ebe42163c9092aa0e'); -INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'6a41dd11d8b611f6fde79e06a4f65d20fc15419f8336646130c02e9f7d87eff4','75e56fd76814a516f91939ef7d3ed0ab07039b01fe4eeb96d4b3ae2541d5f324','6c8ed4b19fa3dab6af57de0ddce468f87cbe8a7918bffbb870cb472bdb43ff75'); --- Triggers and indices on blocks -CREATE INDEX block_index_idx ON blocks (block_index); -CREATE INDEX index_hash_idx ON blocks (block_index, block_hash); - --- Table broadcasts -DROP TABLE IF EXISTS broadcasts; -CREATE TABLE broadcasts( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - timestamp INTEGER, - value REAL, - fee_fraction_int INTEGER, - text TEXT, - locked BOOL, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO broadcasts VALUES(12,'3bd2702db834abf080054f2391e229d0ca8dc9d578256f23e744ad0e5997d4e8',310011,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000000,100.0,99999999,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(19,'6b37e7c729d923e82bd81ad87917384173f636edead62da66946e1363e652b09',310018,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000050,99.86166,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(20,'720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7',310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000101,100.343,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(21,'6e29568b84864b47c5e677a8a32b4e5527998f9bc3f6cb9aedece456e267cd3c',310020,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000201,2.0,5000000,'Unit Test',0,'valid'); --- Triggers and indices on broadcasts -CREATE TRIGGER _broadcasts_delete BEFORE DELETE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO broadcasts(rowid,tx_index,tx_hash,block_index,source,timestamp,value,fee_fraction_int,text,locked,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.timestamp)||','||quote(old.value)||','||quote(old.fee_fraction_int)||','||quote(old.text)||','||quote(old.locked)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _broadcasts_insert AFTER INSERT ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM broadcasts WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _broadcasts_update AFTER UPDATE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE broadcasts SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',timestamp='||quote(old.timestamp)||',value='||quote(old.value)||',fee_fraction_int='||quote(old.fee_fraction_int)||',text='||quote(old.text)||',locked='||quote(old.locked)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_source_idx ON broadcasts (status, source); -CREATE INDEX status_source_index_idx ON broadcasts (status, source, tx_index); -CREATE INDEX timestamp_idx ON broadcasts (timestamp); - --- Table btcpays -DROP TABLE IF EXISTS btcpays; -CREATE TABLE btcpays( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - order_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO btcpays VALUES(5,'5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61',310004,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',50000000,'7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1_e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433','valid'); --- Triggers and indices on btcpays -CREATE TRIGGER _btcpays_delete BEFORE DELETE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO btcpays(rowid,tx_index,tx_hash,block_index,source,destination,btc_amount,order_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.btc_amount)||','||quote(old.order_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _btcpays_insert AFTER INSERT ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM btcpays WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _btcpays_update AFTER UPDATE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE btcpays SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',btc_amount='||quote(old.btc_amount)||',order_match_id='||quote(old.order_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table burns -DROP TABLE IF EXISTS burns; -CREATE TABLE burns( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - burned INTEGER, - earned INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO burns VALUES(1,'9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30',310000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',62000000,93000000000,'valid'); -INSERT INTO burns VALUES(23,'c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda',310022,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',38000000,56999887262,'valid'); --- Triggers and indices on burns -CREATE TRIGGER _burns_delete BEFORE DELETE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO burns(rowid,tx_index,tx_hash,block_index,source,burned,earned,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.burned)||','||quote(old.earned)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _burns_insert AFTER INSERT ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM burns WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _burns_update AFTER UPDATE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE burns SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',burned='||quote(old.burned)||',earned='||quote(old.earned)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table cancels -DROP TABLE IF EXISTS cancels; -CREATE TABLE cancels( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - offer_hash TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on cancels -CREATE TRIGGER _cancels_delete BEFORE DELETE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO cancels(rowid,tx_index,tx_hash,block_index,source,offer_hash,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.offer_hash)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _cancels_insert AFTER INSERT ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM cancels WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _cancels_update AFTER UPDATE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE cancels SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',offer_hash='||quote(old.offer_hash)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX cancels_block_index_idx ON cancels (block_index); - --- Table credits -DROP TABLE IF EXISTS credits; -CREATE TABLE credits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - calling_function TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO credits VALUES(310000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',93000000000,'burn','9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30'); -INSERT INTO credits VALUES(310001,'1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'send','896436390e05977c173311d54cddacbb898bdbf1bb11bd4b7e4932004eb00df6'); -INSERT INTO credits VALUES(310004,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',100000000,'btcpay','5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61'); -INSERT INTO credits VALUES(310005,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',1000000000,'issuance','59c87f1f8a28eece244652b6284b40681a2620bfae8b58c32f303e55f06be41d'); -INSERT INTO credits VALUES(310006,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',100000,'issuance','6573e8856c4451ae0b0fa39453dc25be1050599a1473933b57b0c093d63e6291'); -INSERT INTO credits VALUES(310007,'1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,'send','c62b0567e929ffc2529da427a5b0df1968b53a0436a1d28aa76fce3705b6b595'); -INSERT INTO credits VALUES(310008,'1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,'send','1935e06458e6ab179a84307d47dcd442e0b2e1c172c5fb929eafa3a57225d1b0'); -INSERT INTO credits VALUES(310009,'1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',24,'dividend','6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f'); -INSERT INTO credits VALUES(310010,'1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',420800,'dividend','462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087'); -INSERT INTO credits VALUES(310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',4250000,'filled','43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84'); -INSERT INTO credits VALUES(310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',5000000,'cancel order','e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433'); -INSERT INTO credits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531'); -INSERT INTO credits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531'); -INSERT INTO credits VALUES(310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9'); -INSERT INTO credits VALUES(310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9'); -INSERT INTO credits VALUES(310018,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',59137500,'bet settled: liquidated for bear','6b37e7c729d923e82bd81ad87917384173f636edead62da66946e1363e652b09'); -INSERT INTO credits VALUES(310018,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',3112500,'feed fee','6b37e7c729d923e82bd81ad87917384173f636edead62da66946e1363e652b09'); -INSERT INTO credits VALUES(310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',159300000,'bet settled','720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7'); -INSERT INTO credits VALUES(310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',315700000,'bet settled','720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7'); -INSERT INTO credits VALUES(310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',25000000,'feed fee','720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7'); -INSERT INTO credits VALUES(310020,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',1330000000,'bet settled: for notequal','6e29568b84864b47c5e677a8a32b4e5527998f9bc3f6cb9aedece456e267cd3c'); -INSERT INTO credits VALUES(310020,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',70000000,'feed fee','6e29568b84864b47c5e677a8a32b4e5527998f9bc3f6cb9aedece456e267cd3c'); -INSERT INTO credits VALUES(310022,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',56999887262,'burn','c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda'); -INSERT INTO credits VALUES(310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',8500000,'recredit wager remaining','19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9'); -INSERT INTO credits VALUES(310023,'1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10000,'send','d37210d41a23ada8baf982a85190a742f7de9901f585e99e30ed3c9694efb657'); -INSERT INTO credits VALUES(310032,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,'cancel order','9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3'); --- Triggers and indices on credits -CREATE TRIGGER _credits_delete BEFORE DELETE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO credits(rowid,block_index,address,asset,quantity,calling_function,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.calling_function)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _credits_insert AFTER INSERT ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM credits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _credits_update AFTER UPDATE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE credits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',calling_function='||quote(old.calling_function)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; - --- Table debits -DROP TABLE IF EXISTS debits; -CREATE TABLE debits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - action TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO debits VALUES(310001,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'send','896436390e05977c173311d54cddacbb898bdbf1bb11bd4b7e4932004eb00df6'); -INSERT INTO debits VALUES(310003,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',105000000,'open order','e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433'); -INSERT INTO debits VALUES(310005,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'issuance fee','59c87f1f8a28eece244652b6284b40681a2620bfae8b58c32f303e55f06be41d'); -INSERT INTO debits VALUES(310006,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'issuance fee','6573e8856c4451ae0b0fa39453dc25be1050599a1473933b57b0c093d63e6291'); -INSERT INTO debits VALUES(310007,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,'send','c62b0567e929ffc2529da427a5b0df1968b53a0436a1d28aa76fce3705b6b595'); -INSERT INTO debits VALUES(310008,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,'send','1935e06458e6ab179a84307d47dcd442e0b2e1c172c5fb929eafa3a57225d1b0'); -INSERT INTO debits VALUES(310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',24,'dividend','6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f'); -INSERT INTO debits VALUES(310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',20000,'dividend fee','6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f'); -INSERT INTO debits VALUES(310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',420800,'dividend','462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087'); -INSERT INTO debits VALUES(310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',20000,'dividend fee','462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087'); -INSERT INTO debits VALUES(310012,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'bet','19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9'); -INSERT INTO debits VALUES(310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',25000000,'bet','43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84'); -INSERT INTO debits VALUES(310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',150000000,'bet','1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d'); -INSERT INTO debits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',350000000,'bet','005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531'); -INSERT INTO debits VALUES(310016,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',750000000,'bet','e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da'); -INSERT INTO debits VALUES(310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',650000000,'bet','dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9'); -INSERT INTO debits VALUES(310021,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,'open order','9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3'); -INSERT INTO debits VALUES(310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10000,'send','d37210d41a23ada8baf982a85190a742f7de9901f585e99e30ed3c9694efb657'); --- Triggers and indices on debits -CREATE TRIGGER _debits_delete BEFORE DELETE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO debits(rowid,block_index,address,asset,quantity,action,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.action)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _debits_insert AFTER INSERT ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM debits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _debits_update AFTER UPDATE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE debits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',action='||quote(old.action)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_idx ON debits (address); -CREATE INDEX asset_idx ON debits (asset); - --- Table destructions -DROP TABLE IF EXISTS destructions; -CREATE TABLE destructions( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset INTEGER, - quantity INTEGER, - tag TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on destructions -CREATE TRIGGER _destructions_delete BEFORE DELETE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO destructions(rowid,tx_index,tx_hash,block_index,source,asset,quantity,tag,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.tag)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _destructions_insert AFTER INSERT ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM destructions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _destructions_update AFTER UPDATE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE destructions SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',tag='||quote(old.tag)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_idx ON destructions (status); - --- Table dispensers -DROP TABLE IF EXISTS dispensers; -CREATE TABLE dispensers( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - give_quantity INTEGER, - escrow_quantity INTEGER, - satoshirate INTEGER, - status INTEGER, - give_remaining INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispensers -CREATE TRIGGER _dispensers_delete BEFORE DELETE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispensers(rowid,tx_index,tx_hash,block_index,source,asset,give_quantity,escrow_quantity,satoshirate,status,give_remaining) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.give_quantity)||','||quote(old.escrow_quantity)||','||quote(old.satoshirate)||','||quote(old.status)||','||quote(old.give_remaining)||')'); - END; -CREATE TRIGGER _dispensers_insert AFTER INSERT ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispensers WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispensers_update AFTER UPDATE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispensers SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',give_quantity='||quote(old.give_quantity)||',escrow_quantity='||quote(old.escrow_quantity)||',satoshirate='||quote(old.satoshirate)||',status='||quote(old.status)||',give_remaining='||quote(old.give_remaining)||' WHERE rowid='||old.rowid); - END; - --- Table dispenses -DROP TABLE IF EXISTS dispenses; -CREATE TABLE dispenses( - tx_index INTEGER, - dispense_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - dispense_quantity INTEGER, - dispenser_tx_hash TEXT, - PRIMARY KEY (tx_index, dispense_index, source, destination), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispenses -CREATE TRIGGER _dispenses_delete BEFORE DELETE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispenses(rowid,tx_index,dispense_index,tx_hash,block_index,source,destination,asset,dispense_quantity,dispenser_tx_hash) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.dispense_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.dispense_quantity)||','||quote(old.dispenser_tx_hash)||')'); - END; -CREATE TRIGGER _dispenses_insert AFTER INSERT ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispenses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispenses_update AFTER UPDATE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispenses SET tx_index='||quote(old.tx_index)||',dispense_index='||quote(old.dispense_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',dispense_quantity='||quote(old.dispense_quantity)||',dispenser_tx_hash='||quote(old.dispenser_tx_hash)||' WHERE rowid='||old.rowid); - END; - --- Table dividends -DROP TABLE IF EXISTS dividends; -CREATE TABLE dividends( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - dividend_asset TEXT, - quantity_per_unit INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO dividends VALUES(10,'6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f',310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB','XCP',600,20000,'valid'); -INSERT INTO dividends VALUES(11,'462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087',310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC','XCP',800,20000,'valid'); --- Triggers and indices on dividends -CREATE TRIGGER _dividends_delete BEFORE DELETE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dividends(rowid,tx_index,tx_hash,block_index,source,asset,dividend_asset,quantity_per_unit,fee_paid,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.dividend_asset)||','||quote(old.quantity_per_unit)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _dividends_insert AFTER INSERT ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dividends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dividends_update AFTER UPDATE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dividends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',dividend_asset='||quote(old.dividend_asset)||',quantity_per_unit='||quote(old.quantity_per_unit)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table issuances -DROP TABLE IF EXISTS issuances; -CREATE TABLE "issuances"( - tx_index INTEGER, - tx_hash TEXT, - msg_index INTEGER DEFAULT 0, - block_index INTEGER, - asset TEXT, - quantity INTEGER, - divisible BOOL, - source TEXT, - issuer TEXT, - transfer BOOL, - callable BOOL, - call_date INTEGER, - call_price REAL, - description TEXT, - fee_paid INTEGER, - locked BOOL, - status TEXT, - asset_longname TEXT, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index)); -INSERT INTO issuances VALUES(6,'59c87f1f8a28eece244652b6284b40681a2620bfae8b58c32f303e55f06be41d',0,310005,'BBBB',1000000000,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,0,0,0.0,'',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(7,'6573e8856c4451ae0b0fa39453dc25be1050599a1473933b57b0c093d63e6291',0,310006,'BBBC',100000,0,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,0,0,0.0,'foobar',50000000,0,'valid',NULL); --- Triggers and indices on issuances -CREATE TRIGGER _issuances_delete BEFORE DELETE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO issuances(rowid,tx_index,tx_hash,msg_index,block_index,asset,quantity,divisible,source,issuer,transfer,callable,call_date,call_price,description,fee_paid,locked,status,asset_longname) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.msg_index)||','||quote(old.block_index)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.divisible)||','||quote(old.source)||','||quote(old.issuer)||','||quote(old.transfer)||','||quote(old.callable)||','||quote(old.call_date)||','||quote(old.call_price)||','||quote(old.description)||','||quote(old.fee_paid)||','||quote(old.locked)||','||quote(old.status)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _issuances_insert AFTER INSERT ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM issuances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _issuances_update AFTER UPDATE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE issuances SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',msg_index='||quote(old.msg_index)||',block_index='||quote(old.block_index)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',divisible='||quote(old.divisible)||',source='||quote(old.source)||',issuer='||quote(old.issuer)||',transfer='||quote(old.transfer)||',callable='||quote(old.callable)||',call_date='||quote(old.call_date)||',call_price='||quote(old.call_price)||',description='||quote(old.description)||',fee_paid='||quote(old.fee_paid)||',locked='||quote(old.locked)||',status='||quote(old.status)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_asset_idx ON issuances (asset, status); - --- Table mempool -DROP TABLE IF EXISTS mempool; -CREATE TABLE mempool( - tx_hash TEXT, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); - --- Table messages -DROP TABLE IF EXISTS messages; -CREATE TABLE messages( - message_index INTEGER PRIMARY KEY, - block_index INTEGER, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); -INSERT INTO messages VALUES(0,310000,'insert','credits','{"action": "burn", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310000, "event": "9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30", "quantity": 93000000000}',0); -INSERT INTO messages VALUES(1,310000,'insert','burns','{"block_index": 310000, "burned": 62000000, "earned": 93000000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30", "tx_index": 1}',0); -INSERT INTO messages VALUES(2,310001,'insert','debits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310001, "event": "896436390e05977c173311d54cddacbb898bdbf1bb11bd4b7e4932004eb00df6", "quantity": 50000000}',0); -INSERT INTO messages VALUES(3,310001,'insert','credits','{"action": "send", "address": "1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310001, "event": "896436390e05977c173311d54cddacbb898bdbf1bb11bd4b7e4932004eb00df6", "quantity": 50000000}',0); -INSERT INTO messages VALUES(4,310001,'insert','sends','{"asset": "XCP", "block_index": 310001, "destination": "1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 50000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "896436390e05977c173311d54cddacbb898bdbf1bb11bd4b7e4932004eb00df6", "tx_index": 2}',0); -INSERT INTO messages VALUES(5,310002,'insert','orders','{"block_index": 310002, "expiration": 10, "expire_index": 310012, "fee_provided": 1000000, "fee_provided_remaining": 1000000, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "BTC", "give_quantity": 50000000, "give_remaining": 50000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "tx_hash": "7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1", "tx_index": 3}',0); -INSERT INTO messages VALUES(6,310003,'insert','debits','{"action": "open order", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310003, "event": "e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433", "quantity": 105000000}',0); -INSERT INTO messages VALUES(7,310003,'insert','orders','{"block_index": 310003, "expiration": 10, "expire_index": 310013, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 900000, "fee_required_remaining": 900000, "get_asset": "BTC", "get_quantity": 50000000, "get_remaining": 50000000, "give_asset": "XCP", "give_quantity": 105000000, "give_remaining": 105000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "tx_hash": "e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433", "tx_index": 4}',0); -INSERT INTO messages VALUES(8,310003,'update','orders','{"fee_provided_remaining": 142858, "fee_required_remaining": 0, "get_remaining": 0, "give_remaining": 0, "status": "open", "tx_hash": "7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1"}',0); -INSERT INTO messages VALUES(9,310003,'update','orders','{"fee_provided_remaining": 6800, "fee_required_remaining": 42858, "get_remaining": 0, "give_remaining": 5000000, "status": "open", "tx_hash": "e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433"}',0); -INSERT INTO messages VALUES(10,310003,'insert','order_matches','{"backward_asset": "XCP", "backward_quantity": 100000000, "block_index": 310003, "fee_paid": 857142, "forward_asset": "BTC", "forward_quantity": 50000000, "id": "7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1_e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433", "match_expire_index": 310023, "status": "pending", "tx0_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx0_block_index": 310002, "tx0_expiration": 10, "tx0_hash": "7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1", "tx0_index": 3, "tx1_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx1_block_index": 310003, "tx1_expiration": 10, "tx1_hash": "e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433", "tx1_index": 4}',0); -INSERT INTO messages VALUES(11,310004,'insert','credits','{"action": "btcpay", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310004, "event": "5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61", "quantity": 100000000}',0); -INSERT INTO messages VALUES(12,310004,'update','order_matches','{"order_match_id": "7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1_e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433", "status": "completed"}',0); -INSERT INTO messages VALUES(13,310004,'insert','btcpays','{"block_index": 310004, "btc_amount": 50000000, "destination": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "order_match_id": "7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1_e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433", "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61", "tx_index": 5}',0); -INSERT INTO messages VALUES(14,310005,'insert','debits','{"action": "issuance fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310005, "event": "59c87f1f8a28eece244652b6284b40681a2620bfae8b58c32f303e55f06be41d", "quantity": 50000000}',0); -INSERT INTO messages VALUES(15,310005,'insert','issuances','{"asset": "BBBB", "asset_longname": null, "block_index": 310005, "call_date": 0, "call_price": 0.0, "callable": false, "description": "", "divisible": true, "fee_paid": 50000000, "issuer": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "locked": false, "quantity": 1000000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "transfer": false, "tx_hash": "59c87f1f8a28eece244652b6284b40681a2620bfae8b58c32f303e55f06be41d", "tx_index": 6}',0); -INSERT INTO messages VALUES(16,310005,'insert','credits','{"action": "issuance", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBB", "block_index": 310005, "event": "59c87f1f8a28eece244652b6284b40681a2620bfae8b58c32f303e55f06be41d", "quantity": 1000000000}',0); -INSERT INTO messages VALUES(17,310006,'insert','debits','{"action": "issuance fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310006, "event": "6573e8856c4451ae0b0fa39453dc25be1050599a1473933b57b0c093d63e6291", "quantity": 50000000}',0); -INSERT INTO messages VALUES(18,310006,'insert','issuances','{"asset": "BBBC", "asset_longname": null, "block_index": 310006, "call_date": 0, "call_price": 0.0, "callable": false, "description": "foobar", "divisible": false, "fee_paid": 50000000, "issuer": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "locked": false, "quantity": 100000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "transfer": false, "tx_hash": "6573e8856c4451ae0b0fa39453dc25be1050599a1473933b57b0c093d63e6291", "tx_index": 7}',0); -INSERT INTO messages VALUES(19,310006,'insert','credits','{"action": "issuance", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBC", "block_index": 310006, "event": "6573e8856c4451ae0b0fa39453dc25be1050599a1473933b57b0c093d63e6291", "quantity": 100000}',0); -INSERT INTO messages VALUES(20,310007,'insert','debits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBB", "block_index": 310007, "event": "c62b0567e929ffc2529da427a5b0df1968b53a0436a1d28aa76fce3705b6b595", "quantity": 4000000}',0); -INSERT INTO messages VALUES(21,310007,'insert','credits','{"action": "send", "address": "1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBB", "block_index": 310007, "event": "c62b0567e929ffc2529da427a5b0df1968b53a0436a1d28aa76fce3705b6b595", "quantity": 4000000}',0); -INSERT INTO messages VALUES(22,310007,'insert','sends','{"asset": "BBBB", "block_index": 310007, "destination": "1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 4000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "c62b0567e929ffc2529da427a5b0df1968b53a0436a1d28aa76fce3705b6b595", "tx_index": 8}',0); -INSERT INTO messages VALUES(23,310008,'insert','debits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBC", "block_index": 310008, "event": "1935e06458e6ab179a84307d47dcd442e0b2e1c172c5fb929eafa3a57225d1b0", "quantity": 526}',0); -INSERT INTO messages VALUES(24,310008,'insert','credits','{"action": "send", "address": "1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBC", "block_index": 310008, "event": "1935e06458e6ab179a84307d47dcd442e0b2e1c172c5fb929eafa3a57225d1b0", "quantity": 526}',0); -INSERT INTO messages VALUES(25,310008,'insert','sends','{"asset": "BBBC", "block_index": 310008, "destination": "1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 526, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "1935e06458e6ab179a84307d47dcd442e0b2e1c172c5fb929eafa3a57225d1b0", "tx_index": 9}',0); -INSERT INTO messages VALUES(26,310009,'insert','debits','{"action": "dividend", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310009, "event": "6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f", "quantity": 24}',0); -INSERT INTO messages VALUES(27,310009,'insert','debits','{"action": "dividend fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310009, "event": "6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f", "quantity": 20000}',0); -INSERT INTO messages VALUES(28,310009,'insert','credits','{"action": "dividend", "address": "1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310009, "event": "6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f", "quantity": 24}',0); -INSERT INTO messages VALUES(29,310009,'insert','dividends','{"asset": "BBBB", "block_index": 310009, "dividend_asset": "XCP", "fee_paid": 20000, "quantity_per_unit": 600, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f", "tx_index": 10}',0); -INSERT INTO messages VALUES(30,310010,'insert','debits','{"action": "dividend", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310010, "event": "462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087", "quantity": 420800}',0); -INSERT INTO messages VALUES(31,310010,'insert','debits','{"action": "dividend fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310010, "event": "462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087", "quantity": 20000}',0); -INSERT INTO messages VALUES(32,310010,'insert','credits','{"action": "dividend", "address": "1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310010, "event": "462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087", "quantity": 420800}',0); -INSERT INTO messages VALUES(33,310010,'insert','dividends','{"asset": "BBBC", "block_index": 310010, "dividend_asset": "XCP", "fee_paid": 20000, "quantity_per_unit": 800, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087", "tx_index": 11}',0); -INSERT INTO messages VALUES(34,310011,'insert','broadcasts','{"block_index": 310011, "fee_fraction_int": 99999999, "locked": false, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "text": "Unit Test", "timestamp": 1388000000, "tx_hash": "3bd2702db834abf080054f2391e229d0ca8dc9d578256f23e744ad0e5997d4e8", "tx_index": 12, "value": 100.0}',0); -INSERT INTO messages VALUES(35,310012,'insert','debits','{"action": "bet", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310012, "event": "19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9", "quantity": 50000000}',0); -INSERT INTO messages VALUES(36,310012,'insert','bets','{"bet_type": 0, "block_index": 310012, "counterwager_quantity": 25000000, "counterwager_remaining": 25000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310022, "fee_fraction_int": 99999999.0, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "leverage": 15120, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "target_value": 0.0, "tx_hash": "19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9", "tx_index": 13, "wager_quantity": 50000000, "wager_remaining": 50000000}',0); -INSERT INTO messages VALUES(37,310013,'update','orders','{"status": "expired", "tx_hash": "7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1"}',0); -INSERT INTO messages VALUES(38,310013,'insert','order_expirations','{"block_index": 310013, "order_hash": "7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1", "order_index": 3, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2"}',0); -INSERT INTO messages VALUES(39,310013,'insert','debits','{"action": "bet", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310013, "event": "43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84", "quantity": 25000000}',0); -INSERT INTO messages VALUES(40,310013,'insert','bets','{"bet_type": 1, "block_index": 310013, "counterwager_quantity": 41500000, "counterwager_remaining": 41500000, "deadline": 1388000100, "expiration": 10, "expire_index": 310023, "fee_fraction_int": 99999999.0, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "leverage": 15120, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "target_value": 0.0, "tx_hash": "43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84", "tx_index": 14, "wager_quantity": 25000000, "wager_remaining": 25000000}',0); -INSERT INTO messages VALUES(41,310013,'update','bets','{"counterwager_remaining": 4250000, "status": "open", "tx_hash": "19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9", "wager_remaining": 8500000}',0); -INSERT INTO messages VALUES(42,310013,'insert','credits','{"action": "filled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310013, "event": "43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84", "quantity": 4250000}',0); -INSERT INTO messages VALUES(43,310013,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84", "wager_remaining": 4250000}',0); -INSERT INTO messages VALUES(44,310013,'insert','bet_matches','{"backward_quantity": 20750000, "block_index": 310013, "deadline": 1388000100, "fee_fraction_int": 99999999, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "forward_quantity": 41500000, "id": "19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9_43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84", "initial_value": 100.0, "leverage": 15120, "match_expire_index": 310022, "status": "pending", "target_value": 0.0, "tx0_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx0_bet_type": 0, "tx0_block_index": 310012, "tx0_expiration": 10, "tx0_hash": "19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9", "tx0_index": 13, "tx1_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx1_bet_type": 1, "tx1_block_index": 310013, "tx1_expiration": 10, "tx1_hash": "43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84", "tx1_index": 14}',0); -INSERT INTO messages VALUES(45,310014,'update','orders','{"status": "expired", "tx_hash": "e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433"}',0); -INSERT INTO messages VALUES(46,310014,'insert','credits','{"action": "cancel order", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310014, "event": "e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433", "quantity": 5000000}',0); -INSERT INTO messages VALUES(47,310014,'insert','order_expirations','{"block_index": 310014, "order_hash": "e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433", "order_index": 4, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2"}',0); -INSERT INTO messages VALUES(48,310014,'insert','debits','{"action": "bet", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310014, "event": "1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d", "quantity": 150000000}',0); -INSERT INTO messages VALUES(49,310014,'insert','bets','{"bet_type": 0, "block_index": 310014, "counterwager_quantity": 350000000, "counterwager_remaining": 350000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310024, "fee_fraction_int": 99999999.0, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "leverage": 5040, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "target_value": 0.0, "tx_hash": "1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d", "tx_index": 15, "wager_quantity": 150000000, "wager_remaining": 150000000}',0); -INSERT INTO messages VALUES(50,310015,'insert','debits','{"action": "bet", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310015, "event": "005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531", "quantity": 350000000}',0); -INSERT INTO messages VALUES(51,310015,'insert','bets','{"bet_type": 1, "block_index": 310015, "counterwager_quantity": 150000000, "counterwager_remaining": 150000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310025, "fee_fraction_int": 99999999.0, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "leverage": 5040, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "target_value": 0.0, "tx_hash": "005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531", "tx_index": 16, "wager_quantity": 350000000, "wager_remaining": 350000000}',0); -INSERT INTO messages VALUES(52,310015,'insert','credits','{"action": "filled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310015, "event": "005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531", "quantity": 0}',0); -INSERT INTO messages VALUES(53,310015,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(54,310015,'insert','credits','{"action": "filled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310015, "event": "005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531", "quantity": 0}',0); -INSERT INTO messages VALUES(55,310015,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(56,310015,'insert','bet_matches','{"backward_quantity": 350000000, "block_index": 310015, "deadline": 1388000100, "fee_fraction_int": 99999999, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "forward_quantity": 150000000, "id": "1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d_005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531", "initial_value": 100.0, "leverage": 5040, "match_expire_index": 310024, "status": "pending", "target_value": 0.0, "tx0_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx0_bet_type": 0, "tx0_block_index": 310014, "tx0_expiration": 10, "tx0_hash": "1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d", "tx0_index": 15, "tx1_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx1_bet_type": 1, "tx1_block_index": 310015, "tx1_expiration": 10, "tx1_hash": "005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531", "tx1_index": 16}',0); -INSERT INTO messages VALUES(57,310016,'insert','debits','{"action": "bet", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310016, "event": "e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da", "quantity": 750000000}',0); -INSERT INTO messages VALUES(58,310016,'insert','bets','{"bet_type": 2, "block_index": 310016, "counterwager_quantity": 650000000, "counterwager_remaining": 650000000, "deadline": 1388000200, "expiration": 10, "expire_index": 310026, "fee_fraction_int": 99999999.0, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "leverage": 5040, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "target_value": 1.0, "tx_hash": "e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da", "tx_index": 17, "wager_quantity": 750000000, "wager_remaining": 750000000}',0); -INSERT INTO messages VALUES(59,310017,'insert','debits','{"action": "bet", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310017, "event": "dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9", "quantity": 650000000}',0); -INSERT INTO messages VALUES(60,310017,'insert','bets','{"bet_type": 3, "block_index": 310017, "counterwager_quantity": 750000000, "counterwager_remaining": 750000000, "deadline": 1388000200, "expiration": 10, "expire_index": 310027, "fee_fraction_int": 99999999.0, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "leverage": 5040, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "target_value": 1.0, "tx_hash": "dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9", "tx_index": 18, "wager_quantity": 650000000, "wager_remaining": 650000000}',0); -INSERT INTO messages VALUES(61,310017,'insert','credits','{"action": "filled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310017, "event": "dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9", "quantity": 0}',0); -INSERT INTO messages VALUES(62,310017,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(63,310017,'insert','credits','{"action": "filled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310017, "event": "dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9", "quantity": 0}',0); -INSERT INTO messages VALUES(64,310017,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(65,310017,'insert','bet_matches','{"backward_quantity": 650000000, "block_index": 310017, "deadline": 1388000200, "fee_fraction_int": 99999999, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "forward_quantity": 750000000, "id": "e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da_dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9", "initial_value": 100.0, "leverage": 5040, "match_expire_index": 310026, "status": "pending", "target_value": 1.0, "tx0_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx0_bet_type": 2, "tx0_block_index": 310016, "tx0_expiration": 10, "tx0_hash": "e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da", "tx0_index": 17, "tx1_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx1_bet_type": 3, "tx1_block_index": 310017, "tx1_expiration": 10, "tx1_hash": "dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9", "tx1_index": 18}',0); -INSERT INTO messages VALUES(66,310018,'insert','broadcasts','{"block_index": 310018, "fee_fraction_int": 5000000, "locked": false, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "text": "Unit Test", "timestamp": 1388000050, "tx_hash": "6b37e7c729d923e82bd81ad87917384173f636edead62da66946e1363e652b09", "tx_index": 19, "value": 99.86166}',0); -INSERT INTO messages VALUES(67,310018,'insert','credits','{"action": "bet settled: liquidated for bear", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310018, "event": "6b37e7c729d923e82bd81ad87917384173f636edead62da66946e1363e652b09", "quantity": 59137500}',0); -INSERT INTO messages VALUES(68,310018,'insert','credits','{"action": "feed fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310018, "event": "6b37e7c729d923e82bd81ad87917384173f636edead62da66946e1363e652b09", "quantity": 3112500}',0); -INSERT INTO messages VALUES(69,310018,'insert','bet_match_resolutions','{"bear_credit": 59137500, "bet_match_id": "19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9_43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84", "bet_match_type_id": 1, "block_index": 310018, "bull_credit": 0, "escrow_less_fee": null, "fee": 3112500, "settled": false, "winner": null}',0); -INSERT INTO messages VALUES(70,310018,'update','bet_matches','{"bet_match_id": "19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9_43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84", "status": "settled: liquidated for bear"}',0); -INSERT INTO messages VALUES(71,310019,'insert','broadcasts','{"block_index": 310019, "fee_fraction_int": 5000000, "locked": false, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "text": "Unit Test", "timestamp": 1388000101, "tx_hash": "720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7", "tx_index": 20, "value": 100.343}',0); -INSERT INTO messages VALUES(72,310019,'insert','credits','{"action": "bet settled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310019, "event": "720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7", "quantity": 159300000}',0); -INSERT INTO messages VALUES(73,310019,'insert','credits','{"action": "bet settled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310019, "event": "720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7", "quantity": 315700000}',0); -INSERT INTO messages VALUES(74,310019,'insert','credits','{"action": "feed fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310019, "event": "720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7", "quantity": 25000000}',0); -INSERT INTO messages VALUES(75,310019,'insert','bet_match_resolutions','{"bear_credit": 315700000, "bet_match_id": "1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d_005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531", "bet_match_type_id": 1, "block_index": 310019, "bull_credit": 159300000, "escrow_less_fee": null, "fee": 25000000, "settled": true, "winner": null}',0); -INSERT INTO messages VALUES(76,310019,'update','bet_matches','{"bet_match_id": "1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d_005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531", "status": "settled"}',0); -INSERT INTO messages VALUES(77,310020,'insert','broadcasts','{"block_index": 310020, "fee_fraction_int": 5000000, "locked": false, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "text": "Unit Test", "timestamp": 1388000201, "tx_hash": "6e29568b84864b47c5e677a8a32b4e5527998f9bc3f6cb9aedece456e267cd3c", "tx_index": 21, "value": 2.0}',0); -INSERT INTO messages VALUES(78,310020,'insert','credits','{"action": "bet settled: for notequal", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310020, "event": "6e29568b84864b47c5e677a8a32b4e5527998f9bc3f6cb9aedece456e267cd3c", "quantity": 1330000000}',0); -INSERT INTO messages VALUES(79,310020,'insert','credits','{"action": "feed fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310020, "event": "6e29568b84864b47c5e677a8a32b4e5527998f9bc3f6cb9aedece456e267cd3c", "quantity": 70000000}',0); -INSERT INTO messages VALUES(80,310020,'insert','bet_match_resolutions','{"bear_credit": null, "bet_match_id": "e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da_dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9", "bet_match_type_id": 5, "block_index": 310020, "bull_credit": null, "escrow_less_fee": 1330000000, "fee": 70000000, "settled": null, "winner": "NotEqual"}',0); -INSERT INTO messages VALUES(81,310020,'update','bet_matches','{"bet_match_id": "e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da_dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9", "status": "settled: for notequal"}',0); -INSERT INTO messages VALUES(82,310021,'insert','debits','{"action": "open order", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBB", "block_index": 310021, "event": "9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3", "quantity": 50000000}',0); -INSERT INTO messages VALUES(83,310021,'insert','orders','{"block_index": 310021, "expiration": 10, "expire_index": 310031, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 50000000, "get_remaining": 50000000, "give_asset": "BBBB", "give_quantity": 50000000, "give_remaining": 50000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "tx_hash": "9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3", "tx_index": 22}',0); -INSERT INTO messages VALUES(84,310022,'insert','credits','{"action": "burn", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310022, "event": "c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda", "quantity": 56999887262}',0); -INSERT INTO messages VALUES(85,310022,'insert','burns','{"block_index": 310022, "burned": 38000000, "earned": 56999887262, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda", "tx_index": 23}',0); -INSERT INTO messages VALUES(86,310023,'update','bets','{"status": "expired", "tx_hash": "19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9"}',0); -INSERT INTO messages VALUES(87,310023,'insert','credits','{"action": "recredit wager remaining", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310023, "event": "19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9", "quantity": 8500000}',0); -INSERT INTO messages VALUES(88,310023,'insert','bet_expirations','{"bet_hash": "19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9", "bet_index": 13, "block_index": 310023, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2"}',0); -INSERT INTO messages VALUES(89,310023,'insert','debits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBC", "block_index": 310023, "event": "d37210d41a23ada8baf982a85190a742f7de9901f585e99e30ed3c9694efb657", "quantity": 10000}',0); -INSERT INTO messages VALUES(90,310023,'insert','credits','{"action": "send", "address": "1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBC", "block_index": 310023, "event": "d37210d41a23ada8baf982a85190a742f7de9901f585e99e30ed3c9694efb657", "quantity": 10000}',0); -INSERT INTO messages VALUES(91,310023,'insert','sends','{"asset": "BBBC", "block_index": 310023, "destination": "1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 10000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "d37210d41a23ada8baf982a85190a742f7de9901f585e99e30ed3c9694efb657", "tx_index": 24}',0); -INSERT INTO messages VALUES(92,310032,'update','orders','{"status": "expired", "tx_hash": "9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3"}',0); -INSERT INTO messages VALUES(93,310032,'insert','credits','{"action": "cancel order", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBB", "block_index": 310032, "event": "9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3", "quantity": 50000000}',0); -INSERT INTO messages VALUES(94,310032,'insert','order_expirations','{"block_index": 310032, "order_hash": "9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3", "order_index": 22, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2"}',0); --- Triggers and indices on messages -CREATE INDEX block_index_message_index_idx ON messages (block_index, message_index); - --- Table order_expirations -DROP TABLE IF EXISTS order_expirations; -CREATE TABLE order_expirations( - order_index INTEGER PRIMARY KEY, - order_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (order_index, order_hash) REFERENCES orders(tx_index, tx_hash)); -INSERT INTO order_expirations VALUES(3,'7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310013); -INSERT INTO order_expirations VALUES(4,'e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310014); -INSERT INTO order_expirations VALUES(22,'9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310032); --- Triggers and indices on order_expirations -CREATE TRIGGER _order_expirations_delete BEFORE DELETE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_expirations(rowid,order_index,order_hash,source,block_index) VALUES('||old.rowid||','||quote(old.order_index)||','||quote(old.order_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_expirations_insert AFTER INSERT ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_expirations_update AFTER UPDATE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_expirations SET order_index='||quote(old.order_index)||',order_hash='||quote(old.order_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_match_expirations -DROP TABLE IF EXISTS order_match_expirations; -CREATE TABLE order_match_expirations( - order_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (order_match_id) REFERENCES order_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on order_match_expirations -CREATE TRIGGER _order_match_expirations_delete BEFORE DELETE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_match_expirations(rowid,order_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.order_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_match_expirations_insert AFTER INSERT ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_match_expirations_update AFTER UPDATE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_match_expirations SET order_match_id='||quote(old.order_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_matches -DROP TABLE IF EXISTS order_matches; -CREATE TABLE order_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - forward_asset TEXT, - forward_quantity INTEGER, - backward_asset TEXT, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO order_matches VALUES('7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1_e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433',3,'7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',4,'e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,'XCP',100000000,310002,310003,310003,10,10,310023,857142,'completed'); --- Triggers and indices on order_matches -CREATE TRIGGER _order_matches_delete BEFORE DELETE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,forward_asset,forward_quantity,backward_asset,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_paid,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.forward_asset)||','||quote(old.forward_quantity)||','||quote(old.backward_asset)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _order_matches_insert AFTER INSERT ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_matches_update AFTER UPDATE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',forward_asset='||quote(old.forward_asset)||',forward_quantity='||quote(old.forward_quantity)||',backward_asset='||quote(old.backward_asset)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX backward_status_idx ON order_matches (backward_asset, status); -CREATE INDEX forward_status_idx ON order_matches (forward_asset, status); -CREATE INDEX match_expire_idx ON order_matches (status, match_expire_index); -CREATE INDEX tx0_address_idx ON order_matches (tx0_address); -CREATE INDEX tx1_address_idx ON order_matches (tx1_address); - --- Table orders -DROP TABLE IF EXISTS orders; -CREATE TABLE orders( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - give_asset TEXT, - give_quantity INTEGER, - give_remaining INTEGER, - get_asset TEXT, - get_quantity INTEGER, - get_remaining INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_required INTEGER, - fee_required_remaining INTEGER, - fee_provided INTEGER, - fee_provided_remaining INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO orders VALUES(3,'7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1',310002,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'expired'); -INSERT INTO orders VALUES(4,'e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433',310003,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'expired'); -INSERT INTO orders VALUES(22,'9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3',310021,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'expired'); --- Triggers and indices on orders -CREATE TRIGGER _orders_delete BEFORE DELETE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO orders(rowid,tx_index,tx_hash,block_index,source,give_asset,give_quantity,give_remaining,get_asset,get_quantity,get_remaining,expiration,expire_index,fee_required,fee_required_remaining,fee_provided,fee_provided_remaining,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.give_asset)||','||quote(old.give_quantity)||','||quote(old.give_remaining)||','||quote(old.get_asset)||','||quote(old.get_quantity)||','||quote(old.get_remaining)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_required)||','||quote(old.fee_required_remaining)||','||quote(old.fee_provided)||','||quote(old.fee_provided_remaining)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _orders_insert AFTER INSERT ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM orders WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _orders_update AFTER UPDATE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE orders SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',give_asset='||quote(old.give_asset)||',give_quantity='||quote(old.give_quantity)||',give_remaining='||quote(old.give_remaining)||',get_asset='||quote(old.get_asset)||',get_quantity='||quote(old.get_quantity)||',get_remaining='||quote(old.get_remaining)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_required='||quote(old.fee_required)||',fee_required_remaining='||quote(old.fee_required_remaining)||',fee_provided='||quote(old.fee_provided)||',fee_provided_remaining='||quote(old.fee_provided_remaining)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX expire_idx ON orders (expire_index, status); -CREATE INDEX give_asset_idx ON orders (give_asset); -CREATE INDEX give_get_status_idx ON orders (get_asset, give_asset, status); -CREATE INDEX give_status_idx ON orders (give_asset, status); -CREATE INDEX source_give_status_idx ON orders (source, give_asset, status); - --- Table rps -DROP TABLE IF EXISTS rps; -CREATE TABLE rps( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - possible_moves INTEGER, - wager INTEGER, - move_random_hash TEXT, - expiration INTEGER, - expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); --- Triggers and indices on rps -CREATE TRIGGER _rps_delete BEFORE DELETE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps(rowid,tx_index,tx_hash,block_index,source,possible_moves,wager,move_random_hash,expiration,expire_index,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.possible_moves)||','||quote(old.wager)||','||quote(old.move_random_hash)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_insert AFTER INSERT ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_update AFTER UPDATE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',possible_moves='||quote(old.possible_moves)||',wager='||quote(old.wager)||',move_random_hash='||quote(old.move_random_hash)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX matching_idx ON rps (wager, possible_moves); - --- Table rps_expirations -DROP TABLE IF EXISTS rps_expirations; -CREATE TABLE rps_expirations( - rps_index INTEGER PRIMARY KEY, - rps_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (rps_index, rps_hash) REFERENCES rps(tx_index, tx_hash)); --- Triggers and indices on rps_expirations -CREATE TRIGGER _rps_expirations_delete BEFORE DELETE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_expirations(rowid,rps_index,rps_hash,source,block_index) VALUES('||old.rowid||','||quote(old.rps_index)||','||quote(old.rps_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_expirations_insert AFTER INSERT ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_expirations_update AFTER UPDATE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_expirations SET rps_index='||quote(old.rps_index)||',rps_hash='||quote(old.rps_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_match_expirations -DROP TABLE IF EXISTS rps_match_expirations; -CREATE TABLE rps_match_expirations( - rps_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (rps_match_id) REFERENCES rps_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on rps_match_expirations -CREATE TRIGGER _rps_match_expirations_delete BEFORE DELETE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_match_expirations(rowid,rps_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.rps_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_match_expirations_insert AFTER INSERT ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_match_expirations_update AFTER UPDATE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_match_expirations SET rps_match_id='||quote(old.rps_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_matches -DROP TABLE IF EXISTS rps_matches; -CREATE TABLE rps_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_move_random_hash TEXT, - tx1_move_random_hash TEXT, - wager INTEGER, - possible_moves INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rps_matches -CREATE TRIGGER _rps_matches_delete BEFORE DELETE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_move_random_hash,tx1_move_random_hash,wager,possible_moves,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_move_random_hash)||','||quote(old.tx1_move_random_hash)||','||quote(old.wager)||','||quote(old.possible_moves)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_matches_insert AFTER INSERT ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_matches_update AFTER UPDATE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_move_random_hash='||quote(old.tx0_move_random_hash)||',tx1_move_random_hash='||quote(old.tx1_move_random_hash)||',wager='||quote(old.wager)||',possible_moves='||quote(old.possible_moves)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_expire_idx ON rps_matches (status, match_expire_index); -CREATE INDEX rps_tx0_address_idx ON rps_matches (tx0_address); -CREATE INDEX rps_tx1_address_idx ON rps_matches (tx1_address); - --- Table rpsresolves -DROP TABLE IF EXISTS rpsresolves; -CREATE TABLE rpsresolves( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - move INTEGER, - random TEXT, - rps_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rpsresolves -CREATE TRIGGER _rpsresolves_delete BEFORE DELETE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rpsresolves(rowid,tx_index,tx_hash,block_index,source,move,random,rps_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.move)||','||quote(old.random)||','||quote(old.rps_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rpsresolves_insert AFTER INSERT ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rpsresolves WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rpsresolves_update AFTER UPDATE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rpsresolves SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',move='||quote(old.move)||',random='||quote(old.random)||',rps_match_id='||quote(old.rps_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_id_idx ON rpsresolves (rps_match_id); - --- Table sends -DROP TABLE IF EXISTS sends; -CREATE TABLE "sends"( - tx_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - quantity INTEGER, - status TEXT, - msg_index INTEGER DEFAULT 0, memo BLOB, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); -INSERT INTO sends VALUES(2,'896436390e05977c173311d54cddacbb898bdbf1bb11bd4b7e4932004eb00df6',310001,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'valid',0,NULL); -INSERT INTO sends VALUES(8,'c62b0567e929ffc2529da427a5b0df1968b53a0436a1d28aa76fce3705b6b595',310007,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,'valid',0,NULL); -INSERT INTO sends VALUES(9,'1935e06458e6ab179a84307d47dcd442e0b2e1c172c5fb929eafa3a57225d1b0',310008,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,'valid',0,NULL); -INSERT INTO sends VALUES(24,'d37210d41a23ada8baf982a85190a742f7de9901f585e99e30ed3c9694efb657',310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10000,'valid',0,NULL); --- Triggers and indices on sends -CREATE TRIGGER _sends_delete BEFORE DELETE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sends(rowid,tx_index,tx_hash,block_index,source,destination,asset,quantity,status,msg_index,memo) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.status)||','||quote(old.msg_index)||','||quote(old.memo)||')'); - END; -CREATE TRIGGER _sends_insert AFTER INSERT ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sends_update AFTER UPDATE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',status='||quote(old.status)||',msg_index='||quote(old.msg_index)||',memo='||quote(old.memo)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX destination_idx ON sends (destination); -CREATE INDEX memo_idx ON sends (memo); -CREATE INDEX source_idx ON sends (source); - --- Table sweeps -DROP TABLE IF EXISTS sweeps; -CREATE TABLE sweeps( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - flags INTEGER, - status TEXT, - memo BLOB, - fee_paid INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on sweeps -CREATE TRIGGER _sweeps_delete BEFORE DELETE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sweeps(rowid,tx_index,tx_hash,block_index,source,destination,flags,status,memo,fee_paid) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.flags)||','||quote(old.status)||','||quote(old.memo)||','||quote(old.fee_paid)||')'); - END; -CREATE TRIGGER _sweeps_insert AFTER INSERT ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sweeps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sweeps_update AFTER UPDATE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sweeps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',flags='||quote(old.flags)||',status='||quote(old.status)||',memo='||quote(old.memo)||',fee_paid='||quote(old.fee_paid)||' WHERE rowid='||old.rowid); - END; - --- Table transactions -DROP TABLE IF EXISTS transactions; -CREATE TABLE transactions( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - block_hash TEXT, - block_time INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - fee INTEGER, - data BLOB, - supported BOOL DEFAULT 1, - FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), - PRIMARY KEY (tx_index, tx_hash, block_index)); -INSERT INTO transactions VALUES(1,'9b6b1abb696d8d1b70c5beed046d7cddd23cd95b69ef18946cb18c5b56cfde30',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); -INSERT INTO transactions VALUES(2,'896436390e05977c173311d54cddacbb898bdbf1bb11bd4b7e4932004eb00df6',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'0000000000000000000000010000000002FAF080',1); -INSERT INTO transactions VALUES(3,'7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,1000000,X'0000000A00000000000000000000000002FAF08000000000000000010000000005F5E100000A0000000000000000',1); -INSERT INTO transactions VALUES(4,'e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000000A00000000000000010000000006422C4000000000000000000000000002FAF080000A00000000000DBBA0',1); -INSERT INTO transactions VALUES(5,'5a00de6476865f69b816639038b56d348e105a9ee9f7cfd741c42bc0841bec61',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',50000000,9675,X'0000000B7A78DF734FD910FCF9170D4AF753C2CEDA92974684B929FF595E6063CA5A2CF1E75417825D1FE276BFB329960A3367C711DCB256AA2ED21DA0F79A58120E2433',1); -INSERT INTO transactions VALUES(6,'59c87f1f8a28eece244652b6284b40681a2620bfae8b58c32f303e55f06be41d',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'000000140000000000004767000000003B9ACA000100000000000000000000',1); -INSERT INTO transactions VALUES(7,'6573e8856c4451ae0b0fa39453dc25be1050599a1473933b57b0c093d63e6291',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'00000014000000000000476800000000000186A00000000000000000000006666F6F626172',1); -INSERT INTO transactions VALUES(8,'c62b0567e929ffc2529da427a5b0df1968b53a0436a1d28aa76fce3705b6b595',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000000000000000000476700000000003D0900',1); -INSERT INTO transactions VALUES(9,'1935e06458e6ab179a84307d47dcd442e0b2e1c172c5fb929eafa3a57225d1b0',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'000000000000000000004768000000000000020E',1); -INSERT INTO transactions VALUES(10,'6034362e83be4663c7782fd2f4695d672656a7c78e89a475bb426ab75d8ebd4f',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'00000032000000000000025800000000000047670000000000000001',1); -INSERT INTO transactions VALUES(11,'462fcf127cd185723fd0027955f8749e9cfe6c20ebdfc997ff626ab2cae93087',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'00000032000000000000032000000000000047680000000000000001',1); -INSERT INTO transactions VALUES(12,'3bd2702db834abf080054f2391e229d0ca8dc9d578256f23e744ad0e5997d4e8',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB3300405900000000000005F5E0FF09556E69742054657374',1); -INSERT INTO transactions VALUES(13,'19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000028000052BB33640000000002FAF08000000000017D7840000000000000000000003B100000000A',1); -INSERT INTO transactions VALUES(14,'43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000028000152BB336400000000017D78400000000002793D60000000000000000000003B100000000A',1); -INSERT INTO transactions VALUES(15,'1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000028000052BB33640000000008F0D1800000000014DC93800000000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(16,'005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000028000152BB33640000000014DC93800000000008F0D1800000000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(17,'e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000028000252BB33C8000000002CB417800000000026BE36803FF0000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(18,'dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000028000352BB33C80000000026BE3680000000002CB417803FF0000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(19,'6b37e7c729d923e82bd81ad87917384173f636edead62da66946e1363e652b09',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB33324058F7256FFC115E004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(20,'720f72ac87f58f8763cccee598dbd4e39c2f27f7e37aed78bf532f3f176dcda7',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB3365405915F3B645A1CB004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(21,'6e29568b84864b47c5e677a8a32b4e5527998f9bc3f6cb9aedece456e267cd3c',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB33C94000000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(22,'9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3',310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000000A00000000000047670000000002FAF08000000000000000010000000002FAF080000A0000000000000000',1); -INSERT INTO transactions VALUES(23,'c81cd36f1efabd22f1a00923714fd5a5f1ba07852ef1f0763223563e3f55dfda',310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','mvCounterpartyXXXXXXXXXXXXXXW24Hef',100000000,14675,X'',1); -INSERT INTO transactions VALUES(24,'d37210d41a23ada8baf982a85190a742f7de9901f585e99e30ed3c9694efb657',310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'0000000000000000000047680000000000002710',1); --- Triggers and indices on transactions -CREATE INDEX index_hash_index_idx ON transactions (tx_index, tx_hash, block_index); -CREATE INDEX index_index_idx ON transactions (block_index, tx_index); -CREATE INDEX tx_hash_idx ON transactions (tx_hash); -CREATE INDEX tx_index_idx ON transactions (tx_index); - --- Table undolog -DROP TABLE IF EXISTS undolog; -CREATE TABLE undolog( - undo_index INTEGER PRIMARY KEY AUTOINCREMENT, - sql TEXT); -INSERT INTO undolog VALUES(4,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=93000000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(5,'DELETE FROM debits WHERE rowid=1'); -INSERT INTO undolog VALUES(6,'DELETE FROM balances WHERE rowid=2'); -INSERT INTO undolog VALUES(7,'DELETE FROM credits WHERE rowid=2'); -INSERT INTO undolog VALUES(8,'DELETE FROM sends WHERE rowid=1'); -INSERT INTO undolog VALUES(9,'DELETE FROM orders WHERE rowid=1'); -INSERT INTO undolog VALUES(10,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92950000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(11,'DELETE FROM debits WHERE rowid=2'); -INSERT INTO undolog VALUES(12,'DELETE FROM orders WHERE rowid=2'); -INSERT INTO undolog VALUES(13,'UPDATE orders SET tx_index=3,tx_hash=''7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1'',block_index=310002,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',give_asset=''BTC'',give_quantity=50000000,give_remaining=50000000,get_asset=''XCP'',get_quantity=100000000,get_remaining=100000000,expiration=10,expire_index=310012,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=1000000,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(14,'UPDATE orders SET tx_index=4,tx_hash=''e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433'',block_index=310003,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',give_asset=''XCP'',give_quantity=105000000,give_remaining=105000000,get_asset=''BTC'',get_quantity=50000000,get_remaining=50000000,expiration=10,expire_index=310013,fee_required=900000,fee_required_remaining=900000,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(15,'DELETE FROM order_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(16,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92845000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(17,'DELETE FROM credits WHERE rowid=3'); -INSERT INTO undolog VALUES(18,'UPDATE order_matches SET id=''7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1_e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433'',tx0_index=3,tx0_hash=''7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1'',tx0_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx1_index=4,tx1_hash=''e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433'',tx1_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',forward_asset=''BTC'',forward_quantity=50000000,backward_asset=''XCP'',backward_quantity=100000000,tx0_block_index=310002,tx1_block_index=310003,block_index=310003,tx0_expiration=10,tx1_expiration=10,match_expire_index=310023,fee_paid=857142,status=''pending'' WHERE rowid=1'); -INSERT INTO undolog VALUES(19,'DELETE FROM btcpays WHERE rowid=5'); -INSERT INTO undolog VALUES(20,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92945000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(21,'DELETE FROM debits WHERE rowid=3'); -INSERT INTO undolog VALUES(22,'DELETE FROM assets WHERE rowid=3'); -INSERT INTO undolog VALUES(23,'DELETE FROM issuances WHERE rowid=1'); -INSERT INTO undolog VALUES(24,'DELETE FROM balances WHERE rowid=3'); -INSERT INTO undolog VALUES(25,'DELETE FROM credits WHERE rowid=4'); -INSERT INTO undolog VALUES(26,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92895000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(27,'DELETE FROM debits WHERE rowid=4'); -INSERT INTO undolog VALUES(28,'DELETE FROM assets WHERE rowid=4'); -INSERT INTO undolog VALUES(29,'DELETE FROM issuances WHERE rowid=2'); -INSERT INTO undolog VALUES(30,'DELETE FROM balances WHERE rowid=4'); -INSERT INTO undolog VALUES(31,'DELETE FROM credits WHERE rowid=5'); -INSERT INTO undolog VALUES(32,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''BBBB'',quantity=1000000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(33,'DELETE FROM debits WHERE rowid=5'); -INSERT INTO undolog VALUES(34,'DELETE FROM balances WHERE rowid=5'); -INSERT INTO undolog VALUES(35,'DELETE FROM credits WHERE rowid=6'); -INSERT INTO undolog VALUES(36,'DELETE FROM sends WHERE rowid=2'); -INSERT INTO undolog VALUES(37,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''BBBC'',quantity=100000 WHERE rowid=4'); -INSERT INTO undolog VALUES(38,'DELETE FROM debits WHERE rowid=6'); -INSERT INTO undolog VALUES(39,'DELETE FROM balances WHERE rowid=6'); -INSERT INTO undolog VALUES(40,'DELETE FROM credits WHERE rowid=7'); -INSERT INTO undolog VALUES(41,'DELETE FROM sends WHERE rowid=3'); -INSERT INTO undolog VALUES(42,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92845000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(43,'DELETE FROM debits WHERE rowid=7'); -INSERT INTO undolog VALUES(44,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92844999976 WHERE rowid=1'); -INSERT INTO undolog VALUES(45,'DELETE FROM debits WHERE rowid=8'); -INSERT INTO undolog VALUES(46,'UPDATE balances SET address=''1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=50000000 WHERE rowid=2'); -INSERT INTO undolog VALUES(47,'DELETE FROM credits WHERE rowid=8'); -INSERT INTO undolog VALUES(48,'DELETE FROM dividends WHERE rowid=10'); -INSERT INTO undolog VALUES(49,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92844979976 WHERE rowid=1'); -INSERT INTO undolog VALUES(50,'DELETE FROM debits WHERE rowid=9'); -INSERT INTO undolog VALUES(51,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92844559176 WHERE rowid=1'); -INSERT INTO undolog VALUES(52,'DELETE FROM debits WHERE rowid=10'); -INSERT INTO undolog VALUES(53,'UPDATE balances SET address=''1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=50000024 WHERE rowid=2'); -INSERT INTO undolog VALUES(54,'DELETE FROM credits WHERE rowid=9'); -INSERT INTO undolog VALUES(55,'DELETE FROM dividends WHERE rowid=11'); -INSERT INTO undolog VALUES(56,'DELETE FROM broadcasts WHERE rowid=12'); -INSERT INTO undolog VALUES(57,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92844539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(58,'DELETE FROM debits WHERE rowid=11'); -INSERT INTO undolog VALUES(59,'DELETE FROM bets WHERE rowid=1'); -INSERT INTO undolog VALUES(60,'UPDATE orders SET tx_index=3,tx_hash=''7a78df734fd910fcf9170d4af753c2ceda92974684b929ff595e6063ca5a2cf1'',block_index=310002,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',give_asset=''BTC'',give_quantity=50000000,give_remaining=0,get_asset=''XCP'',get_quantity=100000000,get_remaining=0,expiration=10,expire_index=310012,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=142858,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(61,'DELETE FROM order_expirations WHERE rowid=3'); -INSERT INTO undolog VALUES(62,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92794539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(63,'DELETE FROM debits WHERE rowid=12'); -INSERT INTO undolog VALUES(64,'DELETE FROM bets WHERE rowid=2'); -INSERT INTO undolog VALUES(65,'UPDATE bets SET tx_index=13,tx_hash=''19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9'',block_index=310012,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=0,deadline=1388000100,wager_quantity=50000000,wager_remaining=50000000,counterwager_quantity=25000000,counterwager_remaining=25000000,target_value=0.0,leverage=15120,expiration=10,expire_index=310022,fee_fraction_int=99999999,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(66,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92769539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(67,'DELETE FROM credits WHERE rowid=10'); -INSERT INTO undolog VALUES(68,'UPDATE bets SET tx_index=14,tx_hash=''43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84'',block_index=310013,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=1,deadline=1388000100,wager_quantity=25000000,wager_remaining=25000000,counterwager_quantity=41500000,counterwager_remaining=41500000,target_value=0.0,leverage=15120,expiration=10,expire_index=310023,fee_fraction_int=99999999,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(69,'DELETE FROM bet_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(70,'UPDATE orders SET tx_index=4,tx_hash=''e75417825d1fe276bfb329960a3367c711dcb256aa2ed21da0f79a58120e2433'',block_index=310003,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',give_asset=''XCP'',give_quantity=105000000,give_remaining=5000000,get_asset=''BTC'',get_quantity=50000000,get_remaining=0,expiration=10,expire_index=310013,fee_required=900000,fee_required_remaining=42858,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(71,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92773789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(72,'DELETE FROM credits WHERE rowid=11'); -INSERT INTO undolog VALUES(73,'DELETE FROM order_expirations WHERE rowid=4'); -INSERT INTO undolog VALUES(74,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92778789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(75,'DELETE FROM debits WHERE rowid=13'); -INSERT INTO undolog VALUES(76,'DELETE FROM bets WHERE rowid=3'); -INSERT INTO undolog VALUES(77,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92628789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(78,'DELETE FROM debits WHERE rowid=14'); -INSERT INTO undolog VALUES(79,'DELETE FROM bets WHERE rowid=4'); -INSERT INTO undolog VALUES(80,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(81,'DELETE FROM credits WHERE rowid=12'); -INSERT INTO undolog VALUES(82,'UPDATE bets SET tx_index=15,tx_hash=''1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d'',block_index=310014,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=0,deadline=1388000100,wager_quantity=150000000,wager_remaining=150000000,counterwager_quantity=350000000,counterwager_remaining=350000000,target_value=0.0,leverage=5040,expiration=10,expire_index=310024,fee_fraction_int=99999999,status=''open'' WHERE rowid=3'); -INSERT INTO undolog VALUES(83,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(84,'DELETE FROM credits WHERE rowid=13'); -INSERT INTO undolog VALUES(85,'UPDATE bets SET tx_index=16,tx_hash=''005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531'',block_index=310015,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=1,deadline=1388000100,wager_quantity=350000000,wager_remaining=350000000,counterwager_quantity=150000000,counterwager_remaining=150000000,target_value=0.0,leverage=5040,expiration=10,expire_index=310025,fee_fraction_int=99999999,status=''open'' WHERE rowid=4'); -INSERT INTO undolog VALUES(86,'DELETE FROM bet_matches WHERE rowid=2'); -INSERT INTO undolog VALUES(87,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(88,'DELETE FROM debits WHERE rowid=15'); -INSERT INTO undolog VALUES(89,'DELETE FROM bets WHERE rowid=5'); -INSERT INTO undolog VALUES(90,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=91528789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(91,'DELETE FROM debits WHERE rowid=16'); -INSERT INTO undolog VALUES(92,'DELETE FROM bets WHERE rowid=6'); -INSERT INTO undolog VALUES(93,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(94,'DELETE FROM credits WHERE rowid=14'); -INSERT INTO undolog VALUES(95,'UPDATE bets SET tx_index=17,tx_hash=''e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da'',block_index=310016,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=2,deadline=1388000200,wager_quantity=750000000,wager_remaining=750000000,counterwager_quantity=650000000,counterwager_remaining=650000000,target_value=1.0,leverage=5040,expiration=10,expire_index=310026,fee_fraction_int=99999999,status=''open'' WHERE rowid=5'); -INSERT INTO undolog VALUES(96,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(97,'DELETE FROM credits WHERE rowid=15'); -INSERT INTO undolog VALUES(98,'UPDATE bets SET tx_index=18,tx_hash=''dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9'',block_index=310017,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=3,deadline=1388000200,wager_quantity=650000000,wager_remaining=650000000,counterwager_quantity=750000000,counterwager_remaining=750000000,target_value=1.0,leverage=5040,expiration=10,expire_index=310027,fee_fraction_int=99999999,status=''open'' WHERE rowid=6'); -INSERT INTO undolog VALUES(99,'DELETE FROM bet_matches WHERE rowid=3'); -INSERT INTO undolog VALUES(100,'DELETE FROM broadcasts WHERE rowid=19'); -INSERT INTO undolog VALUES(101,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(102,'DELETE FROM credits WHERE rowid=16'); -INSERT INTO undolog VALUES(103,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=90937926676 WHERE rowid=1'); -INSERT INTO undolog VALUES(104,'DELETE FROM credits WHERE rowid=17'); -INSERT INTO undolog VALUES(105,'DELETE FROM bet_match_resolutions WHERE rowid=1'); -INSERT INTO undolog VALUES(106,'UPDATE bet_matches SET id=''19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9_43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84'',tx0_index=13,tx0_hash=''19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9'',tx0_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx1_index=14,tx1_hash=''43ee1168ce7525c84fbeee2e49ac0edc3daa3ee8c2edbbba326d566ab63d5e84'',tx1_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx0_bet_type=0,tx1_bet_type=1,feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',initial_value=100,deadline=1388000100,target_value=0.0,leverage=15120,forward_quantity=41500000,backward_quantity=20750000,tx0_block_index=310012,tx1_block_index=310013,block_index=310013,tx0_expiration=10,tx1_expiration=10,match_expire_index=310022,fee_fraction_int=99999999,status=''pending'' WHERE rowid=1'); -INSERT INTO undolog VALUES(107,'DELETE FROM broadcasts WHERE rowid=20'); -INSERT INTO undolog VALUES(108,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=90941039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(109,'DELETE FROM credits WHERE rowid=18'); -INSERT INTO undolog VALUES(110,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=91100339176 WHERE rowid=1'); -INSERT INTO undolog VALUES(111,'DELETE FROM credits WHERE rowid=19'); -INSERT INTO undolog VALUES(112,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=91416039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(113,'DELETE FROM credits WHERE rowid=20'); -INSERT INTO undolog VALUES(114,'DELETE FROM bet_match_resolutions WHERE rowid=2'); -INSERT INTO undolog VALUES(115,'UPDATE bet_matches SET id=''1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d_005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531'',tx0_index=15,tx0_hash=''1cc9fa85ad3849ffa70d00b586b75fa07e2676cfa57d31460ec34eaabf82717d'',tx0_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx1_index=16,tx1_hash=''005f98de7188c26ee7e5ce182204ec7c795284be40c684ad71da1d7999820531'',tx1_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx0_bet_type=0,tx1_bet_type=1,feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',initial_value=100,deadline=1388000100,target_value=0.0,leverage=5040,forward_quantity=150000000,backward_quantity=350000000,tx0_block_index=310014,tx1_block_index=310015,block_index=310015,tx0_expiration=10,tx1_expiration=10,match_expire_index=310024,fee_fraction_int=99999999,status=''pending'' WHERE rowid=2'); -INSERT INTO undolog VALUES(116,'DELETE FROM broadcasts WHERE rowid=21'); -INSERT INTO undolog VALUES(117,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=91441039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(118,'DELETE FROM credits WHERE rowid=21'); -INSERT INTO undolog VALUES(119,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92771039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(120,'DELETE FROM credits WHERE rowid=22'); -INSERT INTO undolog VALUES(121,'DELETE FROM bet_match_resolutions WHERE rowid=3'); -INSERT INTO undolog VALUES(122,'UPDATE bet_matches SET id=''e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da_dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9'',tx0_index=17,tx0_hash=''e1f35692651c646ba75bbdf931aa9240e23711f221960865410a03dd400243da'',tx0_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx1_index=18,tx1_hash=''dac4afb8fd0b05fd03635f95edd43fb2c8caf5e648c87dad32272f565714d1b9'',tx1_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx0_bet_type=2,tx1_bet_type=3,feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',initial_value=100,deadline=1388000200,target_value=1.0,leverage=5040,forward_quantity=750000000,backward_quantity=650000000,tx0_block_index=310016,tx1_block_index=310017,block_index=310017,tx0_expiration=10,tx1_expiration=10,match_expire_index=310026,fee_fraction_int=99999999,status=''pending'' WHERE rowid=3'); -INSERT INTO undolog VALUES(123,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''BBBB'',quantity=996000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(124,'DELETE FROM debits WHERE rowid=17'); -INSERT INTO undolog VALUES(125,'DELETE FROM orders WHERE rowid=3'); -INSERT INTO undolog VALUES(126,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92841039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(127,'DELETE FROM credits WHERE rowid=23'); -INSERT INTO undolog VALUES(128,'DELETE FROM burns WHERE rowid=23'); -INSERT INTO undolog VALUES(129,'UPDATE bets SET tx_index=13,tx_hash=''19f4bb0c6c99045ec307905d8e15ff885413cdee3525269b25f03971dd8019b9'',block_index=310012,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=0,deadline=1388000100,wager_quantity=50000000,wager_remaining=8500000,counterwager_quantity=25000000,counterwager_remaining=4250000,target_value=0.0,leverage=15120,expiration=10,expire_index=310022,fee_fraction_int=99999999,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(130,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=149840926438 WHERE rowid=1'); -INSERT INTO undolog VALUES(131,'DELETE FROM credits WHERE rowid=24'); -INSERT INTO undolog VALUES(132,'DELETE FROM bet_expirations WHERE rowid=13'); -INSERT INTO undolog VALUES(133,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''BBBC'',quantity=99474 WHERE rowid=4'); -INSERT INTO undolog VALUES(134,'DELETE FROM debits WHERE rowid=18'); -INSERT INTO undolog VALUES(135,'UPDATE balances SET address=''1_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''BBBC'',quantity=526 WHERE rowid=6'); -INSERT INTO undolog VALUES(136,'DELETE FROM credits WHERE rowid=25'); -INSERT INTO undolog VALUES(137,'DELETE FROM sends WHERE rowid=4'); -INSERT INTO undolog VALUES(138,'UPDATE orders SET tx_index=22,tx_hash=''9611941b4e1ce19312e3cb19847439ec1c4efc614f017ad72ac232ebf54739b3'',block_index=310021,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',give_asset=''BBBB'',give_quantity=50000000,give_remaining=50000000,get_asset=''XCP'',get_quantity=50000000,get_remaining=50000000,expiration=10,expire_index=310031,fee_required=0,fee_required_remaining=0,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=3'); -INSERT INTO undolog VALUES(139,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''BBBB'',quantity=946000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(140,'DELETE FROM credits WHERE rowid=26'); -INSERT INTO undolog VALUES(141,'DELETE FROM order_expirations WHERE rowid=22'); - --- Table undolog_block -DROP TABLE IF EXISTS undolog_block; -CREATE TABLE undolog_block( - block_index INTEGER PRIMARY KEY, - first_undo_index INTEGER); -INSERT INTO undolog_block VALUES(310001,4); -INSERT INTO undolog_block VALUES(310002,9); -INSERT INTO undolog_block VALUES(310003,10); -INSERT INTO undolog_block VALUES(310004,16); -INSERT INTO undolog_block VALUES(310005,20); -INSERT INTO undolog_block VALUES(310006,26); -INSERT INTO undolog_block VALUES(310007,32); -INSERT INTO undolog_block VALUES(310008,37); -INSERT INTO undolog_block VALUES(310009,42); -INSERT INTO undolog_block VALUES(310010,49); -INSERT INTO undolog_block VALUES(310011,56); -INSERT INTO undolog_block VALUES(310012,57); -INSERT INTO undolog_block VALUES(310013,60); -INSERT INTO undolog_block VALUES(310014,70); -INSERT INTO undolog_block VALUES(310015,77); -INSERT INTO undolog_block VALUES(310016,87); -INSERT INTO undolog_block VALUES(310017,90); -INSERT INTO undolog_block VALUES(310018,100); -INSERT INTO undolog_block VALUES(310019,107); -INSERT INTO undolog_block VALUES(310020,116); -INSERT INTO undolog_block VALUES(310021,123); -INSERT INTO undolog_block VALUES(310022,126); -INSERT INTO undolog_block VALUES(310023,129); -INSERT INTO undolog_block VALUES(310024,138); -INSERT INTO undolog_block VALUES(310025,138); -INSERT INTO undolog_block VALUES(310026,138); -INSERT INTO undolog_block VALUES(310027,138); -INSERT INTO undolog_block VALUES(310028,138); -INSERT INTO undolog_block VALUES(310029,138); -INSERT INTO undolog_block VALUES(310030,138); -INSERT INTO undolog_block VALUES(310031,138); -INSERT INTO undolog_block VALUES(310032,138); -INSERT INTO undolog_block VALUES(310033,142); -INSERT INTO undolog_block VALUES(310034,142); -INSERT INTO undolog_block VALUES(310035,142); -INSERT INTO undolog_block VALUES(310036,142); -INSERT INTO undolog_block VALUES(310037,142); -INSERT INTO undolog_block VALUES(310038,142); -INSERT INTO undolog_block VALUES(310039,142); -INSERT INTO undolog_block VALUES(310040,142); -INSERT INTO undolog_block VALUES(310041,142); -INSERT INTO undolog_block VALUES(310042,142); -INSERT INTO undolog_block VALUES(310043,142); -INSERT INTO undolog_block VALUES(310044,142); -INSERT INTO undolog_block VALUES(310045,142); -INSERT INTO undolog_block VALUES(310046,142); -INSERT INTO undolog_block VALUES(310047,142); -INSERT INTO undolog_block VALUES(310048,142); -INSERT INTO undolog_block VALUES(310049,142); -INSERT INTO undolog_block VALUES(310050,142); -INSERT INTO undolog_block VALUES(310051,142); -INSERT INTO undolog_block VALUES(310052,142); -INSERT INTO undolog_block VALUES(310053,142); -INSERT INTO undolog_block VALUES(310054,142); -INSERT INTO undolog_block VALUES(310055,142); -INSERT INTO undolog_block VALUES(310056,142); -INSERT INTO undolog_block VALUES(310057,142); -INSERT INTO undolog_block VALUES(310058,142); -INSERT INTO undolog_block VALUES(310059,142); -INSERT INTO undolog_block VALUES(310060,142); -INSERT INTO undolog_block VALUES(310061,142); -INSERT INTO undolog_block VALUES(310062,142); -INSERT INTO undolog_block VALUES(310063,142); -INSERT INTO undolog_block VALUES(310064,142); -INSERT INTO undolog_block VALUES(310065,142); -INSERT INTO undolog_block VALUES(310066,142); -INSERT INTO undolog_block VALUES(310067,142); -INSERT INTO undolog_block VALUES(310068,142); -INSERT INTO undolog_block VALUES(310069,142); -INSERT INTO undolog_block VALUES(310070,142); -INSERT INTO undolog_block VALUES(310071,142); -INSERT INTO undolog_block VALUES(310072,142); -INSERT INTO undolog_block VALUES(310073,142); -INSERT INTO undolog_block VALUES(310074,142); -INSERT INTO undolog_block VALUES(310075,142); -INSERT INTO undolog_block VALUES(310076,142); -INSERT INTO undolog_block VALUES(310077,142); -INSERT INTO undolog_block VALUES(310078,142); -INSERT INTO undolog_block VALUES(310079,142); -INSERT INTO undolog_block VALUES(310080,142); -INSERT INTO undolog_block VALUES(310081,142); -INSERT INTO undolog_block VALUES(310082,142); -INSERT INTO undolog_block VALUES(310083,142); -INSERT INTO undolog_block VALUES(310084,142); -INSERT INTO undolog_block VALUES(310085,142); -INSERT INTO undolog_block VALUES(310086,142); -INSERT INTO undolog_block VALUES(310087,142); -INSERT INTO undolog_block VALUES(310088,142); -INSERT INTO undolog_block VALUES(310089,142); -INSERT INTO undolog_block VALUES(310090,142); -INSERT INTO undolog_block VALUES(310091,142); -INSERT INTO undolog_block VALUES(310092,142); -INSERT INTO undolog_block VALUES(310093,142); -INSERT INTO undolog_block VALUES(310094,142); -INSERT INTO undolog_block VALUES(310095,142); -INSERT INTO undolog_block VALUES(310096,142); -INSERT INTO undolog_block VALUES(310097,142); -INSERT INTO undolog_block VALUES(310098,142); -INSERT INTO undolog_block VALUES(310099,142); -INSERT INTO undolog_block VALUES(310100,142); -INSERT INTO undolog_block VALUES(310101,142); - --- For primary key autoincrements the next id to use is stored in --- sqlite_sequence -DELETE FROM main.sqlite_sequence WHERE name='undolog'; -INSERT INTO main.sqlite_sequence VALUES ('undolog', 141); - -COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.log b/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.log deleted file mode 100644 index 538b922a01..0000000000 --- a/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.log +++ /dev/null @@ -1,255 +0,0 @@ -Creating connection to `:memory:`. -Checking database integrity. -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 3.00000000; txid: f4011d923cf1819a8949f430b008b67a179e19772c73dcf55199f69fc54ef8a7; vout: 0; confirmations: 7'] -Fee/KB 0.00025000 -New input: amount: 3.00000000; txid: f4011d923cf1819a8949f430b008b67a179e19772c73dcf55199f69fc54ef8a7; vout: 0; confirmations: 7 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 2.37994375 BTC -Credit: 930.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #burn# <63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2> -Burn: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 burned 0.62 BTC for 930.0 XCP (63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 2.37994375; txid: 63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.37994375; txid: 63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 2.37971125 BTC -Debit: 0.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #send# <638358ddca7a4365d07b633926d55a399bc0e8b164fc820d9b35a223effe6d65> -Credit: 0.5 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #send# <638358ddca7a4365d07b633926d55a399bc0e8b164fc820d9b35a223effe6d65> -Send: 0.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (638358ddca7a4365d07b633926d55a399bc0e8b164fc820d9b35a223effe6d65) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 2.37971125; txid: 638358ddca7a4365d07b633926d55a399bc0e8b164fc820d9b35a223effe6d65; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.37971125; txid: 638358ddca7a4365d07b633926d55a399bc0e8b164fc820d9b35a223effe6d65; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 1000000 -Size: 272 Fee: 0.01000000 Change quantity: 2.36963325 BTC -Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered 0.5 BTC for 1.0 XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052) [open] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 2.36963325; txid: cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.36963325; txid: cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 2.36948725 BTC -Debit: 1.05 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #open order# -Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered 1.05 XCP for 0.5 BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754) [open] -Considering: cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052 -Tx0 Price: 2.0; Tx1 Inverse Price: 2.1 -Potential forward quantities: 50000000, 52500000 -Forward Quantity: 50000000 -Backward Quantity: 100000000 -Tx0 fee provided remaining: 0.01; required fee: 0.00857142 -Order Match: 0.5 BTC for 1.0 XCP (cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052_beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754) [pending] -Order match has only -10 confirmation(s). -data_btc_out=15600 (data_value=7800 len(data_array)=2) -Sorted candidate UTXOs: ['amount: 2.36948725; txid: beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.36948725; txid: beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 387 final_fee 9675 -Size: 387 Fee: 0.00009675 Change quantity: 1.86923450 BTC -Credit: 1.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #btcpay# <7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e> -Database: set status of order_match cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052_beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754 to completed. -BTC Payment: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid 0.5 BTC to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 for order match cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052_beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754 (7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86923450; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 3; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.86923450; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 3; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86908850 BTC -Debit: 0.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #issuance fee# <78ec308733a3253206ea1376339dd274905f224c5bbe9dbd1490713c1e74a7f3> -Issuance: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 created 10.0 of divisible asset BBBB (78ec308733a3253206ea1376339dd274905f224c5bbe9dbd1490713c1e74a7f3) [valid] -Credit: 10.0 BBBB to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #issuance# <78ec308733a3253206ea1376339dd274905f224c5bbe9dbd1490713c1e74a7f3> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86908850; txid: 78ec308733a3253206ea1376339dd274905f224c5bbe9dbd1490713c1e74a7f3; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 2'] -Fee/KB 0.00025000 -New input: amount: 1.86908850; txid: 78ec308733a3253206ea1376339dd274905f224c5bbe9dbd1490713c1e74a7f3; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86894250 BTC -Debit: 0.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #issuance fee# -Issuance: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 created 100000 of indivisible asset BBBC (febe15f0f2b362f711644e76d6cfa0bd1a6cbec29bb585f196c5c2594e38bd37) [valid] -Credit: 100000 BBBC to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #issuance# -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86894250; txid: febe15f0f2b362f711644e76d6cfa0bd1a6cbec29bb585f196c5c2594e38bd37; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 3'] -Fee/KB 0.00025000 -New input: amount: 1.86894250; txid: febe15f0f2b362f711644e76d6cfa0bd1a6cbec29bb585f196c5c2594e38bd37; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86871000 BTC -Debit: 0.04 BBBB from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #send# <633e9ffcf75ac19b5c6ece4b676cbc2636abc8cf9e8a3ab408e045f4a8e9d30f> -Credit: 0.04 BBBB to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #send# <633e9ffcf75ac19b5c6ece4b676cbc2636abc8cf9e8a3ab408e045f4a8e9d30f> -Send: 0.04 BBBB from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (633e9ffcf75ac19b5c6ece4b676cbc2636abc8cf9e8a3ab408e045f4a8e9d30f) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86871000; txid: 633e9ffcf75ac19b5c6ece4b676cbc2636abc8cf9e8a3ab408e045f4a8e9d30f; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 4'] -Fee/KB 0.00025000 -New input: amount: 1.86871000; txid: 633e9ffcf75ac19b5c6ece4b676cbc2636abc8cf9e8a3ab408e045f4a8e9d30f; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86847750 BTC -Debit: 526 BBBC from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #send# <7166a8cde54b81c99f128c66a689569197db05883e1bf4e899eabea9f9f450b1> -Credit: 526 BBBC to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #send# <7166a8cde54b81c99f128c66a689569197db05883e1bf4e899eabea9f9f450b1> -Send: 526 BBBC from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (7166a8cde54b81c99f128c66a689569197db05883e1bf4e899eabea9f9f450b1) [valid] -Total quantity to be distributed in dividends: 0.00000024 XCP -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86847750; txid: 7166a8cde54b81c99f128c66a689569197db05883e1bf4e899eabea9f9f450b1; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 5'] -Fee/KB 0.00025000 -New input: amount: 1.86847750; txid: 7166a8cde54b81c99f128c66a689569197db05883e1bf4e899eabea9f9f450b1; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86833150 BTC -Debit: 0.00000024 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #dividend# <76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe> -Debit: 0.0002 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #dividend fee# <76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe> -Credit: 0.00000024 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #dividend# <76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe> -Dividend: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid 0.000006 XCP per unit of BBBB (76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe) [valid] -Total quantity to be distributed in dividends: 0.004208 XCP -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86833150; txid: 76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 6'] -Fee/KB 0.00025000 -New input: amount: 1.86833150; txid: 76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86818550 BTC -Debit: 0.004208 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #dividend# <555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f> -Debit: 0.0002 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #dividend fee# <555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f> -Credit: 0.004208 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #dividend# <555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f> -Dividend: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid 0.000008 XCP per unit of BBBC (555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86818550; txid: 555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 7'] -Fee/KB 0.00025000 -New input: amount: 1.86818550; txid: 555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86803950 BTC -Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:33:20 with a fee of 99.999999%% (5b3e51c27276d5f933b34b535d7d51eb216c78ca41353cb63b8d9c09c41439b9) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86803950; txid: 5b3e51c27276d5f933b34b535d7d51eb216c78ca41353cb63b8d9c09c41439b9; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 8'] -Fee/KB 0.00025000 -New input: amount: 1.86803950; txid: 5b3e51c27276d5f933b34b535d7d51eb216c78ca41353cb63b8d9c09c41439b9; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86780700 BTC -Debit: 0.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# -Bet: 0.5 XCP against 0.25 XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86780700; txid: d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 9'] -Fee/KB 0.00025000 -New input: amount: 1.86780700; txid: d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86757450 BTC -Expired order: cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052 -Debit: 0.25 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# -Bet: 0.25 XCP against 0.415 XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -Considering: d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9 -Tx0 Inverse Odds: 0.5; Tx1 Odds: 0.6024096385542169 -Potential forward quantities: 50000000, 41500000 -Forward Quantity: 41500000 -Backward Quantity: 20750000 -Credit: 0.0425 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# -Bet Match: BullCFD for 0.415 XCP against BearCFD for 0.2075 XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that 0.0 value, leveraged 3.0x (d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9_e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86757450; txid: e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 10'] -Fee/KB 0.00025000 -New input: amount: 1.86757450; txid: e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86734200 BTC -Credit: 0.05 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #cancel order# -Expired order: beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754 -Debit: 1.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# -Bet: 1.5 XCP against 3.5 XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86734200; txid: e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 11'] -Fee/KB 0.00025000 -New input: amount: 1.86734200; txid: e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86710950 BTC -Debit: 3.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# -Bet: 3.5 XCP against 1.5 XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -Considering: d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9 -Skipping: leverages disagree. -Considering: e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c -Tx0 Inverse Odds: 2.3333333333333335; Tx1 Odds: 2.3333333333333335 -Potential forward quantities: 150000000, 150000000 -Forward Quantity: 150000000 -Backward Quantity: 350000000 -Credit: 0.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# -Credit: 0.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# -Bet Match: BullCFD for 1.5 XCP against BearCFD for 3.5 XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that 0.0 value, leveraged 1.0x (e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c_d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86710950; txid: d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 12'] -Fee/KB 0.00025000 -New input: amount: 1.86710950; txid: d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86687700 BTC -Debit: 7.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# <38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e> -Bet: 7.5 XCP against 6.5 XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86687700; txid: 38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 13'] -Fee/KB 0.00025000 -New input: amount: 1.86687700; txid: 38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86664450 BTC -Debit: 6.5 XCP from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# <878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2> -Bet: 6.5 XCP against 7.5 XCP, by 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -Considering: 38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e -Tx0 Inverse Odds: 0.8666666666666667; Tx1 Odds: 0.8666666666666667 -Potential forward quantities: 750000000, 750000000 -Forward Quantity: 750000000 -Backward Quantity: 650000000 -Credit: 0.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# <878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2> -Credit: 0.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# <878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2> -Bet Match: Equal for 7.5 XCP against NotEqual for 6.5 XCP on 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:40 that 1.0 value, leveraged 1.0x (38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e_878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86664450; txid: 878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 14'] -Fee/KB 0.00025000 -New input: amount: 1.86664450; txid: 878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86649850 BTC -Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:34:10 with a fee of 5.0%% (5ca432dd1c3654efadff3a154455b91057d1f03c909da6e7e75a234fd764006c) [valid] -Credit: 0.591375 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet settled: liquidated for bear# <5ca432dd1c3654efadff3a154455b91057d1f03c909da6e7e75a234fd764006c> -Credit: 0.031125 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #feed fee# <5ca432dd1c3654efadff3a154455b91057d1f03c909da6e7e75a234fd764006c> -Bet Match Force‐Liquidated: 0.0 XCP credited to the bull, 0.591375 XCP credited to the bear, and 0.031125 XCP credited to the feed address (d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9_e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c) -Database: set status of bet_match d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9_e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c to settled: liquidated for bear. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86649850; txid: 5ca432dd1c3654efadff3a154455b91057d1f03c909da6e7e75a234fd764006c; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 15'] -Fee/KB 0.00025000 -New input: amount: 1.86649850; txid: 5ca432dd1c3654efadff3a154455b91057d1f03c909da6e7e75a234fd764006c; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86635250 BTC -Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:01 with a fee of 5.0%% (6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be) [valid] -Credit: 1.593 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet settled# <6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be> -Credit: 3.157 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet settled# <6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be> -Credit: 0.25 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #feed fee# <6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be> -Bet Match Settled: 1.593 XCP credited to the bull, 3.157 XCP credited to the bear, and 0.25 XCP credited to the feed address (e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c_d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a) -Database: set status of bet_match e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c_d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a to settled. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86635250; txid: 6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 16'] -Fee/KB 0.00025000 -New input: amount: 1.86635250; txid: 6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86620650 BTC -Broadcast: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:41 with a fee of 5.0%% (a847674ee4d69fb3975c0758e9f3201bc0d70b7d95051dc485b925df12633008) [valid] -Credit: 13.3 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet settled: for notequal# -Credit: 0.7 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #feed fee# -Bet Match Settled: NotEqual won the pot of 13.3 XCP; 0.7 XCP credited to the feed address (38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e_878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2) -Database: set status of bet_match 38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e_878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2 to settled: for notequal. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86620650; txid: a847674ee4d69fb3975c0758e9f3201bc0d70b7d95051dc485b925df12633008; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 17'] -Fee/KB 0.00025000 -New input: amount: 1.86620650; txid: a847674ee4d69fb3975c0758e9f3201bc0d70b7d95051dc485b925df12633008; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86606050 BTC -Debit: 0.5 BBBB from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #open order# -Order: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered 0.5 BBBB for 0.5 XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e) [open] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.86606050; txid: c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 18'] -Fee/KB 0.00025000 -New input: amount: 1.86606050; txid: c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.86600425 BTC -Credit: 569.99887262 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #burn# -Burn: 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 burned 0.38 BTC for 569.99887262 XCP (ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86600425; txid: ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e; vout: 0; confirmations: 19'] -Fee/KB 0.00025000 -New input: amount: 0.86600425; txid: ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.86577175 BTC -Credit: 0.085 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #recredit wager remaining# -Expired bet: d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9 -Debit: 10000 BBBC from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #send# <44adc2e3482afd40ae413fd44c5e310b3a1ad06b21d620b493de3b7232d81725> -Credit: 10000 BBBC to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #send# <44adc2e3482afd40ae413fd44c5e310b3a1ad06b21d620b493de3b7232d81725> -Send: 10000 BBBC from 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (44adc2e3482afd40ae413fd44c5e310b3a1ad06b21d620b493de3b7232d81725) [valid] -Credit: 0.5 BBBB to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #cancel order# -Expired order: c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e diff --git a/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.sql b/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.sql deleted file mode 100644 index 4fdfe56622..0000000000 --- a/counterpartylib/test/fixtures/scenarios/multisig_1_of_3.sql +++ /dev/null @@ -1,1400 +0,0 @@ -PRAGMA page_size=4096; --- PRAGMA encoding='UTF-8'; --- PRAGMA auto_vacuum=NONE; --- PRAGMA max_page_count=1073741823; - -BEGIN TRANSACTION; - --- Table addresses -DROP TABLE IF EXISTS addresses; -CREATE TABLE addresses( - address TEXT UNIQUE, - options INTEGER, - block_index INTEGER); --- Triggers and indices on addresses -CREATE TRIGGER _addresses_delete BEFORE DELETE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO addresses(rowid,address,options,block_index) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.options)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _addresses_insert AFTER INSERT ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM addresses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _addresses_update AFTER UPDATE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE addresses SET address='||quote(old.address)||',options='||quote(old.options)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX addresses_idx ON addresses (address); - --- Table assets -DROP TABLE IF EXISTS assets; -CREATE TABLE assets( - asset_id TEXT UNIQUE, - asset_name TEXT UNIQUE, - block_index INTEGER, - asset_longname TEXT); -INSERT INTO assets VALUES('0','BTC',NULL,NULL); -INSERT INTO assets VALUES('1','XCP',NULL,NULL); -INSERT INTO assets VALUES('18279','BBBB',310005,NULL); -INSERT INTO assets VALUES('18280','BBBC',310006,NULL); --- Triggers and indices on assets -CREATE TRIGGER _assets_delete BEFORE DELETE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO assets(rowid,asset_id,asset_name,block_index,asset_longname) VALUES('||old.rowid||','||quote(old.asset_id)||','||quote(old.asset_name)||','||quote(old.block_index)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _assets_insert AFTER INSERT ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM assets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _assets_update AFTER UPDATE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE assets SET asset_id='||quote(old.asset_id)||',asset_name='||quote(old.asset_name)||',block_index='||quote(old.block_index)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE UNIQUE INDEX asset_longname_idx ON assets(asset_longname); -CREATE INDEX id_idx ON assets (asset_id); -CREATE INDEX name_idx ON assets (asset_name); - --- Table balances -DROP TABLE IF EXISTS balances; -CREATE TABLE balances( - address TEXT, - asset TEXT, - quantity INTEGER); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149849426438); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50420824); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',89474); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10526); --- Triggers and indices on balances -CREATE TRIGGER _balances_delete BEFORE DELETE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO balances(rowid,address,asset,quantity) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||')'); - END; -CREATE TRIGGER _balances_insert AFTER INSERT ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM balances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _balances_update AFTER UPDATE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE balances SET address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_asset_idx ON balances (address, asset); - --- Table bet_expirations -DROP TABLE IF EXISTS bet_expirations; -CREATE TABLE bet_expirations( - bet_index INTEGER PRIMARY KEY, - bet_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (bet_index, bet_hash) REFERENCES bets(tx_index, tx_hash)); -INSERT INTO bet_expirations VALUES(13,'d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310023); --- Triggers and indices on bet_expirations -CREATE TRIGGER _bet_expirations_delete BEFORE DELETE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_expirations(rowid,bet_index,bet_hash,source,block_index) VALUES('||old.rowid||','||quote(old.bet_index)||','||quote(old.bet_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_expirations_insert AFTER INSERT ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_expirations_update AFTER UPDATE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_expirations SET bet_index='||quote(old.bet_index)||',bet_hash='||quote(old.bet_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_expirations -DROP TABLE IF EXISTS bet_match_expirations; -CREATE TABLE bet_match_expirations( - bet_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on bet_match_expirations -CREATE TRIGGER _bet_match_expirations_delete BEFORE DELETE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_expirations(rowid,bet_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_match_expirations_insert AFTER INSERT ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_expirations_update AFTER UPDATE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_expirations SET bet_match_id='||quote(old.bet_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_resolutions -DROP TABLE IF EXISTS bet_match_resolutions; -CREATE TABLE bet_match_resolutions( - bet_match_id TEXT PRIMARY KEY, - bet_match_type_id INTEGER, - block_index INTEGER, - winner TEXT, - settled BOOL, - bull_credit INTEGER, - bear_credit INTEGER, - escrow_less_fee INTEGER, - fee INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO bet_match_resolutions VALUES('d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9_e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c',1,310018,'0',0,59137500,NULL,NULL,3112500); -INSERT INTO bet_match_resolutions VALUES('e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c_d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a',1,310019,'1',159300000,315700000,NULL,NULL,25000000); -INSERT INTO bet_match_resolutions VALUES('38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e_878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2',5,310020,NULL,NULL,NULL,'NotEqual',1330000000,70000000); --- Triggers and indices on bet_match_resolutions -CREATE TRIGGER _bet_match_resolutions_delete BEFORE DELETE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_resolutions(rowid,bet_match_id,bet_match_type_id,block_index,winner,settled,bull_credit,bear_credit,escrow_less_fee,fee) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.bet_match_type_id)||','||quote(old.block_index)||','||quote(old.winner)||','||quote(old.settled)||','||quote(old.bull_credit)||','||quote(old.bear_credit)||','||quote(old.escrow_less_fee)||','||quote(old.fee)||')'); - END; -CREATE TRIGGER _bet_match_resolutions_insert AFTER INSERT ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_resolutions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_resolutions_update AFTER UPDATE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_resolutions SET bet_match_id='||quote(old.bet_match_id)||',bet_match_type_id='||quote(old.bet_match_type_id)||',block_index='||quote(old.block_index)||',winner='||quote(old.winner)||',settled='||quote(old.settled)||',bull_credit='||quote(old.bull_credit)||',bear_credit='||quote(old.bear_credit)||',escrow_less_fee='||quote(old.escrow_less_fee)||',fee='||quote(old.fee)||' WHERE rowid='||old.rowid); - END; - --- Table bet_matches -DROP TABLE IF EXISTS bet_matches; -CREATE TABLE bet_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_bet_type INTEGER, - tx1_bet_type INTEGER, - feed_address TEXT, - initial_value INTEGER, - deadline INTEGER, - target_value REAL, - leverage INTEGER, - forward_quantity INTEGER, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO bet_matches VALUES('d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9_e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c',13,'d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',14,'e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310013,10,10,310022,99999999,'settled: liquidated for bear'); -INSERT INTO bet_matches VALUES('e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c_d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a',15,'e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',16,'d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310015,10,10,310024,99999999,'settled'); -INSERT INTO bet_matches VALUES('38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e_878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2',17,'38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',18,'878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,3,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310017,10,10,310026,99999999,'settled: for notequal'); --- Triggers and indices on bet_matches -CREATE TRIGGER _bet_matches_delete BEFORE DELETE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_bet_type,tx1_bet_type,feed_address,initial_value,deadline,target_value,leverage,forward_quantity,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_bet_type)||','||quote(old.tx1_bet_type)||','||quote(old.feed_address)||','||quote(old.initial_value)||','||quote(old.deadline)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.forward_quantity)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bet_matches_insert AFTER INSERT ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_matches_update AFTER UPDATE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_bet_type='||quote(old.tx0_bet_type)||',tx1_bet_type='||quote(old.tx1_bet_type)||',feed_address='||quote(old.feed_address)||',initial_value='||quote(old.initial_value)||',deadline='||quote(old.deadline)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',forward_quantity='||quote(old.forward_quantity)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_feed_idx ON bet_matches (feed_address, status); - --- Table bets -DROP TABLE IF EXISTS bets; -CREATE TABLE bets( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - feed_address TEXT, - bet_type INTEGER, - deadline INTEGER, - wager_quantity INTEGER, - wager_remaining INTEGER, - counterwager_quantity INTEGER, - counterwager_remaining INTEGER, - target_value REAL, - leverage INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO bets VALUES(13,'d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9',310012,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'expired'); -INSERT INTO bets VALUES(14,'e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c',310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,25000000,4250000,41500000,0,0.0,15120,10,310023,99999999,'filled'); -INSERT INTO bets VALUES(15,'e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c',310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,150000000,0,350000000,0,0.0,5040,10,310024,99999999,'filled'); -INSERT INTO bets VALUES(16,'d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a',310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,350000000,0,150000000,0,0.0,5040,10,310025,99999999,'filled'); -INSERT INTO bets VALUES(17,'38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e',310016,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,1388000200,750000000,0,650000000,0,1.0,5040,10,310026,99999999,'filled'); -INSERT INTO bets VALUES(18,'878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2',310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',3,1388000200,650000000,0,750000000,0,1.0,5040,10,310027,99999999,'filled'); --- Triggers and indices on bets -CREATE TRIGGER _bets_delete BEFORE DELETE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bets(rowid,tx_index,tx_hash,block_index,source,feed_address,bet_type,deadline,wager_quantity,wager_remaining,counterwager_quantity,counterwager_remaining,target_value,leverage,expiration,expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.feed_address)||','||quote(old.bet_type)||','||quote(old.deadline)||','||quote(old.wager_quantity)||','||quote(old.wager_remaining)||','||quote(old.counterwager_quantity)||','||quote(old.counterwager_remaining)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bets_insert AFTER INSERT ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bets_update AFTER UPDATE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bets SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',feed_address='||quote(old.feed_address)||',bet_type='||quote(old.bet_type)||',deadline='||quote(old.deadline)||',wager_quantity='||quote(old.wager_quantity)||',wager_remaining='||quote(old.wager_remaining)||',counterwager_quantity='||quote(old.counterwager_quantity)||',counterwager_remaining='||quote(old.counterwager_remaining)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX feed_valid_bettype_idx ON bets (feed_address, status, bet_type); - --- Table blocks -DROP TABLE IF EXISTS blocks; -CREATE TABLE blocks( - block_index INTEGER UNIQUE, - block_hash TEXT UNIQUE, - block_time INTEGER, - previous_block_hash TEXT UNIQUE, - difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, - PRIMARY KEY (block_index, block_hash)); -INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); -INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'7e1322d444b3395f9d8ce6b1ca6d48e8f0d78e5d72da997fad9520899bdbebe3','702e537dd6e79386a246cbc44fbccf8ea2a4e575c9f1e072189fbbd831308672','227b24f551e3e59e313c06a3c40e5b2bc318a3d563897222ab121910be66585f'); -INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'3e18d8a969bce2d869cb86b28c23823d88e6d8a840a3cda905a003b37222ebb8','9606ddf073a23418691a532e8cf15569d2dd0d8e88d74839bc96bf007ed0f155','a2d2fa2ff98c5092879bb84eb5ceeec58674378691440844fcfc0b4bb47d3a45'); -INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'71dfa527236bbaf632db18cf1773c63f7ee3a0076fc6562e46db0c955b346a9f','e4ec90b41aed1c9b724f06e85d11f31a933b831f791123336eb47658d7f956fc','be62c5b21a517b5f5ba2d7c276c3ed5f6cb5d819347d8eafd5b71e7ddfe57c0c'); -INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'39feff81ad306adcfb9610e6bd8442e35dd6e1924e75a53708c1d2932bda67f6','885efbbd432e6627671f607d5c8a0509664e0f9e13784fd0ab204efa08e36b41','0f7bbfc996cb5da92e1496729ae323ecd39491dcf4f99fca6812db5e782cb7bc'); -INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'1cee0851ee48eeaa3f71e7a18f9f52fffa28cd3b2e1cbf1f79c0f562618b88c6','09c9b7ad4a75346542d465f8062b8a123189583682d56f2eaadd4281cdfd88af','80df10f6723ef6c81682c405e070e4bb84eaa183b2fbe3b35ea5132c41fc114b'); -INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'89f516c3fbdcd1540125561301db451fb55b1baead9ae8f408156075aed104ad','a687ce0f835b46b96abdf9a522ff9113db75569c94a55a08769407ae3c7b6725','05ffdb321b365b7523d5d5b57ebd8ba4fe0a48e053d904d67041321edb7ba528'); -INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'e9a37cfc1055e8c18d369896a14422cad3c5ac8d9b4d5aff6053d8e31dd56336','4e9d10b14bdbffb5abb8c561c413a90237612d44ad6200baf26049458e67cb77','5b1480ee1f032ed6056d7e5e76da83fb9df55aa0f233e9e3ddb3334d41ca41f2'); -INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'174c7c107c37e0ca2c907b1bc35e086eebbad8eb02493a2f166ff2279ecc013c','55b816c6724fc268aacc118bd97d20e4bd1deae6be8e6035f963a09494877aec','5a1cab5781b9493c4ea3871d4a2be91ba96e040dd570511059449a6c7b297c9a'); -INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'1463da3ebe264e703ecc0c708baa98f737b31f51726f85d3ac646f5e301b7c10','eb0e5c1fde8508cabc9b5b93365ac5d0ee4115cc8db51e691d7e64c0b095416a','3bd2d830c373c7acfb8bc23297636abf518aa2b7f5dc7914511307b96bd48902'); -INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'dfe8c57b4ce4ea12f002d11cfc127f95b7cea7727bcbaf64418b2d584602a250','d83417c5181d85f1c3e472deff6f8577b95458c35a38174f44b45851681a4e9c','8d25b0e3c852bbee1045d7d8272e443b935798be18a8a2987020d6cd110b81b7'); -INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'f9c936d3bb4c8bbc20e544d9262ffa3906fbaeca5e4b2e3b241f6059868f506e','0e46bd3384347994b40778bf0fbdf00adaf506b47caf5be36c475c35c1d40767','08ba7ffe0c88a6a9b9832a86b06b75cd85bac0b6f9d58180c7f215a0ea8a1c71'); -INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'490bfec10bfd72eca7fcbae5887b94ce4739454a82e601dc754e4e9d1030f3c2','d4d68ddad07f1c9ca7a1f3ea4e730dcde0261e305bd05b53836f4a56ecd11d62','a0671310688a3d2191d92a6f31f5dafa437d2abada11095622b0f1001c9176e6'); -INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'621d39c103bff9a76ada332f41e3ad54c89676bb6057f624942ddf28b31b5927','6ae5033a91543a50df6819aea2125edb7e9c0538b65711132036a834fb0e6e6c','b09cb46c2409a8fb74a6da9f2cde5191be4627b667b83a108a1027fb73222e91'); -INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'7d31be770d6bb6669bcb0a8a5964e57a758788cbbb942d1d3da1abd25b5dd158','e12eb3bf4d59247d7929072983a93080482d5bc5fbbb08547fc7112e89ed1ea5','51afbd5d2f6d01825af2bf3bf5173ebb070d712e17839408829eb59b8e9a19a8'); -INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'3aba9622f8de243bcd5e6a5c88fdf04a79a52d95bdc1778d57586b13f30e501c','07884366e0bbd044e037a338c34df3af396eae8192d4bf0a2d8b2dfaaee6e2eb','5f9e5ff6b7cab5fc13fbc512408b958671d3a463bd5ec225fab17930ef14cbff'); -INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'342e5dddd2289d3d6e381fade13e5a5e3ed27615b89bd8e06ea2bab8f8b48be8','bd462dd8b7626c26ade4f105bab0bd425008bd909c2cbfdc5e522b43833959b5','fb5a73bfd0c3d2501890f21cfb1c58359577999fa53c04e97350d6d82ca1800a'); -INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'51b904e6b18ce4d17bdc491457036ff3a4ba70789ae929862844e9456c3b9b01','2f6fd57d3249497293d1c5ceef8205ccd9830522cfdc2f4729716e6a23c294a9','7b1f7c6428f5b518384e8e61d6b0ca1c228f46295a501559351e3e3fbbc13d95'); -INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'03a60654bc84711524cb38171f6573acbe8cc2120787bd09e5ec621b2f53929c','4b87ba428a641e37a3065ab30405657d832fddd53c7b285f270eed424371fa77','1ac61daae356c5cb39265fe303f09dd0943359116163df1c2220a9f246b431e9'); -INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'a590602f34163cf8f880c3620f07a8cd27b9aeba8fc80ccb201d88364eaed210','2017c57c69e919f2a29aae866d669bfb729a529db46783244125ba372216b03e','536186b6d7d7c73b8376d4f2244cf2db63fe5eee77c18341dfc821002bd0a52f'); -INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'1b340e7abac4c458e6a0c6ff2abd6dadaa2913414f450cf926725b5253210950','81d77607d8a9dd42cbd4619080a40d8430259bc627d6382fabd23f12551f9bd1','a8f79b6df20ea54a3dfbffb41953707824c92b5b01929bbd40ad3e9c68c56c87'); -INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'5a5a31ae9b03a362b44c9e38effadfeac273bd370374ea4816b8402d6b8a8a1a','44567d82e8efd1cf59aff8f72f35af9d2241d5badf64743fc62c67f4a773861c','e64ab4d238a620ec47d8c6cd1bafb6883d0ecfb19bb9af54955fcf1709f6d404'); -INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'2005a300856ccc74efe80c56927fc13619d5c40ab03ae4ee4fba2050bc2a6b75','de522f82958b38c7b1895ed1100f6ac47b4a73a501fc0cfe27ab13696e1ee823','b2dbc359dc5e1471c782fd849f64a36416795219664ddc7b1a77bf802618f0df'); -INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'95307de52e23a8433143d79710e7df22ba7205e2651c88a2eda220ebc8e0f289','8523eb9831b89fe451ed92f3638dbc1a1ee33020655780bb75f2e3875c2b9b80','c0cc4c664f27fca22bd4b42b9dd13e2953afb10abaf2c35051e059375b40cd77'); -INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'de5a22c228bfc58ceaf428d55f180e951ff877537ef463821ce1206f07ab02f3','bcff3c59a1231e5efcee8ab9d72a7742472918b8f4468a0b902e600496b23a94','5381de5b163ad693d9344e49829ac5076b9876f431e3140a2d9bc3a8ddea0bc4'); -INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'e54da9db6c4911087dcfb2824acfd7429431e3297f6b5836dfa8f95165ac9b08','27918e4153347f2817ec57a6268e6c253de0ba352ee9dcf5752ed7598e386855','f365e25e1e792664e67d0c13029dc094826aa96c80f41d8ee8eb45b2b3956cc0'); -INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'dac63e0e407785c7a461d839ddd749f020f8a33026cd6ea2acd659567a36c40c','ef436fdbf4a138bb6fcbedee1060f73be657b004855105fd8e7ba8b9e3e05588','f11407e88ff414b828b0aa5fba3e50c34ccefdaf0dc633c4cc243b0ff7566ca4'); -INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'0397b7da62fb672aadb96fbdfc37f3265ea04c4d401632d5d9018b9b0ad7cd45','7d0b145b41e26fd22b682379ae5faddacc12c0bfeeaac2ca776d22b80abe2700','d845d2e9d5900e4037f96c03deb35704423a0ea0425d548c2fb5e638957ca0f4'); -INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'dbe43e77c383acc66cb46105991ed066ed5309434016081c26ca1a7dd948b6ce','6345f0e07ba4ef04bb0b3ea0914a0a37f2983765e30ca0a06f6cf6d7ff51d013','0665828b9be30fb8a81bdafd6ba6f5133dd72c950f45c36098cb492469e97c39'); -INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'ce1021a584895988014f16dd9f7b7b29bbe59ca8a761914f60c9290b5ec6a16f','c4ed3ed1c84a2ba54a65f8803b7782752192a488d2e78a4a661dafaa0f9e2339','52f935447f3120b13763ad0df5f0de88e907130cdd82d0dbfe5065e4510abbb6'); -INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'4a066ff12cf6f8dad894e23cfbb4fe6a087893b717b3f0c1ec53764b1e922bf4','32611f7d6cc6313ddd8fa617be8b2e74c9791b121450ddb57e955473fe8881a8','6bd3087e06b464c8e6d432e92ba4d7aa02c73484a4954d6eb755403d623ab0c9'); -INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'be1cc89117e7cb3fc18eb610103d72f144c31848da4d8001c334aac577f19427','82c2bb06d25941b701f0359ac54a03b19f0840d9379e8c6450c8ce79ac865dd6','6db5a6f49978de1ce5c8f9702f8aa8f4045102c69b823d7404320d5bbab5999b'); -INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'a616b3d81a1ad1db1a9b1491b06ff6bcead9037f75552d14a4c7234b6ff56670','5b8c90d0090727fb154dff7058cdd05e8fc72738472047484498725b023d6bf0','d09bbb6e1127f2eb84d4e2ebb273d86211a5e047877ffe1d34963646679e5bb3'); -INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'e7e76fe32ac5c06696c0bda815f29f1e0785a9d48641615f2ef78fa9982d258f','d54b4ce4a48ed27079f93dd84914ab01195eae85de760e1008ccd29088b23cf9','1191a1b4c248cec470d698ed5d79a15f9f5ccb78859cb3e153e2f8b500bc6893'); -INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'f0d33d2f73f83449c18b9a7bea43857b36effa24eb248283d9356c5280e4992f','ad9763e5508ab748f720be149c59a5a7749cd7f82bb4792ad0f5bef68a7257d7','475e07114a5ac9a093d673f5b573d9cc52e618847130cd47441542affbf2b0bf'); -INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'434d631a1c3ef7d31d136b4eab8b3044dc2b65886bf43642537cc592db0415a3','996ef4af76ce65a9484eb8d75491ab5ae52a3d7d3a68969a0ce8e877462fc1d2','de71642f42285f7355a69d6fcecf14069546216ec54586e37cb447ea81dce354'); -INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'5ca42816d9c6aaed19f6d25cd02e842b5d834254f90a169630544c83a129c7e5','ce05e0995b3c2d374a73ac78f82b287097d85a744104cb2c82c2f96a3728ae15','0801946ab00b7275faefad5cd816427a485f7661a900a67c5e129a9158ac4b2a'); -INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'31aecb842ea816f98aead90fed7ad005c010919a2ef2c5d7a8965b71832d3201','48d33ec6f13a4e9c8505cca0d8a0c70d41cd6c90776162ddb447f0b1be010565','9de7ac64d29c1cb5698f9dda7b69e75ae25fe3062ef6acba0e16d969ed2a626d'); -INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'7a3167eb2c8a80c7c363ac47200ebc8cb6bd53f57da64465bec14bd86cf2c6c7','5556bb8a7a29930bcb132c317bee113c8354d802aa457c189c922d6f54db19e1','77c0fc041a1bc7ed5e307af867b585766534c718a733d1441197088176b83a95'); -INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'212bc51956081e57aa618360926e186824dce8987948ee7706403451ab417a0a','02c86f2010334110aae8ad6fde17f49adbbce0243866cb2bb259d9b3e0d8c55f','1f91f6a5bd16e775c9e01a5c1e10b0a7776f2a690b3ab889839b095bbbef4f83'); -INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'03e72d7551164403b41956638a0fdec8703c29373ea2b15c770717b0ec39fa95','940c878c00eafbf64486d05dabd46ee7709e00b1ada2bfcc1a6dcf64a43e3b6f','fdc3c8aef2dfd6441abbc583ba395a3c1e21b33c2dbf2d7f36faf3a2021d5aa5'); -INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'922aa744aa0c08274d1f47a0f80638c7937ecaaf95555e68ceec09449e60d080','d6c456b12392c88cf2db2b2b5ad4c7de9fbefc2e63382efb0a8d2ce9bacc0867','5a43d6fabc7a23c20c3f350288f1ad0fa48084e75a45ee66ca4322921ca3b8ad'); -INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'de422fc7f3f11d20b697e0ee57afe101ddeb5e84105153a3bb10f97f9c3f1783','fa63afa51c58b0f53b50803aa7da751dfb520b0fc7717dd88a15d625adad0c4e','94154c99bce6ed9a2789cad8677c92d0f4eb69af444a9f2cd67fe3b3734957f5'); -INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'82d7c9a0c9d63c3f93b125a9eabc2a7b5f560eccc5fb578d71ec071f150c8fac','db3bd65c5034620c27a8b8e0fdf4a372dce91ac959e4d2a05b9450ef8f41f33d','5cd155eac46b9913431dd02ba48454dc7b0bf7d42df4a4d4faedbf2637ddb907'); -INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'c9232d9cfb183cc9bc09bef78f7c83bac3d9af803e6916c9b14063c4f619d9e6','b366291b0524f7ec2b0e67bd22a3a5b8f1ad951b04443b757d2dd1deed00c0cc','50f1bc064c789732fc54c7ba2ae628862931ce970423969e16c7aa6c80cefe19'); -INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'71c3e7aa2ad71e35b752dd4e48381b4ca845c370e5c340f2a221dde808966a45','52c843d901a720119bee7a3d9f1cb93d441d2e9c36f595f2ee855d56d890af32','e3efcd42114f90fa315afe8a9ecb5fe01a0e629ad9925d6957ab8dbc55663a08'); -INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'47230be2ba96e7adb6088b18788b52a65aa48183c2c00095b79999f5ea1af514','f791cccc7e0303b8da4e138ea7ee1691bc1e0c30cb8f4d0f704858d52c931df7','0109e60cbc54b884e2667519a02a86b005f3e0339d6057b286d3e08e8c61950d'); -INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'2c306c41049fba2e58a07b5d14f930bcaa465b2afa4df24d8a887958555f0c57','04767d7bb23119d6f73f8d4778d7f871cd45f85ed1cb417bda29c3a9e4302007','794e70094ce2eda6a37eb71e35f83a9abc2f3971de20ebe6c5d28031cfe56f94'); -INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'95a6325dcb8b9f7aef9da35bd20a46addef23aa5c36795beccacf992bee88d28','5cd1ce234d7b28034380e708db6d70705facfab09ef0d779d8d4f9c3cf3808e4','9ddcc92b76f26a7ed1789b71668611e851bb4fdd319967cb116062ba7f2b693c'); -INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'8811d6a6b22ff3e0ecf399dd20a28a17ad000e99b17f90e63e02230ed42cf260','40d3b2037ee52db0d6a467981272c8e17e782e8a0977d0d88ea4fbe916a08c45','92d3c3a3895ccc19ae60a10634fa6228eb71a85fa94b7bd0daeeb79c2aafbc97'); -INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'4bffe3d3071cee255f64108bd8b97652f06190cb73caac5bdc4ef61d3ff9ecd6','72774e6b3316ae1bf13b9fae04261001b7a2badb5af22e09a3f53f17121957aa','fbbf62c40c77389e395760c7341b03291ea8055e8871ca57dcf71e969a63f8e3'); -INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'b00d5001e914fde448457f3b373637385114eeb07d79751241f4c1f50cadc050','f9ec5b058571f11a1ec09509c4b8a0d6f2842dc0da0b280b21a8996b4e8fec57','51d76eec333d84af3eac5b81e64a38cb7968f1f44964159693354dc4635230f4'); -INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'90dd8fabe43314ac6ab6f5485275a4b1131c232a1e9d92395fc030659873edb8','1d5999315e56b7e8fb25eda2d44e74fb08a5db17e1e0ae392ca7a8d3d167fda2','5aad4484b57d4ad3f0d0f2ce14d60a335e4710d4e7e399344483c923c0ed6f67'); -INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'923848bdc7906ab89898021e05e201f69305087b12803c459f066f2d681fe9b5','d5888340709f07a7bd3dcf45ccdfabbd7978dbcf1c7373290c6e8011bac3ee18','c0ac81fb8d50615874960540aed258e8d121eb498b3d96d43791259cce8ad8ce'); -INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'e5ecdf8c0a2166fa8fe25adea0d374d34131d29a3c901868fec579eb20a5a930','b7cee56bbbde1611896b229bb9acb8180557a500a710fbf76954800d1972e07a','248e32485eddbcf82341842b14ce8529ff2537b67393153d8f8b4f24562df7ba'); -INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'03cd75c14bbe11800f4d436dce93235787e2521a19b1d5a90796a5de369680d1','2754a4f45e9b58f26f404a7a1bc9ec9c6dcc11500cd0a9ead1fbb975fe5d1ae3','a1ea1d8ec8427a816bb82ec14521c0833f9ff922dd368b61f2ea868bdfbc06ab'); -INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'7239560704ca831dfe90791f1cd21ae1f1506275cf6b45933676be9b096d340b','b1a61c78d43b0f83bd16756a0904a2254c8c425d01151b2b8be42d67b609df0a','464dbb6632d8d463150b1a4c5139cf12395f3684520b9281bda7f7daef191264'); -INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'3aa4ef8714cbb71c4f0b052dc7ec7795322103ba7b8361db3f33303f564f3815','e0556d0d2ea8325b271c620e24f6cf2b6b21079f4a5810743206b3f8beacfa3c','d531df02d9e847746ebdfde5e73d0e3ffb88a5504dcb0fe8088c0d205ef3a122'); -INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'fee33c0a466c580887106b4bb7a8c6aeb7a049c94987bae64f695ae400c4a4a1','b763577001dac0884e1383e14897ae1d66fa077efc39ec2bc418bc3a0ecc3cae','06b7e327e8a0c2e25543d6da41b2baf505d86ea68586ba9388300a2e9dea3f39'); -INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'94d58bd9a65a2e13c7ea2373e521952e916b0e1d31d803eced96e5c8903aa625','2e370e0ea52e578913762365fa1cb35fd68b9b89b9ed7d5668766383e9ca4380','e80dc096d2eecf694660d65890a743b9649ba8bf13e551890604741ec6364b78'); -INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'e9c87b2a652d4ef3d48ac74424f57d06dd85893fd542e0784df067c37396b0df','dce1c594c4ce441d0501b8d0cf739331c290eedcdeb534dab68133cce7031e2b','853b161627fe634d031aa1766d4d001bcfba061682eddba2ba0e77f70e423b86'); -INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'b664a0985edab20768aec36096a7b2faa159cef4af7e779ad421942137ee317a','7bb56d8872a45e5c94b8eb68169b314f960a27036a4921970a97eea065e9f36c','95090dc7540be2de280ef343de908472d9fd21c2e7d7e5c5c2f5f920680b87cb'); -INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'5ffa5e1f36c5539b2f5a89a6a60d45ec6372ced770d9b0e0e8dfd61edad84c22','d5b3a94a77fd34aa38df0a675655a14c5b25f50023ba99fac6fe679463fda638','001c316ddd3a2efffb8f10377c61a4b665110ed37ec93248d84c6b09653a9728'); -INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'fc6f9f23c3b8954c7989b0e4ce40087b66dceabc7c0e407ac7f4b397fe2a1281','c27998a53e88f9caaaeb71c72719813b5504dc6d8ef8dd9b1fac98952a90ed33','85b3ad9901a406b1fb088a1d3a15acb73fb3f9b277b5bc24234360ba20904a8a'); -INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'cc6c3b8cf2c457b2f6afb5b208f968544767be8b86ca53bdab4224619a03121d','a1bebc4fba5f7ae387dbda88b165661a2051a2c5d07e26a27cf2cb4ff2ddd80f','4edf2862493aca81c5d9067eddbed4035aa4e17d9c56300fcc927ad4e609a75b'); -INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'cc57ac6aec118ebfb03f5113ad1af749522e60ef4ca201d48bd43478cc0a29e4','98492c305f1225aefac55075cf8ce2a1ccc886d4907aaff2ccc8a6e2c0efc64d','c486cb9260d70b22c01f61b8d95e13312bf52984b961ba199c6a7b49b5dceb11'); -INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'9999be70079c0943f0a00c54236680bafe0c87dd3bb75c982211f751e7ecdcae','3d379ee114d6df26c75c0cd7025b6670c195bf36294c7c74a58c14ed3902fd5f','6bdc07d62e47788ac21a8705b8345b19d94442bc7db22832370c7e106b41336b'); -INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'efb2fcb7b5628bb99994bc1ada157bf80b4516d961497aa011c06da1523801d7','c129812ee41d3362ec50dd178635dc30bf423ce893d5741a2be9fea4c5faf9fc','4c76a2958d467319bddc1cca9fff13d56cd74761bbe065038873f189b1f5dd31'); -INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'fb396fca9af7816f97b22b8bf1b01951e271a75f1a640dfc64955696dc1c0b7d','f69c04d5913b1fb3b1bf4213c28a8ea08064863a06e791405b1f1993cf4cff90','27c7693e2903151b2dc8ec9645c0562da0c03c92dd6db8f5bf9c92f734147726'); -INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'6cbc681ed90e676cc507d07120888bd4c8759873a0b9215f721a0ce707070086','b9db78aceeeb0c9fd70302967317ad9eb8bde8b5a0f735098f3de26d3153829d','ce9d3bed8effb82fa5aa22b6697c322ff7d6468e156d59d544d154c397666201'); -INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'7cb734eb3e24e92de8915a6bea42b6ef721251c481ac9ec751cdbdc08e110011','210184d06b3d38fc5195c1006b125411af9f87f5f92f2b971e459fb859568309','6aacb7bf2cc5a1fcce08b02d721d0c19452d3459c2da4b13930d1ba04ecc8cba'); -INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'7b57a4d1ce0995a938e174e52a096cc9829a0ddd59f698ed04d8b43371a78126','35f40a9d7c29a8262f64ce3a51dfb4eb0d73d6b6c71e723fd5435f7b263c2f24','b7facc5233585011a2018b6c98f6d936b7acb4fb001fd5c12bbacc5b08e41706'); -INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'f46f820a64ced97ccf68a56c048459de0b2855ecd4299e447c4b630913ce1749','9f8d882e28fe07578836fa14a36fb51c277353811b45a7db22c0225083e6946d','96f2c8a0ab8b6fd74b92f98a1e6a6e07e74448482a3302d6b3c5bbf964310ff4'); -INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'878239189ae0afa759af5e59db8a17fd17c0c9a2c017384fd2d0ca789e738050','13a19c682894813748885a93fa31407601a0a4611ff909e1c83fb89c7079ecb7','7ca25aa8a88b77284302cbc0dbc628a61e59829ac94b04640b6a4031e0e44c5a'); -INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'d2d86823f727bc075138653a682373a9c76d21d48b5881968adb66042b501e53','e22360a69336335359d985f5d1b96804a6865c0a2f924d1353869a1246e05542','02daa2f94e97cec012e433ca0fdd7d80f595bfc74b0be1ec88dfa96820b486e5'); -INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'9fd098fcc7d71c0c46fc741ea278de92589c44a6efc4980ced53843193553ea8','2509c30b006fc92ac406a17075cff1a671ea0cd51a8422f0cd3566fc6a22f993','ef37263f49b3c6b32abb3c6199c7a64dc6f970ceb75c8e2341353a7bbfedfc48'); -INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'f1ad21f9b4134bc0225c26fb8969af3565c07997197a7ed9636c01f187f07042','424f9e101ff93d701423aee3fd6114cf215d2f3f9cf30a9e325cc436aa1a2cbf','6739531b55ac9d3e3f02f8a4ad524adb8622089c31023c00bef5f4ccb0e1f31a'); -INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'9a1f3de6b5a255720973fb0c93ae2bc8fe8936565140b8ae991b9d83f86a0002','8d4140259e13427308689148f024255c68a7bb7f4c53cd7d1de1275085904ddc','3a3057a383e90c7001589e1a94f03780c202c9b148f425ad4aa647940b6a2cdc'); -INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'ab56d9f59575b2d8ecc4933bbfa1fb0cb81c7a6fe84c1ba81bdee40c3da13164','440c3848f31a691a85345dd0a15ec798781ad7f952899cb0c4bb420f705861fd','20d734d4acd957874cd16816c4ca75768e4d96cf089c17327e4965b6621a699b'); -INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'8399d461b5079a145c716f8f6004d2f7870fe93786bd944fa36ef27134c9517c','8cf09c22847d3c71479cf55defb167cae36a0236f479b9d2dea79020a9b0e0c6','f11049367ee039c7089afb418f470f5866fbd5d48ff0afa9ae13199d6bb86284'); -INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'b6696a1511704128bbd5ec2c80a1d7d8d3bda6b959f1a674537ace152cb7f8bc','6678fb910f022440cfd81491e60a2d45ac6f64a08d23f77415d57794447b8ca0','135e4f2deea92e740e2c8b357b6d6d2053895fd29a9ae989c60012c1f2bced8d'); -INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'9aea0f996c36a815e4103b86ee7fc9be784d7c72549e54d04d84cf7fb8adfb78','a9d9de877aa630500dd2ad4e26d8841d5f6d56ca3212987021b71579f2ccdfe4','73cc03595726f04987d186ead958e82ee94772ec46ed98b48181841cb86b9962'); -INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'7571b554c5600796b60982bb6df3517eed517a2a3627f8383b92a073cc4a5872','f51b69c51a495df38ba9c401edd5fa59fc6daf988d4b5c5a0c4ef9bf90e23a84','10102c653d61750181ec9d8d1b7aba9d67f7c102356477f3d86495cf93e5539b'); -INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'b2507a73ff4f6998582daac667c457308ba78744e3d1d7533c0232092e3eab1f','3f53b457de8a2045900dc3c565d63f933bcfed3abed94eeac21181a82e05d645','1f0a0c3984ee3a0686dcb04573e88f9d9a056554f3057803b93a59d09f069d9f'); -INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'18566f22ffb9bc5f98712ef3234f8da84f8f3e382007b23c3bb8e6c910043746','48a2c98fad0072cf629389710fc551f4dabd22027ec3b9f80d0594e863622048','f356f0aef3ca5ab472d68382cd0bb46b31524f7209752a2f500e2fcdff56b03e'); -INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'72c44bddd5b54657623692e444bf893ca7b6d8da992c274bcbaa37c6db903825','e90374f0952369ee8c4e28eadf482d5f52ad709015c5f31038c85c50d9489862','5d8fffeb63d9a8bd8bc944c02d7d268a15c5aaead650604f89d60ddf9996e2a8'); -INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'1ddc441adb4b262862caf5b811b2375bd376d9b5d7b8ee251c4337478833cde9','9fd646bc946f80ff9d10f4b237de20d2227727642d6ef32365801f1a5821a7e1','c0b6ba2010115ba62d85d07364dbdc3ecb8259756495747b15c8fba3c9b26bd3'); -INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'b59447846d380cb8d32639ca13e6e396b68b18483f70b6380296bff65dced3d2','7352b3679273c64e0b1460470c224ea3657db0108b7ca1b4d96c70096b7227e8','fed0870ed301730775dc1656e1bc6f52a60e27bb1d20235492412872682be8ce'); -INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'54a1c32d20665e7ff92ea43451ff2e59a98136ad7da576fa6b2614dda700b707','faf246250b30f0e17363189e3d5e300be789d6e18c5c461da7ae0758b936e1fa','2a651523ca6c857927d14ea69664419e041f79e325bc4b43385879bc3b6003a5'); -INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'f0bef715c366843e002c75992b8d50d82a3ea54f144350f158e862eb03cb45dd','ee4ef4c97e0b98d0ce333197cc04fffa9e055aa43b8f92331138d095d9331f9d','6a00bd74629070a25c486ffe53e9299f67cae6c4a2d066bcb6d3d9087e85dabe'); -INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'0a4ce98b783b97f81fff9ab73d7a7091087e8511ebb425c81ccf60c3f9edbfd6','6587bd8104cb37098acf595917f14a8219d59bd815450c36d4f96e93b153238b','12d5326458accfa6351978700fe75b8fe76c9f0434e1171a70d20a5c4bf0e213'); -INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'f3b6781eebab3a6928791cf281d4ae7cb4f7fb59c6ae7575eba253e6ec6e447b','e3e5d5ac0a0111a5eb7a8ddf1c76e739b7aa1117a86155976f757a96df588ed1','55a5588e888d89ae21de04c56340a66bf20aaf71c7a25e15698273a9ee8d2b16'); -INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'14261b6b340632c469847700cee16c0163a7f8cad4dac7ad4555efeb5f3235fb','4f8ca0d151433892950f9d234eeb89bc45add047729800d8b4ff4985893ec5f1','6b93aca2b06759130da22a422f84b86c72f6ea9398d3cbeccb20914c1a5421b7'); -INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'3c033a502e1890e8a3c697e354cd1769e4300ce7f62ee7ac47a7201e1ad5de2c','fc68eaf741d4fd345c0fae295c13e7fdf1cea2fd256a46684628bd23a83591e9','06e1ccfbe84c662aaa22da0e692a1e522e3e68a1ecea70f381e4b32e81685623'); -INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'acc1dc4b7ec10c0989af833b57640be486035d76f74b57a50b023fb60f418be2','54e5e783a68288be3e021faae5358be66112e227bfe6ba3792bc9d81d6f9d4bc','aebc763b13f52317e11d563027b8bb22ecf69b3473eb6249ce0da54a104ca25f'); -INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'1443d97efeeb04291e117b152f1e18537035a59c80fabb574577cb3e66e5db59','22fec1b9240742e4453022b4065a4db16df1c5dbbca0f8a3bab62739ae7baa56','146241ab77cf40ea49190601acc615f73553631edddf77feb06bb91557885c64'); -INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'1c74208da191b965f52006e577c3f4df30f29b36b1d137ab457bbfe30737285d','6930042f19bc6e01bd5abae0df525a17ce332436f3de58a5ded6cfced17af969','648711226045d506e2eff79ae0075b4c761208c400339c352ca6bd7dee793bbc'); -INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'662e1b232c5afeba4df756a31d7b63f7f33dbb4aa752abbea9f0b57f1c7c4295','ff1cee5fc7d62421c6f658c0c9a16a502a82ea00a33c57eeef759fcac6df5dd8','119a0d95875b1e051959d8fe60d1e204e85a8a86a4af1485d7410b929687d065'); -INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'8a1b60657764a35ce95c9e215600f63f0fc8c4933c682ea017553010743c97a2','fcffd75e0e68389b1f12726e9a9da46d8179e2d64adbae32ee8252c41a86874f','0c9651dd51cb9f1cda0b8fe3a74e3ab47367aa02dd8ac5bef62c0e77efa46566'); -INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'c2e25d20f3c50a67a4268d9aa3e386c92e5217cf8f106d2affaae19e49b48828','343177b22ef591d71a9c89de7687c23da3fd7106f75be35703eed127b6612fee','360ff6e5b704971ee92f956131441dfb2f6ac18028cf0a06282e3a249fd1dfc9'); -INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'bd7479caeb388072138c99d19624e495200df1bf02f47caf0ae8a5007fd9dfce','f8d9489d82467e8f21257e8fb3e626dd73a8a079ccee0bd38b46a88ccbef1db0','c08c6594b8ad881b09e451697b70d2f5126cfd2fb2273a84c94ffd3fdcded401'); -INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'ddb8394df96a37e0127c8894e669072cb195ac953e2a3e922b95bf40804820b6','118002b7d4bce9c66d3694ed189720cfdcb03d988f90cae058f3c37cc525108f','97ddd7f8b8104267700f8f6f20cc3ae82dc08770f2deabefcb7a7646f08e5ce1'); -INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'3ed7694459a57281ba8e4159ce156333aae4b596aa3ab5193ea6c1901f2c9667','11eae93617af0050af68afdafb6f5b9ae3e08fdd957ead00ef3a31088f3ff271','b6e6cad33b4491d8e8ca51f5ac28cc64c35dd3a2fbd33183b9e67c64fb9ab0f2'); --- Triggers and indices on blocks -CREATE INDEX block_index_idx ON blocks (block_index); -CREATE INDEX index_hash_idx ON blocks (block_index, block_hash); - --- Table broadcasts -DROP TABLE IF EXISTS broadcasts; -CREATE TABLE broadcasts( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - timestamp INTEGER, - value REAL, - fee_fraction_int INTEGER, - text TEXT, - locked BOOL, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO broadcasts VALUES(12,'5b3e51c27276d5f933b34b535d7d51eb216c78ca41353cb63b8d9c09c41439b9',310011,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000000,100.0,99999999,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(19,'5ca432dd1c3654efadff3a154455b91057d1f03c909da6e7e75a234fd764006c',310018,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000050,99.86166,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(20,'6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be',310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000101,100.343,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(21,'a847674ee4d69fb3975c0758e9f3201bc0d70b7d95051dc485b925df12633008',310020,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000201,2.0,5000000,'Unit Test',0,'valid'); --- Triggers and indices on broadcasts -CREATE TRIGGER _broadcasts_delete BEFORE DELETE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO broadcasts(rowid,tx_index,tx_hash,block_index,source,timestamp,value,fee_fraction_int,text,locked,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.timestamp)||','||quote(old.value)||','||quote(old.fee_fraction_int)||','||quote(old.text)||','||quote(old.locked)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _broadcasts_insert AFTER INSERT ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM broadcasts WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _broadcasts_update AFTER UPDATE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE broadcasts SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',timestamp='||quote(old.timestamp)||',value='||quote(old.value)||',fee_fraction_int='||quote(old.fee_fraction_int)||',text='||quote(old.text)||',locked='||quote(old.locked)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_source_idx ON broadcasts (status, source); -CREATE INDEX status_source_index_idx ON broadcasts (status, source, tx_index); -CREATE INDEX timestamp_idx ON broadcasts (timestamp); - --- Table btcpays -DROP TABLE IF EXISTS btcpays; -CREATE TABLE btcpays( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - order_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO btcpays VALUES(5,'7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e',310004,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',50000000,'cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052_beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754','valid'); --- Triggers and indices on btcpays -CREATE TRIGGER _btcpays_delete BEFORE DELETE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO btcpays(rowid,tx_index,tx_hash,block_index,source,destination,btc_amount,order_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.btc_amount)||','||quote(old.order_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _btcpays_insert AFTER INSERT ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM btcpays WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _btcpays_update AFTER UPDATE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE btcpays SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',btc_amount='||quote(old.btc_amount)||',order_match_id='||quote(old.order_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table burns -DROP TABLE IF EXISTS burns; -CREATE TABLE burns( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - burned INTEGER, - earned INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO burns VALUES(1,'63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2',310000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',62000000,93000000000,'valid'); -INSERT INTO burns VALUES(23,'ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa',310022,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',38000000,56999887262,'valid'); --- Triggers and indices on burns -CREATE TRIGGER _burns_delete BEFORE DELETE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO burns(rowid,tx_index,tx_hash,block_index,source,burned,earned,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.burned)||','||quote(old.earned)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _burns_insert AFTER INSERT ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM burns WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _burns_update AFTER UPDATE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE burns SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',burned='||quote(old.burned)||',earned='||quote(old.earned)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table cancels -DROP TABLE IF EXISTS cancels; -CREATE TABLE cancels( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - offer_hash TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on cancels -CREATE TRIGGER _cancels_delete BEFORE DELETE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO cancels(rowid,tx_index,tx_hash,block_index,source,offer_hash,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.offer_hash)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _cancels_insert AFTER INSERT ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM cancels WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _cancels_update AFTER UPDATE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE cancels SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',offer_hash='||quote(old.offer_hash)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX cancels_block_index_idx ON cancels (block_index); - --- Table credits -DROP TABLE IF EXISTS credits; -CREATE TABLE credits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - calling_function TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO credits VALUES(310000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',93000000000,'burn','63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2'); -INSERT INTO credits VALUES(310001,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,'send','638358ddca7a4365d07b633926d55a399bc0e8b164fc820d9b35a223effe6d65'); -INSERT INTO credits VALUES(310004,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',100000000,'btcpay','7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e'); -INSERT INTO credits VALUES(310005,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',1000000000,'issuance','78ec308733a3253206ea1376339dd274905f224c5bbe9dbd1490713c1e74a7f3'); -INSERT INTO credits VALUES(310006,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',100000,'issuance','febe15f0f2b362f711644e76d6cfa0bd1a6cbec29bb585f196c5c2594e38bd37'); -INSERT INTO credits VALUES(310007,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,'send','633e9ffcf75ac19b5c6ece4b676cbc2636abc8cf9e8a3ab408e045f4a8e9d30f'); -INSERT INTO credits VALUES(310008,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,'send','7166a8cde54b81c99f128c66a689569197db05883e1bf4e899eabea9f9f450b1'); -INSERT INTO credits VALUES(310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',24,'dividend','76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe'); -INSERT INTO credits VALUES(310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',420800,'dividend','555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f'); -INSERT INTO credits VALUES(310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',4250000,'filled','e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c'); -INSERT INTO credits VALUES(310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',5000000,'cancel order','beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754'); -INSERT INTO credits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a'); -INSERT INTO credits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a'); -INSERT INTO credits VALUES(310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2'); -INSERT INTO credits VALUES(310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2'); -INSERT INTO credits VALUES(310018,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',59137500,'bet settled: liquidated for bear','5ca432dd1c3654efadff3a154455b91057d1f03c909da6e7e75a234fd764006c'); -INSERT INTO credits VALUES(310018,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',3112500,'feed fee','5ca432dd1c3654efadff3a154455b91057d1f03c909da6e7e75a234fd764006c'); -INSERT INTO credits VALUES(310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',159300000,'bet settled','6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be'); -INSERT INTO credits VALUES(310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',315700000,'bet settled','6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be'); -INSERT INTO credits VALUES(310019,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',25000000,'feed fee','6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be'); -INSERT INTO credits VALUES(310020,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',1330000000,'bet settled: for notequal','a847674ee4d69fb3975c0758e9f3201bc0d70b7d95051dc485b925df12633008'); -INSERT INTO credits VALUES(310020,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',70000000,'feed fee','a847674ee4d69fb3975c0758e9f3201bc0d70b7d95051dc485b925df12633008'); -INSERT INTO credits VALUES(310022,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',56999887262,'burn','ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa'); -INSERT INTO credits VALUES(310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',8500000,'recredit wager remaining','d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9'); -INSERT INTO credits VALUES(310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10000,'send','44adc2e3482afd40ae413fd44c5e310b3a1ad06b21d620b493de3b7232d81725'); -INSERT INTO credits VALUES(310032,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,'cancel order','c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e'); --- Triggers and indices on credits -CREATE TRIGGER _credits_delete BEFORE DELETE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO credits(rowid,block_index,address,asset,quantity,calling_function,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.calling_function)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _credits_insert AFTER INSERT ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM credits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _credits_update AFTER UPDATE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE credits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',calling_function='||quote(old.calling_function)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; - --- Table debits -DROP TABLE IF EXISTS debits; -CREATE TABLE debits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - action TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO debits VALUES(310001,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'send','638358ddca7a4365d07b633926d55a399bc0e8b164fc820d9b35a223effe6d65'); -INSERT INTO debits VALUES(310003,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,'open order','beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754'); -INSERT INTO debits VALUES(310005,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'issuance fee','78ec308733a3253206ea1376339dd274905f224c5bbe9dbd1490713c1e74a7f3'); -INSERT INTO debits VALUES(310006,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'issuance fee','febe15f0f2b362f711644e76d6cfa0bd1a6cbec29bb585f196c5c2594e38bd37'); -INSERT INTO debits VALUES(310007,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',4000000,'send','633e9ffcf75ac19b5c6ece4b676cbc2636abc8cf9e8a3ab408e045f4a8e9d30f'); -INSERT INTO debits VALUES(310008,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',526,'send','7166a8cde54b81c99f128c66a689569197db05883e1bf4e899eabea9f9f450b1'); -INSERT INTO debits VALUES(310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',24,'dividend','76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe'); -INSERT INTO debits VALUES(310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',20000,'dividend fee','76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe'); -INSERT INTO debits VALUES(310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',420800,'dividend','555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f'); -INSERT INTO debits VALUES(310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',20000,'dividend fee','555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f'); -INSERT INTO debits VALUES(310012,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'bet','d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9'); -INSERT INTO debits VALUES(310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',25000000,'bet','e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c'); -INSERT INTO debits VALUES(310014,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',150000000,'bet','e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c'); -INSERT INTO debits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',350000000,'bet','d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a'); -INSERT INTO debits VALUES(310016,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',750000000,'bet','38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e'); -INSERT INTO debits VALUES(310017,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',650000000,'bet','878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2'); -INSERT INTO debits VALUES(310021,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,'open order','c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e'); -INSERT INTO debits VALUES(310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',10000,'send','44adc2e3482afd40ae413fd44c5e310b3a1ad06b21d620b493de3b7232d81725'); --- Triggers and indices on debits -CREATE TRIGGER _debits_delete BEFORE DELETE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO debits(rowid,block_index,address,asset,quantity,action,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.action)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _debits_insert AFTER INSERT ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM debits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _debits_update AFTER UPDATE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE debits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',action='||quote(old.action)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_idx ON debits (address); -CREATE INDEX asset_idx ON debits (asset); - --- Table destructions -DROP TABLE IF EXISTS destructions; -CREATE TABLE destructions( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset INTEGER, - quantity INTEGER, - tag TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on destructions -CREATE TRIGGER _destructions_delete BEFORE DELETE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO destructions(rowid,tx_index,tx_hash,block_index,source,asset,quantity,tag,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.tag)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _destructions_insert AFTER INSERT ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM destructions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _destructions_update AFTER UPDATE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE destructions SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',tag='||quote(old.tag)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_idx ON destructions (status); - --- Table dispensers -DROP TABLE IF EXISTS dispensers; -CREATE TABLE dispensers( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - give_quantity INTEGER, - escrow_quantity INTEGER, - satoshirate INTEGER, - status INTEGER, - give_remaining INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispensers -CREATE TRIGGER _dispensers_delete BEFORE DELETE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispensers(rowid,tx_index,tx_hash,block_index,source,asset,give_quantity,escrow_quantity,satoshirate,status,give_remaining) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.give_quantity)||','||quote(old.escrow_quantity)||','||quote(old.satoshirate)||','||quote(old.status)||','||quote(old.give_remaining)||')'); - END; -CREATE TRIGGER _dispensers_insert AFTER INSERT ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispensers WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispensers_update AFTER UPDATE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispensers SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',give_quantity='||quote(old.give_quantity)||',escrow_quantity='||quote(old.escrow_quantity)||',satoshirate='||quote(old.satoshirate)||',status='||quote(old.status)||',give_remaining='||quote(old.give_remaining)||' WHERE rowid='||old.rowid); - END; - --- Table dispenses -DROP TABLE IF EXISTS dispenses; -CREATE TABLE dispenses( - tx_index INTEGER, - dispense_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - dispense_quantity INTEGER, - dispenser_tx_hash TEXT, - PRIMARY KEY (tx_index, dispense_index, source, destination), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispenses -CREATE TRIGGER _dispenses_delete BEFORE DELETE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispenses(rowid,tx_index,dispense_index,tx_hash,block_index,source,destination,asset,dispense_quantity,dispenser_tx_hash) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.dispense_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.dispense_quantity)||','||quote(old.dispenser_tx_hash)||')'); - END; -CREATE TRIGGER _dispenses_insert AFTER INSERT ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispenses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispenses_update AFTER UPDATE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispenses SET tx_index='||quote(old.tx_index)||',dispense_index='||quote(old.dispense_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',dispense_quantity='||quote(old.dispense_quantity)||',dispenser_tx_hash='||quote(old.dispenser_tx_hash)||' WHERE rowid='||old.rowid); - END; - --- Table dividends -DROP TABLE IF EXISTS dividends; -CREATE TABLE dividends( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - dividend_asset TEXT, - quantity_per_unit INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO dividends VALUES(10,'76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe',310009,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB','XCP',600,20000,'valid'); -INSERT INTO dividends VALUES(11,'555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f',310010,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC','XCP',800,20000,'valid'); --- Triggers and indices on dividends -CREATE TRIGGER _dividends_delete BEFORE DELETE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dividends(rowid,tx_index,tx_hash,block_index,source,asset,dividend_asset,quantity_per_unit,fee_paid,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.dividend_asset)||','||quote(old.quantity_per_unit)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _dividends_insert AFTER INSERT ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dividends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dividends_update AFTER UPDATE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dividends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',dividend_asset='||quote(old.dividend_asset)||',quantity_per_unit='||quote(old.quantity_per_unit)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table issuances -DROP TABLE IF EXISTS issuances; -CREATE TABLE "issuances"( - tx_index INTEGER, - tx_hash TEXT, - msg_index INTEGER DEFAULT 0, - block_index INTEGER, - asset TEXT, - quantity INTEGER, - divisible BOOL, - source TEXT, - issuer TEXT, - transfer BOOL, - callable BOOL, - call_date INTEGER, - call_price REAL, - description TEXT, - fee_paid INTEGER, - locked BOOL, - status TEXT, - asset_longname TEXT, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index)); -INSERT INTO issuances VALUES(6,'78ec308733a3253206ea1376339dd274905f224c5bbe9dbd1490713c1e74a7f3',0,310005,'BBBB',1000000000,1,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,0,0,0.0,'',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(7,'febe15f0f2b362f711644e76d6cfa0bd1a6cbec29bb585f196c5c2594e38bd37',0,310006,'BBBC',100000,0,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,0,0,0.0,'foobar',50000000,0,'valid',NULL); --- Triggers and indices on issuances -CREATE TRIGGER _issuances_delete BEFORE DELETE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO issuances(rowid,tx_index,tx_hash,msg_index,block_index,asset,quantity,divisible,source,issuer,transfer,callable,call_date,call_price,description,fee_paid,locked,status,asset_longname) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.msg_index)||','||quote(old.block_index)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.divisible)||','||quote(old.source)||','||quote(old.issuer)||','||quote(old.transfer)||','||quote(old.callable)||','||quote(old.call_date)||','||quote(old.call_price)||','||quote(old.description)||','||quote(old.fee_paid)||','||quote(old.locked)||','||quote(old.status)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _issuances_insert AFTER INSERT ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM issuances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _issuances_update AFTER UPDATE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE issuances SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',msg_index='||quote(old.msg_index)||',block_index='||quote(old.block_index)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',divisible='||quote(old.divisible)||',source='||quote(old.source)||',issuer='||quote(old.issuer)||',transfer='||quote(old.transfer)||',callable='||quote(old.callable)||',call_date='||quote(old.call_date)||',call_price='||quote(old.call_price)||',description='||quote(old.description)||',fee_paid='||quote(old.fee_paid)||',locked='||quote(old.locked)||',status='||quote(old.status)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_asset_idx ON issuances (asset, status); - --- Table mempool -DROP TABLE IF EXISTS mempool; -CREATE TABLE mempool( - tx_hash TEXT, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); - --- Table messages -DROP TABLE IF EXISTS messages; -CREATE TABLE messages( - message_index INTEGER PRIMARY KEY, - block_index INTEGER, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); -INSERT INTO messages VALUES(0,310000,'insert','credits','{"action": "burn", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310000, "event": "63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2", "quantity": 93000000000}',0); -INSERT INTO messages VALUES(1,310000,'insert','burns','{"block_index": 310000, "burned": 62000000, "earned": 93000000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2", "tx_index": 1}',0); -INSERT INTO messages VALUES(2,310001,'insert','debits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310001, "event": "638358ddca7a4365d07b633926d55a399bc0e8b164fc820d9b35a223effe6d65", "quantity": 50000000}',0); -INSERT INTO messages VALUES(3,310001,'insert','credits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "XCP", "block_index": 310001, "event": "638358ddca7a4365d07b633926d55a399bc0e8b164fc820d9b35a223effe6d65", "quantity": 50000000}',0); -INSERT INTO messages VALUES(4,310001,'insert','sends','{"asset": "XCP", "block_index": 310001, "destination": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "quantity": 50000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "638358ddca7a4365d07b633926d55a399bc0e8b164fc820d9b35a223effe6d65", "tx_index": 2}',0); -INSERT INTO messages VALUES(5,310002,'insert','orders','{"block_index": 310002, "expiration": 10, "expire_index": 310012, "fee_provided": 1000000, "fee_provided_remaining": 1000000, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "BTC", "give_quantity": 50000000, "give_remaining": 50000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "tx_hash": "cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052", "tx_index": 3}',0); -INSERT INTO messages VALUES(6,310003,'insert','debits','{"action": "open order", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310003, "event": "beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754", "quantity": 105000000}',0); -INSERT INTO messages VALUES(7,310003,'insert','orders','{"block_index": 310003, "expiration": 10, "expire_index": 310013, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 900000, "fee_required_remaining": 900000, "get_asset": "BTC", "get_quantity": 50000000, "get_remaining": 50000000, "give_asset": "XCP", "give_quantity": 105000000, "give_remaining": 105000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "tx_hash": "beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754", "tx_index": 4}',0); -INSERT INTO messages VALUES(8,310003,'update','orders','{"fee_provided_remaining": 142858, "fee_required_remaining": 0, "get_remaining": 0, "give_remaining": 0, "status": "open", "tx_hash": "cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052"}',0); -INSERT INTO messages VALUES(9,310003,'update','orders','{"fee_provided_remaining": 6800, "fee_required_remaining": 42858, "get_remaining": 0, "give_remaining": 5000000, "status": "open", "tx_hash": "beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754"}',0); -INSERT INTO messages VALUES(10,310003,'insert','order_matches','{"backward_asset": "XCP", "backward_quantity": 100000000, "block_index": 310003, "fee_paid": 857142, "forward_asset": "BTC", "forward_quantity": 50000000, "id": "cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052_beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754", "match_expire_index": 310023, "status": "pending", "tx0_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx0_block_index": 310002, "tx0_expiration": 10, "tx0_hash": "cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052", "tx0_index": 3, "tx1_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx1_block_index": 310003, "tx1_expiration": 10, "tx1_hash": "beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754", "tx1_index": 4}',0); -INSERT INTO messages VALUES(11,310004,'insert','credits','{"action": "btcpay", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310004, "event": "7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e", "quantity": 100000000}',0); -INSERT INTO messages VALUES(12,310004,'update','order_matches','{"order_match_id": "cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052_beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754", "status": "completed"}',0); -INSERT INTO messages VALUES(13,310004,'insert','btcpays','{"block_index": 310004, "btc_amount": 50000000, "destination": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "order_match_id": "cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052_beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754", "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e", "tx_index": 5}',0); -INSERT INTO messages VALUES(14,310005,'insert','debits','{"action": "issuance fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310005, "event": "78ec308733a3253206ea1376339dd274905f224c5bbe9dbd1490713c1e74a7f3", "quantity": 50000000}',0); -INSERT INTO messages VALUES(15,310005,'insert','issuances','{"asset": "BBBB", "asset_longname": null, "block_index": 310005, "call_date": 0, "call_price": 0.0, "callable": false, "description": "", "divisible": true, "fee_paid": 50000000, "issuer": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "locked": false, "quantity": 1000000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "transfer": false, "tx_hash": "78ec308733a3253206ea1376339dd274905f224c5bbe9dbd1490713c1e74a7f3", "tx_index": 6}',0); -INSERT INTO messages VALUES(16,310005,'insert','credits','{"action": "issuance", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBB", "block_index": 310005, "event": "78ec308733a3253206ea1376339dd274905f224c5bbe9dbd1490713c1e74a7f3", "quantity": 1000000000}',0); -INSERT INTO messages VALUES(17,310006,'insert','debits','{"action": "issuance fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310006, "event": "febe15f0f2b362f711644e76d6cfa0bd1a6cbec29bb585f196c5c2594e38bd37", "quantity": 50000000}',0); -INSERT INTO messages VALUES(18,310006,'insert','issuances','{"asset": "BBBC", "asset_longname": null, "block_index": 310006, "call_date": 0, "call_price": 0.0, "callable": false, "description": "foobar", "divisible": false, "fee_paid": 50000000, "issuer": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "locked": false, "quantity": 100000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "transfer": false, "tx_hash": "febe15f0f2b362f711644e76d6cfa0bd1a6cbec29bb585f196c5c2594e38bd37", "tx_index": 7}',0); -INSERT INTO messages VALUES(19,310006,'insert','credits','{"action": "issuance", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBC", "block_index": 310006, "event": "febe15f0f2b362f711644e76d6cfa0bd1a6cbec29bb585f196c5c2594e38bd37", "quantity": 100000}',0); -INSERT INTO messages VALUES(20,310007,'insert','debits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBB", "block_index": 310007, "event": "633e9ffcf75ac19b5c6ece4b676cbc2636abc8cf9e8a3ab408e045f4a8e9d30f", "quantity": 4000000}',0); -INSERT INTO messages VALUES(21,310007,'insert','credits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "BBBB", "block_index": 310007, "event": "633e9ffcf75ac19b5c6ece4b676cbc2636abc8cf9e8a3ab408e045f4a8e9d30f", "quantity": 4000000}',0); -INSERT INTO messages VALUES(22,310007,'insert','sends','{"asset": "BBBB", "block_index": 310007, "destination": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "quantity": 4000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "633e9ffcf75ac19b5c6ece4b676cbc2636abc8cf9e8a3ab408e045f4a8e9d30f", "tx_index": 8}',0); -INSERT INTO messages VALUES(23,310008,'insert','debits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBC", "block_index": 310008, "event": "7166a8cde54b81c99f128c66a689569197db05883e1bf4e899eabea9f9f450b1", "quantity": 526}',0); -INSERT INTO messages VALUES(24,310008,'insert','credits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "BBBC", "block_index": 310008, "event": "7166a8cde54b81c99f128c66a689569197db05883e1bf4e899eabea9f9f450b1", "quantity": 526}',0); -INSERT INTO messages VALUES(25,310008,'insert','sends','{"asset": "BBBC", "block_index": 310008, "destination": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "quantity": 526, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "7166a8cde54b81c99f128c66a689569197db05883e1bf4e899eabea9f9f450b1", "tx_index": 9}',0); -INSERT INTO messages VALUES(26,310009,'insert','debits','{"action": "dividend", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310009, "event": "76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe", "quantity": 24}',0); -INSERT INTO messages VALUES(27,310009,'insert','debits','{"action": "dividend fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310009, "event": "76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe", "quantity": 20000}',0); -INSERT INTO messages VALUES(28,310009,'insert','credits','{"action": "dividend", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "XCP", "block_index": 310009, "event": "76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe", "quantity": 24}',0); -INSERT INTO messages VALUES(29,310009,'insert','dividends','{"asset": "BBBB", "block_index": 310009, "dividend_asset": "XCP", "fee_paid": 20000, "quantity_per_unit": 600, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe", "tx_index": 10}',0); -INSERT INTO messages VALUES(30,310010,'insert','debits','{"action": "dividend", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310010, "event": "555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f", "quantity": 420800}',0); -INSERT INTO messages VALUES(31,310010,'insert','debits','{"action": "dividend fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310010, "event": "555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f", "quantity": 20000}',0); -INSERT INTO messages VALUES(32,310010,'insert','credits','{"action": "dividend", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "XCP", "block_index": 310010, "event": "555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f", "quantity": 420800}',0); -INSERT INTO messages VALUES(33,310010,'insert','dividends','{"asset": "BBBC", "block_index": 310010, "dividend_asset": "XCP", "fee_paid": 20000, "quantity_per_unit": 800, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f", "tx_index": 11}',0); -INSERT INTO messages VALUES(34,310011,'insert','broadcasts','{"block_index": 310011, "fee_fraction_int": 99999999, "locked": false, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "text": "Unit Test", "timestamp": 1388000000, "tx_hash": "5b3e51c27276d5f933b34b535d7d51eb216c78ca41353cb63b8d9c09c41439b9", "tx_index": 12, "value": 100.0}',0); -INSERT INTO messages VALUES(35,310012,'insert','debits','{"action": "bet", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310012, "event": "d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9", "quantity": 50000000}',0); -INSERT INTO messages VALUES(36,310012,'insert','bets','{"bet_type": 0, "block_index": 310012, "counterwager_quantity": 25000000, "counterwager_remaining": 25000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310022, "fee_fraction_int": 99999999.0, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 15120, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 0.0, "tx_hash": "d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9", "tx_index": 13, "wager_quantity": 50000000, "wager_remaining": 50000000}',0); -INSERT INTO messages VALUES(37,310013,'update','orders','{"status": "expired", "tx_hash": "cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052"}',0); -INSERT INTO messages VALUES(38,310013,'insert','order_expirations','{"block_index": 310013, "order_hash": "cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052", "order_index": 3, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3"}',0); -INSERT INTO messages VALUES(39,310013,'insert','debits','{"action": "bet", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310013, "event": "e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c", "quantity": 25000000}',0); -INSERT INTO messages VALUES(40,310013,'insert','bets','{"bet_type": 1, "block_index": 310013, "counterwager_quantity": 41500000, "counterwager_remaining": 41500000, "deadline": 1388000100, "expiration": 10, "expire_index": 310023, "fee_fraction_int": 99999999.0, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 15120, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 0.0, "tx_hash": "e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c", "tx_index": 14, "wager_quantity": 25000000, "wager_remaining": 25000000}',0); -INSERT INTO messages VALUES(41,310013,'update','bets','{"counterwager_remaining": 4250000, "status": "open", "tx_hash": "d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9", "wager_remaining": 8500000}',0); -INSERT INTO messages VALUES(42,310013,'insert','credits','{"action": "filled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310013, "event": "e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c", "quantity": 4250000}',0); -INSERT INTO messages VALUES(43,310013,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c", "wager_remaining": 4250000}',0); -INSERT INTO messages VALUES(44,310013,'insert','bet_matches','{"backward_quantity": 20750000, "block_index": 310013, "deadline": 1388000100, "fee_fraction_int": 99999999, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "forward_quantity": 41500000, "id": "d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9_e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c", "initial_value": 100.0, "leverage": 15120, "match_expire_index": 310022, "status": "pending", "target_value": 0.0, "tx0_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx0_bet_type": 0, "tx0_block_index": 310012, "tx0_expiration": 10, "tx0_hash": "d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9", "tx0_index": 13, "tx1_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx1_bet_type": 1, "tx1_block_index": 310013, "tx1_expiration": 10, "tx1_hash": "e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c", "tx1_index": 14}',0); -INSERT INTO messages VALUES(45,310014,'update','orders','{"status": "expired", "tx_hash": "beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754"}',0); -INSERT INTO messages VALUES(46,310014,'insert','credits','{"action": "cancel order", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310014, "event": "beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754", "quantity": 5000000}',0); -INSERT INTO messages VALUES(47,310014,'insert','order_expirations','{"block_index": 310014, "order_hash": "beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754", "order_index": 4, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3"}',0); -INSERT INTO messages VALUES(48,310014,'insert','debits','{"action": "bet", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310014, "event": "e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c", "quantity": 150000000}',0); -INSERT INTO messages VALUES(49,310014,'insert','bets','{"bet_type": 0, "block_index": 310014, "counterwager_quantity": 350000000, "counterwager_remaining": 350000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310024, "fee_fraction_int": 99999999.0, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 5040, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 0.0, "tx_hash": "e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c", "tx_index": 15, "wager_quantity": 150000000, "wager_remaining": 150000000}',0); -INSERT INTO messages VALUES(50,310015,'insert','debits','{"action": "bet", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310015, "event": "d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a", "quantity": 350000000}',0); -INSERT INTO messages VALUES(51,310015,'insert','bets','{"bet_type": 1, "block_index": 310015, "counterwager_quantity": 150000000, "counterwager_remaining": 150000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310025, "fee_fraction_int": 99999999.0, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 5040, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 0.0, "tx_hash": "d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a", "tx_index": 16, "wager_quantity": 350000000, "wager_remaining": 350000000}',0); -INSERT INTO messages VALUES(52,310015,'insert','credits','{"action": "filled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310015, "event": "d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a", "quantity": 0}',0); -INSERT INTO messages VALUES(53,310015,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(54,310015,'insert','credits','{"action": "filled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310015, "event": "d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a", "quantity": 0}',0); -INSERT INTO messages VALUES(55,310015,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(56,310015,'insert','bet_matches','{"backward_quantity": 350000000, "block_index": 310015, "deadline": 1388000100, "fee_fraction_int": 99999999, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "forward_quantity": 150000000, "id": "e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c_d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a", "initial_value": 100.0, "leverage": 5040, "match_expire_index": 310024, "status": "pending", "target_value": 0.0, "tx0_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx0_bet_type": 0, "tx0_block_index": 310014, "tx0_expiration": 10, "tx0_hash": "e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c", "tx0_index": 15, "tx1_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx1_bet_type": 1, "tx1_block_index": 310015, "tx1_expiration": 10, "tx1_hash": "d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a", "tx1_index": 16}',0); -INSERT INTO messages VALUES(57,310016,'insert','debits','{"action": "bet", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310016, "event": "38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e", "quantity": 750000000}',0); -INSERT INTO messages VALUES(58,310016,'insert','bets','{"bet_type": 2, "block_index": 310016, "counterwager_quantity": 650000000, "counterwager_remaining": 650000000, "deadline": 1388000200, "expiration": 10, "expire_index": 310026, "fee_fraction_int": 99999999.0, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 5040, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 1.0, "tx_hash": "38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e", "tx_index": 17, "wager_quantity": 750000000, "wager_remaining": 750000000}',0); -INSERT INTO messages VALUES(59,310017,'insert','debits','{"action": "bet", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310017, "event": "878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2", "quantity": 650000000}',0); -INSERT INTO messages VALUES(60,310017,'insert','bets','{"bet_type": 3, "block_index": 310017, "counterwager_quantity": 750000000, "counterwager_remaining": 750000000, "deadline": 1388000200, "expiration": 10, "expire_index": 310027, "fee_fraction_int": 99999999.0, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 5040, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 1.0, "tx_hash": "878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2", "tx_index": 18, "wager_quantity": 650000000, "wager_remaining": 650000000}',0); -INSERT INTO messages VALUES(61,310017,'insert','credits','{"action": "filled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310017, "event": "878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2", "quantity": 0}',0); -INSERT INTO messages VALUES(62,310017,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(63,310017,'insert','credits','{"action": "filled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310017, "event": "878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2", "quantity": 0}',0); -INSERT INTO messages VALUES(64,310017,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(65,310017,'insert','bet_matches','{"backward_quantity": 650000000, "block_index": 310017, "deadline": 1388000200, "fee_fraction_int": 99999999, "feed_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "forward_quantity": 750000000, "id": "38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e_878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2", "initial_value": 100.0, "leverage": 5040, "match_expire_index": 310026, "status": "pending", "target_value": 1.0, "tx0_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx0_bet_type": 2, "tx0_block_index": 310016, "tx0_expiration": 10, "tx0_hash": "38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e", "tx0_index": 17, "tx1_address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx1_bet_type": 3, "tx1_block_index": 310017, "tx1_expiration": 10, "tx1_hash": "878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2", "tx1_index": 18}',0); -INSERT INTO messages VALUES(66,310018,'insert','broadcasts','{"block_index": 310018, "fee_fraction_int": 5000000, "locked": false, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "text": "Unit Test", "timestamp": 1388000050, "tx_hash": "5ca432dd1c3654efadff3a154455b91057d1f03c909da6e7e75a234fd764006c", "tx_index": 19, "value": 99.86166}',0); -INSERT INTO messages VALUES(67,310018,'insert','credits','{"action": "bet settled: liquidated for bear", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310018, "event": "5ca432dd1c3654efadff3a154455b91057d1f03c909da6e7e75a234fd764006c", "quantity": 59137500}',0); -INSERT INTO messages VALUES(68,310018,'insert','credits','{"action": "feed fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310018, "event": "5ca432dd1c3654efadff3a154455b91057d1f03c909da6e7e75a234fd764006c", "quantity": 3112500}',0); -INSERT INTO messages VALUES(69,310018,'insert','bet_match_resolutions','{"bear_credit": 59137500, "bet_match_id": "d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9_e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c", "bet_match_type_id": 1, "block_index": 310018, "bull_credit": 0, "escrow_less_fee": null, "fee": 3112500, "settled": false, "winner": null}',0); -INSERT INTO messages VALUES(70,310018,'update','bet_matches','{"bet_match_id": "d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9_e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c", "status": "settled: liquidated for bear"}',0); -INSERT INTO messages VALUES(71,310019,'insert','broadcasts','{"block_index": 310019, "fee_fraction_int": 5000000, "locked": false, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "text": "Unit Test", "timestamp": 1388000101, "tx_hash": "6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be", "tx_index": 20, "value": 100.343}',0); -INSERT INTO messages VALUES(72,310019,'insert','credits','{"action": "bet settled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310019, "event": "6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be", "quantity": 159300000}',0); -INSERT INTO messages VALUES(73,310019,'insert','credits','{"action": "bet settled", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310019, "event": "6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be", "quantity": 315700000}',0); -INSERT INTO messages VALUES(74,310019,'insert','credits','{"action": "feed fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310019, "event": "6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be", "quantity": 25000000}',0); -INSERT INTO messages VALUES(75,310019,'insert','bet_match_resolutions','{"bear_credit": 315700000, "bet_match_id": "e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c_d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a", "bet_match_type_id": 1, "block_index": 310019, "bull_credit": 159300000, "escrow_less_fee": null, "fee": 25000000, "settled": true, "winner": null}',0); -INSERT INTO messages VALUES(76,310019,'update','bet_matches','{"bet_match_id": "e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c_d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a", "status": "settled"}',0); -INSERT INTO messages VALUES(77,310020,'insert','broadcasts','{"block_index": 310020, "fee_fraction_int": 5000000, "locked": false, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "text": "Unit Test", "timestamp": 1388000201, "tx_hash": "a847674ee4d69fb3975c0758e9f3201bc0d70b7d95051dc485b925df12633008", "tx_index": 21, "value": 2.0}',0); -INSERT INTO messages VALUES(78,310020,'insert','credits','{"action": "bet settled: for notequal", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310020, "event": "a847674ee4d69fb3975c0758e9f3201bc0d70b7d95051dc485b925df12633008", "quantity": 1330000000}',0); -INSERT INTO messages VALUES(79,310020,'insert','credits','{"action": "feed fee", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310020, "event": "a847674ee4d69fb3975c0758e9f3201bc0d70b7d95051dc485b925df12633008", "quantity": 70000000}',0); -INSERT INTO messages VALUES(80,310020,'insert','bet_match_resolutions','{"bear_credit": null, "bet_match_id": "38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e_878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2", "bet_match_type_id": 5, "block_index": 310020, "bull_credit": null, "escrow_less_fee": 1330000000, "fee": 70000000, "settled": null, "winner": "NotEqual"}',0); -INSERT INTO messages VALUES(81,310020,'update','bet_matches','{"bet_match_id": "38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e_878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2", "status": "settled: for notequal"}',0); -INSERT INTO messages VALUES(82,310021,'insert','debits','{"action": "open order", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBB", "block_index": 310021, "event": "c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e", "quantity": 50000000}',0); -INSERT INTO messages VALUES(83,310021,'insert','orders','{"block_index": 310021, "expiration": 10, "expire_index": 310031, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 50000000, "get_remaining": 50000000, "give_asset": "BBBB", "give_quantity": 50000000, "give_remaining": 50000000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "tx_hash": "c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e", "tx_index": 22}',0); -INSERT INTO messages VALUES(84,310022,'insert','credits','{"action": "burn", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310022, "event": "ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa", "quantity": 56999887262}',0); -INSERT INTO messages VALUES(85,310022,'insert','burns','{"block_index": 310022, "burned": 38000000, "earned": 56999887262, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa", "tx_index": 23}',0); -INSERT INTO messages VALUES(86,310023,'update','bets','{"status": "expired", "tx_hash": "d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9"}',0); -INSERT INTO messages VALUES(87,310023,'insert','credits','{"action": "recredit wager remaining", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310023, "event": "d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9", "quantity": 8500000}',0); -INSERT INTO messages VALUES(88,310023,'insert','bet_expirations','{"bet_hash": "d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9", "bet_index": 13, "block_index": 310023, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3"}',0); -INSERT INTO messages VALUES(89,310023,'insert','debits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBC", "block_index": 310023, "event": "44adc2e3482afd40ae413fd44c5e310b3a1ad06b21d620b493de3b7232d81725", "quantity": 10000}',0); -INSERT INTO messages VALUES(90,310023,'insert','credits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "BBBC", "block_index": 310023, "event": "44adc2e3482afd40ae413fd44c5e310b3a1ad06b21d620b493de3b7232d81725", "quantity": 10000}',0); -INSERT INTO messages VALUES(91,310023,'insert','sends','{"asset": "BBBC", "block_index": 310023, "destination": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "quantity": 10000, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "44adc2e3482afd40ae413fd44c5e310b3a1ad06b21d620b493de3b7232d81725", "tx_index": 24}',0); -INSERT INTO messages VALUES(92,310032,'update','orders','{"status": "expired", "tx_hash": "c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e"}',0); -INSERT INTO messages VALUES(93,310032,'insert','credits','{"action": "cancel order", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBB", "block_index": 310032, "event": "c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e", "quantity": 50000000}',0); -INSERT INTO messages VALUES(94,310032,'insert','order_expirations','{"block_index": 310032, "order_hash": "c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e", "order_index": 22, "source": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3"}',0); --- Triggers and indices on messages -CREATE INDEX block_index_message_index_idx ON messages (block_index, message_index); - --- Table order_expirations -DROP TABLE IF EXISTS order_expirations; -CREATE TABLE order_expirations( - order_index INTEGER PRIMARY KEY, - order_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (order_index, order_hash) REFERENCES orders(tx_index, tx_hash)); -INSERT INTO order_expirations VALUES(3,'cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310013); -INSERT INTO order_expirations VALUES(4,'beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310014); -INSERT INTO order_expirations VALUES(22,'c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310032); --- Triggers and indices on order_expirations -CREATE TRIGGER _order_expirations_delete BEFORE DELETE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_expirations(rowid,order_index,order_hash,source,block_index) VALUES('||old.rowid||','||quote(old.order_index)||','||quote(old.order_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_expirations_insert AFTER INSERT ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_expirations_update AFTER UPDATE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_expirations SET order_index='||quote(old.order_index)||',order_hash='||quote(old.order_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_match_expirations -DROP TABLE IF EXISTS order_match_expirations; -CREATE TABLE order_match_expirations( - order_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (order_match_id) REFERENCES order_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on order_match_expirations -CREATE TRIGGER _order_match_expirations_delete BEFORE DELETE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_match_expirations(rowid,order_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.order_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_match_expirations_insert AFTER INSERT ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_match_expirations_update AFTER UPDATE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_match_expirations SET order_match_id='||quote(old.order_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_matches -DROP TABLE IF EXISTS order_matches; -CREATE TABLE order_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - forward_asset TEXT, - forward_quantity INTEGER, - backward_asset TEXT, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO order_matches VALUES('cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052_beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754',3,'cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',4,'beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,'XCP',100000000,310002,310003,310003,10,10,310023,857142,'completed'); --- Triggers and indices on order_matches -CREATE TRIGGER _order_matches_delete BEFORE DELETE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,forward_asset,forward_quantity,backward_asset,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_paid,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.forward_asset)||','||quote(old.forward_quantity)||','||quote(old.backward_asset)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _order_matches_insert AFTER INSERT ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_matches_update AFTER UPDATE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',forward_asset='||quote(old.forward_asset)||',forward_quantity='||quote(old.forward_quantity)||',backward_asset='||quote(old.backward_asset)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX backward_status_idx ON order_matches (backward_asset, status); -CREATE INDEX forward_status_idx ON order_matches (forward_asset, status); -CREATE INDEX match_expire_idx ON order_matches (status, match_expire_index); -CREATE INDEX tx0_address_idx ON order_matches (tx0_address); -CREATE INDEX tx1_address_idx ON order_matches (tx1_address); - --- Table orders -DROP TABLE IF EXISTS orders; -CREATE TABLE orders( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - give_asset TEXT, - give_quantity INTEGER, - give_remaining INTEGER, - get_asset TEXT, - get_quantity INTEGER, - get_remaining INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_required INTEGER, - fee_required_remaining INTEGER, - fee_provided INTEGER, - fee_provided_remaining INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO orders VALUES(3,'cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052',310002,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'expired'); -INSERT INTO orders VALUES(4,'beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754',310003,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'expired'); -INSERT INTO orders VALUES(22,'c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e',310021,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'expired'); --- Triggers and indices on orders -CREATE TRIGGER _orders_delete BEFORE DELETE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO orders(rowid,tx_index,tx_hash,block_index,source,give_asset,give_quantity,give_remaining,get_asset,get_quantity,get_remaining,expiration,expire_index,fee_required,fee_required_remaining,fee_provided,fee_provided_remaining,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.give_asset)||','||quote(old.give_quantity)||','||quote(old.give_remaining)||','||quote(old.get_asset)||','||quote(old.get_quantity)||','||quote(old.get_remaining)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_required)||','||quote(old.fee_required_remaining)||','||quote(old.fee_provided)||','||quote(old.fee_provided_remaining)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _orders_insert AFTER INSERT ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM orders WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _orders_update AFTER UPDATE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE orders SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',give_asset='||quote(old.give_asset)||',give_quantity='||quote(old.give_quantity)||',give_remaining='||quote(old.give_remaining)||',get_asset='||quote(old.get_asset)||',get_quantity='||quote(old.get_quantity)||',get_remaining='||quote(old.get_remaining)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_required='||quote(old.fee_required)||',fee_required_remaining='||quote(old.fee_required_remaining)||',fee_provided='||quote(old.fee_provided)||',fee_provided_remaining='||quote(old.fee_provided_remaining)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX expire_idx ON orders (expire_index, status); -CREATE INDEX give_asset_idx ON orders (give_asset); -CREATE INDEX give_get_status_idx ON orders (get_asset, give_asset, status); -CREATE INDEX give_status_idx ON orders (give_asset, status); -CREATE INDEX source_give_status_idx ON orders (source, give_asset, status); - --- Table rps -DROP TABLE IF EXISTS rps; -CREATE TABLE rps( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - possible_moves INTEGER, - wager INTEGER, - move_random_hash TEXT, - expiration INTEGER, - expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); --- Triggers and indices on rps -CREATE TRIGGER _rps_delete BEFORE DELETE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps(rowid,tx_index,tx_hash,block_index,source,possible_moves,wager,move_random_hash,expiration,expire_index,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.possible_moves)||','||quote(old.wager)||','||quote(old.move_random_hash)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_insert AFTER INSERT ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_update AFTER UPDATE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',possible_moves='||quote(old.possible_moves)||',wager='||quote(old.wager)||',move_random_hash='||quote(old.move_random_hash)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX matching_idx ON rps (wager, possible_moves); - --- Table rps_expirations -DROP TABLE IF EXISTS rps_expirations; -CREATE TABLE rps_expirations( - rps_index INTEGER PRIMARY KEY, - rps_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (rps_index, rps_hash) REFERENCES rps(tx_index, tx_hash)); --- Triggers and indices on rps_expirations -CREATE TRIGGER _rps_expirations_delete BEFORE DELETE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_expirations(rowid,rps_index,rps_hash,source,block_index) VALUES('||old.rowid||','||quote(old.rps_index)||','||quote(old.rps_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_expirations_insert AFTER INSERT ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_expirations_update AFTER UPDATE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_expirations SET rps_index='||quote(old.rps_index)||',rps_hash='||quote(old.rps_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_match_expirations -DROP TABLE IF EXISTS rps_match_expirations; -CREATE TABLE rps_match_expirations( - rps_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (rps_match_id) REFERENCES rps_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on rps_match_expirations -CREATE TRIGGER _rps_match_expirations_delete BEFORE DELETE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_match_expirations(rowid,rps_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.rps_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_match_expirations_insert AFTER INSERT ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_match_expirations_update AFTER UPDATE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_match_expirations SET rps_match_id='||quote(old.rps_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_matches -DROP TABLE IF EXISTS rps_matches; -CREATE TABLE rps_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_move_random_hash TEXT, - tx1_move_random_hash TEXT, - wager INTEGER, - possible_moves INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rps_matches -CREATE TRIGGER _rps_matches_delete BEFORE DELETE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_move_random_hash,tx1_move_random_hash,wager,possible_moves,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_move_random_hash)||','||quote(old.tx1_move_random_hash)||','||quote(old.wager)||','||quote(old.possible_moves)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_matches_insert AFTER INSERT ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_matches_update AFTER UPDATE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_move_random_hash='||quote(old.tx0_move_random_hash)||',tx1_move_random_hash='||quote(old.tx1_move_random_hash)||',wager='||quote(old.wager)||',possible_moves='||quote(old.possible_moves)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_expire_idx ON rps_matches (status, match_expire_index); -CREATE INDEX rps_tx0_address_idx ON rps_matches (tx0_address); -CREATE INDEX rps_tx1_address_idx ON rps_matches (tx1_address); - --- Table rpsresolves -DROP TABLE IF EXISTS rpsresolves; -CREATE TABLE rpsresolves( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - move INTEGER, - random TEXT, - rps_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rpsresolves -CREATE TRIGGER _rpsresolves_delete BEFORE DELETE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rpsresolves(rowid,tx_index,tx_hash,block_index,source,move,random,rps_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.move)||','||quote(old.random)||','||quote(old.rps_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rpsresolves_insert AFTER INSERT ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rpsresolves WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rpsresolves_update AFTER UPDATE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rpsresolves SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',move='||quote(old.move)||',random='||quote(old.random)||',rps_match_id='||quote(old.rps_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_id_idx ON rpsresolves (rps_match_id); - --- Table sends -DROP TABLE IF EXISTS sends; -CREATE TABLE "sends"( - tx_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - quantity INTEGER, - status TEXT, - msg_index INTEGER DEFAULT 0, memo BLOB, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); -INSERT INTO sends VALUES(2,'638358ddca7a4365d07b633926d55a399bc0e8b164fc820d9b35a223effe6d65',310001,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,'valid',0,NULL); -INSERT INTO sends VALUES(8,'633e9ffcf75ac19b5c6ece4b676cbc2636abc8cf9e8a3ab408e045f4a8e9d30f',310007,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,'valid',0,NULL); -INSERT INTO sends VALUES(9,'7166a8cde54b81c99f128c66a689569197db05883e1bf4e899eabea9f9f450b1',310008,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,'valid',0,NULL); -INSERT INTO sends VALUES(24,'44adc2e3482afd40ae413fd44c5e310b3a1ad06b21d620b493de3b7232d81725',310023,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10000,'valid',0,NULL); --- Triggers and indices on sends -CREATE TRIGGER _sends_delete BEFORE DELETE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sends(rowid,tx_index,tx_hash,block_index,source,destination,asset,quantity,status,msg_index,memo) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.status)||','||quote(old.msg_index)||','||quote(old.memo)||')'); - END; -CREATE TRIGGER _sends_insert AFTER INSERT ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sends_update AFTER UPDATE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',status='||quote(old.status)||',msg_index='||quote(old.msg_index)||',memo='||quote(old.memo)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX destination_idx ON sends (destination); -CREATE INDEX memo_idx ON sends (memo); -CREATE INDEX source_idx ON sends (source); - --- Table sweeps -DROP TABLE IF EXISTS sweeps; -CREATE TABLE sweeps( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - flags INTEGER, - status TEXT, - memo BLOB, - fee_paid INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on sweeps -CREATE TRIGGER _sweeps_delete BEFORE DELETE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sweeps(rowid,tx_index,tx_hash,block_index,source,destination,flags,status,memo,fee_paid) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.flags)||','||quote(old.status)||','||quote(old.memo)||','||quote(old.fee_paid)||')'); - END; -CREATE TRIGGER _sweeps_insert AFTER INSERT ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sweeps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sweeps_update AFTER UPDATE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sweeps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',flags='||quote(old.flags)||',status='||quote(old.status)||',memo='||quote(old.memo)||',fee_paid='||quote(old.fee_paid)||' WHERE rowid='||old.rowid); - END; - --- Table transactions -DROP TABLE IF EXISTS transactions; -CREATE TABLE transactions( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - block_hash TEXT, - block_time INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - fee INTEGER, - data BLOB, - supported BOOL DEFAULT 1, - FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), - PRIMARY KEY (tx_index, tx_hash, block_index)); -INSERT INTO transactions VALUES(1,'63f8a75a06328d984c928bdcf6bebb20d9c2b154712f1d03041d07c6f319efd2',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); -INSERT INTO transactions VALUES(2,'638358ddca7a4365d07b633926d55a399bc0e8b164fc820d9b35a223effe6d65',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',7800,7650,X'0000000000000000000000010000000002FAF080',1); -INSERT INTO transactions VALUES(3,'cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,1000000,X'0000000A00000000000000000000000002FAF08000000000000000010000000005F5E100000A0000000000000000',1); -INSERT INTO transactions VALUES(4,'beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000000A00000000000000010000000006422C4000000000000000000000000002FAF080000A00000000000DBBA0',1); -INSERT INTO transactions VALUES(5,'7c2e93a2df7ecc592086d39777654b72d9745409fa31555a7ecd6b8ac500795e',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',50000000,9675,X'0000000BCB66A40BE14321E489C3FA3455E62315E23F92244127F3F2C2F7ECCB6D75B052BEAA1FDDDA140D119B4E5C94AA81F2E25E5550C18F3180C0F791EF6E7AD35754',1); -INSERT INTO transactions VALUES(6,'78ec308733a3253206ea1376339dd274905f224c5bbe9dbd1490713c1e74a7f3',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'000000140000000000004767000000003B9ACA000100000000000000000000',1); -INSERT INTO transactions VALUES(7,'febe15f0f2b362f711644e76d6cfa0bd1a6cbec29bb585f196c5c2594e38bd37',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000014000000000000476800000000000186A00000000000000000000006666F6F626172',1); -INSERT INTO transactions VALUES(8,'633e9ffcf75ac19b5c6ece4b676cbc2636abc8cf9e8a3ab408e045f4a8e9d30f',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',7800,7650,X'00000000000000000000476700000000003D0900',1); -INSERT INTO transactions VALUES(9,'7166a8cde54b81c99f128c66a689569197db05883e1bf4e899eabea9f9f450b1',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',7800,7650,X'000000000000000000004768000000000000020E',1); -INSERT INTO transactions VALUES(10,'76cfc11c2495d82aaef7a6000f2765bdd7107f0e04e91e83cb3398cc643f76fe',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000032000000000000025800000000000047670000000000000001',1); -INSERT INTO transactions VALUES(11,'555cc086477b5fc9d0430bb71727a4240e64ba4df01359f8adfff4345d87af8f',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000032000000000000032000000000000047680000000000000001',1); -INSERT INTO transactions VALUES(12,'5b3e51c27276d5f933b34b535d7d51eb216c78ca41353cb63b8d9c09c41439b9',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB3300405900000000000005F5E0FF09556E69742054657374',1); -INSERT INTO transactions VALUES(13,'d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000052BB33640000000002FAF08000000000017D7840000000000000000000003B100000000A',1); -INSERT INTO transactions VALUES(14,'e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000152BB336400000000017D78400000000002793D60000000000000000000003B100000000A',1); -INSERT INTO transactions VALUES(15,'e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000052BB33640000000008F0D1800000000014DC93800000000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(16,'d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000152BB33640000000014DC93800000000008F0D1800000000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(17,'38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000252BB33C8000000002CB417800000000026BE36803FF0000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(18,'878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000352BB33C80000000026BE3680000000002CB417803FF0000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(19,'5ca432dd1c3654efadff3a154455b91057d1f03c909da6e7e75a234fd764006c',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB33324058F7256FFC115E004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(20,'6bbdba6e082a8c8bd6bdac11d8cb74382dfcfb736d0dbbb881f78644709c04be',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB3365405915F3B645A1CB004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(21,'a847674ee4d69fb3975c0758e9f3201bc0d70b7d95051dc485b925df12633008',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB33C94000000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(22,'c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e',310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000000A00000000000047670000000002FAF08000000000000000010000000002FAF080000A0000000000000000',1); -INSERT INTO transactions VALUES(23,'ec9788fbae83a6cdf980d5373d85911a27447410efa4b11997fefcc41bc89caa',310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','mvCounterpartyXXXXXXXXXXXXXXW24Hef',100000000,5625,X'',1); -INSERT INTO transactions VALUES(24,'44adc2e3482afd40ae413fd44c5e310b3a1ad06b21d620b493de3b7232d81725',310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',7800,7650,X'0000000000000000000047680000000000002710',1); --- Triggers and indices on transactions -CREATE INDEX index_hash_index_idx ON transactions (tx_index, tx_hash, block_index); -CREATE INDEX index_index_idx ON transactions (block_index, tx_index); -CREATE INDEX tx_hash_idx ON transactions (tx_hash); -CREATE INDEX tx_index_idx ON transactions (tx_index); - --- Table undolog -DROP TABLE IF EXISTS undolog; -CREATE TABLE undolog( - undo_index INTEGER PRIMARY KEY AUTOINCREMENT, - sql TEXT); -INSERT INTO undolog VALUES(4,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=93000000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(5,'DELETE FROM debits WHERE rowid=1'); -INSERT INTO undolog VALUES(6,'DELETE FROM balances WHERE rowid=2'); -INSERT INTO undolog VALUES(7,'DELETE FROM credits WHERE rowid=2'); -INSERT INTO undolog VALUES(8,'DELETE FROM sends WHERE rowid=1'); -INSERT INTO undolog VALUES(9,'DELETE FROM orders WHERE rowid=1'); -INSERT INTO undolog VALUES(10,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92950000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(11,'DELETE FROM debits WHERE rowid=2'); -INSERT INTO undolog VALUES(12,'DELETE FROM orders WHERE rowid=2'); -INSERT INTO undolog VALUES(13,'UPDATE orders SET tx_index=3,tx_hash=''cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052'',block_index=310002,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''BTC'',give_quantity=50000000,give_remaining=50000000,get_asset=''XCP'',get_quantity=100000000,get_remaining=100000000,expiration=10,expire_index=310012,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=1000000,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(14,'UPDATE orders SET tx_index=4,tx_hash=''beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754'',block_index=310003,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''XCP'',give_quantity=105000000,give_remaining=105000000,get_asset=''BTC'',get_quantity=50000000,get_remaining=50000000,expiration=10,expire_index=310013,fee_required=900000,fee_required_remaining=900000,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(15,'DELETE FROM order_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(16,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92845000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(17,'DELETE FROM credits WHERE rowid=3'); -INSERT INTO undolog VALUES(18,'UPDATE order_matches SET id=''cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052_beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754'',tx0_index=3,tx0_hash=''cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052'',tx0_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx1_index=4,tx1_hash=''beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754'',tx1_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',forward_asset=''BTC'',forward_quantity=50000000,backward_asset=''XCP'',backward_quantity=100000000,tx0_block_index=310002,tx1_block_index=310003,block_index=310003,tx0_expiration=10,tx1_expiration=10,match_expire_index=310023,fee_paid=857142,status=''pending'' WHERE rowid=1'); -INSERT INTO undolog VALUES(19,'DELETE FROM btcpays WHERE rowid=5'); -INSERT INTO undolog VALUES(20,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92945000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(21,'DELETE FROM debits WHERE rowid=3'); -INSERT INTO undolog VALUES(22,'DELETE FROM assets WHERE rowid=3'); -INSERT INTO undolog VALUES(23,'DELETE FROM issuances WHERE rowid=1'); -INSERT INTO undolog VALUES(24,'DELETE FROM balances WHERE rowid=3'); -INSERT INTO undolog VALUES(25,'DELETE FROM credits WHERE rowid=4'); -INSERT INTO undolog VALUES(26,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92895000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(27,'DELETE FROM debits WHERE rowid=4'); -INSERT INTO undolog VALUES(28,'DELETE FROM assets WHERE rowid=4'); -INSERT INTO undolog VALUES(29,'DELETE FROM issuances WHERE rowid=2'); -INSERT INTO undolog VALUES(30,'DELETE FROM balances WHERE rowid=4'); -INSERT INTO undolog VALUES(31,'DELETE FROM credits WHERE rowid=5'); -INSERT INTO undolog VALUES(32,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBB'',quantity=1000000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(33,'DELETE FROM debits WHERE rowid=5'); -INSERT INTO undolog VALUES(34,'DELETE FROM balances WHERE rowid=5'); -INSERT INTO undolog VALUES(35,'DELETE FROM credits WHERE rowid=6'); -INSERT INTO undolog VALUES(36,'DELETE FROM sends WHERE rowid=2'); -INSERT INTO undolog VALUES(37,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBC'',quantity=100000 WHERE rowid=4'); -INSERT INTO undolog VALUES(38,'DELETE FROM debits WHERE rowid=6'); -INSERT INTO undolog VALUES(39,'DELETE FROM balances WHERE rowid=6'); -INSERT INTO undolog VALUES(40,'DELETE FROM credits WHERE rowid=7'); -INSERT INTO undolog VALUES(41,'DELETE FROM sends WHERE rowid=3'); -INSERT INTO undolog VALUES(42,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92845000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(43,'DELETE FROM debits WHERE rowid=7'); -INSERT INTO undolog VALUES(44,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92844999976 WHERE rowid=1'); -INSERT INTO undolog VALUES(45,'DELETE FROM debits WHERE rowid=8'); -INSERT INTO undolog VALUES(46,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3'',asset=''XCP'',quantity=50000000 WHERE rowid=2'); -INSERT INTO undolog VALUES(47,'DELETE FROM credits WHERE rowid=8'); -INSERT INTO undolog VALUES(48,'DELETE FROM dividends WHERE rowid=10'); -INSERT INTO undolog VALUES(49,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92844979976 WHERE rowid=1'); -INSERT INTO undolog VALUES(50,'DELETE FROM debits WHERE rowid=9'); -INSERT INTO undolog VALUES(51,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92844559176 WHERE rowid=1'); -INSERT INTO undolog VALUES(52,'DELETE FROM debits WHERE rowid=10'); -INSERT INTO undolog VALUES(53,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3'',asset=''XCP'',quantity=50000024 WHERE rowid=2'); -INSERT INTO undolog VALUES(54,'DELETE FROM credits WHERE rowid=9'); -INSERT INTO undolog VALUES(55,'DELETE FROM dividends WHERE rowid=11'); -INSERT INTO undolog VALUES(56,'DELETE FROM broadcasts WHERE rowid=12'); -INSERT INTO undolog VALUES(57,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92844539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(58,'DELETE FROM debits WHERE rowid=11'); -INSERT INTO undolog VALUES(59,'DELETE FROM bets WHERE rowid=1'); -INSERT INTO undolog VALUES(60,'UPDATE orders SET tx_index=3,tx_hash=''cb66a40be14321e489c3fa3455e62315e23f92244127f3f2c2f7eccb6d75b052'',block_index=310002,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''BTC'',give_quantity=50000000,give_remaining=0,get_asset=''XCP'',get_quantity=100000000,get_remaining=0,expiration=10,expire_index=310012,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=142858,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(61,'DELETE FROM order_expirations WHERE rowid=3'); -INSERT INTO undolog VALUES(62,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92794539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(63,'DELETE FROM debits WHERE rowid=12'); -INSERT INTO undolog VALUES(64,'DELETE FROM bets WHERE rowid=2'); -INSERT INTO undolog VALUES(65,'UPDATE bets SET tx_index=13,tx_hash=''d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9'',block_index=310012,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=0,deadline=1388000100,wager_quantity=50000000,wager_remaining=50000000,counterwager_quantity=25000000,counterwager_remaining=25000000,target_value=0.0,leverage=15120,expiration=10,expire_index=310022,fee_fraction_int=99999999,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(66,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92769539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(67,'DELETE FROM credits WHERE rowid=10'); -INSERT INTO undolog VALUES(68,'UPDATE bets SET tx_index=14,tx_hash=''e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c'',block_index=310013,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=1,deadline=1388000100,wager_quantity=25000000,wager_remaining=25000000,counterwager_quantity=41500000,counterwager_remaining=41500000,target_value=0.0,leverage=15120,expiration=10,expire_index=310023,fee_fraction_int=99999999,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(69,'DELETE FROM bet_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(70,'UPDATE orders SET tx_index=4,tx_hash=''beaa1fddda140d119b4e5c94aa81f2e25e5550c18f3180c0f791ef6e7ad35754'',block_index=310003,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''XCP'',give_quantity=105000000,give_remaining=5000000,get_asset=''BTC'',get_quantity=50000000,get_remaining=0,expiration=10,expire_index=310013,fee_required=900000,fee_required_remaining=42858,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(71,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92773789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(72,'DELETE FROM credits WHERE rowid=11'); -INSERT INTO undolog VALUES(73,'DELETE FROM order_expirations WHERE rowid=4'); -INSERT INTO undolog VALUES(74,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92778789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(75,'DELETE FROM debits WHERE rowid=13'); -INSERT INTO undolog VALUES(76,'DELETE FROM bets WHERE rowid=3'); -INSERT INTO undolog VALUES(77,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92628789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(78,'DELETE FROM debits WHERE rowid=14'); -INSERT INTO undolog VALUES(79,'DELETE FROM bets WHERE rowid=4'); -INSERT INTO undolog VALUES(80,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(81,'DELETE FROM credits WHERE rowid=12'); -INSERT INTO undolog VALUES(82,'UPDATE bets SET tx_index=15,tx_hash=''e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c'',block_index=310014,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=0,deadline=1388000100,wager_quantity=150000000,wager_remaining=150000000,counterwager_quantity=350000000,counterwager_remaining=350000000,target_value=0.0,leverage=5040,expiration=10,expire_index=310024,fee_fraction_int=99999999,status=''open'' WHERE rowid=3'); -INSERT INTO undolog VALUES(83,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(84,'DELETE FROM credits WHERE rowid=13'); -INSERT INTO undolog VALUES(85,'UPDATE bets SET tx_index=16,tx_hash=''d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a'',block_index=310015,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=1,deadline=1388000100,wager_quantity=350000000,wager_remaining=350000000,counterwager_quantity=150000000,counterwager_remaining=150000000,target_value=0.0,leverage=5040,expiration=10,expire_index=310025,fee_fraction_int=99999999,status=''open'' WHERE rowid=4'); -INSERT INTO undolog VALUES(86,'DELETE FROM bet_matches WHERE rowid=2'); -INSERT INTO undolog VALUES(87,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(88,'DELETE FROM debits WHERE rowid=15'); -INSERT INTO undolog VALUES(89,'DELETE FROM bets WHERE rowid=5'); -INSERT INTO undolog VALUES(90,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=91528789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(91,'DELETE FROM debits WHERE rowid=16'); -INSERT INTO undolog VALUES(92,'DELETE FROM bets WHERE rowid=6'); -INSERT INTO undolog VALUES(93,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(94,'DELETE FROM credits WHERE rowid=14'); -INSERT INTO undolog VALUES(95,'UPDATE bets SET tx_index=17,tx_hash=''38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e'',block_index=310016,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=2,deadline=1388000200,wager_quantity=750000000,wager_remaining=750000000,counterwager_quantity=650000000,counterwager_remaining=650000000,target_value=1.0,leverage=5040,expiration=10,expire_index=310026,fee_fraction_int=99999999,status=''open'' WHERE rowid=5'); -INSERT INTO undolog VALUES(96,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(97,'DELETE FROM credits WHERE rowid=15'); -INSERT INTO undolog VALUES(98,'UPDATE bets SET tx_index=18,tx_hash=''878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2'',block_index=310017,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=3,deadline=1388000200,wager_quantity=650000000,wager_remaining=650000000,counterwager_quantity=750000000,counterwager_remaining=750000000,target_value=1.0,leverage=5040,expiration=10,expire_index=310027,fee_fraction_int=99999999,status=''open'' WHERE rowid=6'); -INSERT INTO undolog VALUES(99,'DELETE FROM bet_matches WHERE rowid=3'); -INSERT INTO undolog VALUES(100,'DELETE FROM broadcasts WHERE rowid=19'); -INSERT INTO undolog VALUES(101,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(102,'DELETE FROM credits WHERE rowid=16'); -INSERT INTO undolog VALUES(103,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90937926676 WHERE rowid=1'); -INSERT INTO undolog VALUES(104,'DELETE FROM credits WHERE rowid=17'); -INSERT INTO undolog VALUES(105,'DELETE FROM bet_match_resolutions WHERE rowid=1'); -INSERT INTO undolog VALUES(106,'UPDATE bet_matches SET id=''d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9_e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c'',tx0_index=13,tx0_hash=''d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9'',tx0_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx1_index=14,tx1_hash=''e7b09f632cc8bc2bc2d24aaaea3dbb4f00ac143814d57a6f7200c9b7a2afd52c'',tx1_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx0_bet_type=0,tx1_bet_type=1,feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',initial_value=100,deadline=1388000100,target_value=0.0,leverage=15120,forward_quantity=41500000,backward_quantity=20750000,tx0_block_index=310012,tx1_block_index=310013,block_index=310013,tx0_expiration=10,tx1_expiration=10,match_expire_index=310022,fee_fraction_int=99999999,status=''pending'' WHERE rowid=1'); -INSERT INTO undolog VALUES(107,'DELETE FROM broadcasts WHERE rowid=20'); -INSERT INTO undolog VALUES(108,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90941039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(109,'DELETE FROM credits WHERE rowid=18'); -INSERT INTO undolog VALUES(110,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=91100339176 WHERE rowid=1'); -INSERT INTO undolog VALUES(111,'DELETE FROM credits WHERE rowid=19'); -INSERT INTO undolog VALUES(112,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=91416039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(113,'DELETE FROM credits WHERE rowid=20'); -INSERT INTO undolog VALUES(114,'DELETE FROM bet_match_resolutions WHERE rowid=2'); -INSERT INTO undolog VALUES(115,'UPDATE bet_matches SET id=''e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c_d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a'',tx0_index=15,tx0_hash=''e909dab974d53a600348ba595a4b6e774a4109f2d3279db6ba92672ca1f19a9c'',tx0_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx1_index=16,tx1_hash=''d4dfc3d77c3a756d0f2b70c7dffdfe579551e56f08f8b473ec08c20d80215a5a'',tx1_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx0_bet_type=0,tx1_bet_type=1,feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',initial_value=100,deadline=1388000100,target_value=0.0,leverage=5040,forward_quantity=150000000,backward_quantity=350000000,tx0_block_index=310014,tx1_block_index=310015,block_index=310015,tx0_expiration=10,tx1_expiration=10,match_expire_index=310024,fee_fraction_int=99999999,status=''pending'' WHERE rowid=2'); -INSERT INTO undolog VALUES(116,'DELETE FROM broadcasts WHERE rowid=21'); -INSERT INTO undolog VALUES(117,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=91441039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(118,'DELETE FROM credits WHERE rowid=21'); -INSERT INTO undolog VALUES(119,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92771039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(120,'DELETE FROM credits WHERE rowid=22'); -INSERT INTO undolog VALUES(121,'DELETE FROM bet_match_resolutions WHERE rowid=3'); -INSERT INTO undolog VALUES(122,'UPDATE bet_matches SET id=''38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e_878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2'',tx0_index=17,tx0_hash=''38b961f318712488d67f7e0bc2329df0d61cd63c13892cba0abaeacffc1a765e'',tx0_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx1_index=18,tx1_hash=''878427d49bfd6bbf3fc1ffecf810967e0f3d8df5459ae163372b19b4e4b971c2'',tx1_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx0_bet_type=2,tx1_bet_type=3,feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',initial_value=100,deadline=1388000200,target_value=1.0,leverage=5040,forward_quantity=750000000,backward_quantity=650000000,tx0_block_index=310016,tx1_block_index=310017,block_index=310017,tx0_expiration=10,tx1_expiration=10,match_expire_index=310026,fee_fraction_int=99999999,status=''pending'' WHERE rowid=3'); -INSERT INTO undolog VALUES(123,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBB'',quantity=996000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(124,'DELETE FROM debits WHERE rowid=17'); -INSERT INTO undolog VALUES(125,'DELETE FROM orders WHERE rowid=3'); -INSERT INTO undolog VALUES(126,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92841039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(127,'DELETE FROM credits WHERE rowid=23'); -INSERT INTO undolog VALUES(128,'DELETE FROM burns WHERE rowid=23'); -INSERT INTO undolog VALUES(129,'UPDATE bets SET tx_index=13,tx_hash=''d203db15c17a8da18f032b47fb6bf3182fbec9dc7a218bfc554450a80d0985b9'',block_index=310012,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=0,deadline=1388000100,wager_quantity=50000000,wager_remaining=8500000,counterwager_quantity=25000000,counterwager_remaining=4250000,target_value=0.0,leverage=15120,expiration=10,expire_index=310022,fee_fraction_int=99999999,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(130,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=149840926438 WHERE rowid=1'); -INSERT INTO undolog VALUES(131,'DELETE FROM credits WHERE rowid=24'); -INSERT INTO undolog VALUES(132,'DELETE FROM bet_expirations WHERE rowid=13'); -INSERT INTO undolog VALUES(133,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBC'',quantity=99474 WHERE rowid=4'); -INSERT INTO undolog VALUES(134,'DELETE FROM debits WHERE rowid=18'); -INSERT INTO undolog VALUES(135,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3'',asset=''BBBC'',quantity=526 WHERE rowid=6'); -INSERT INTO undolog VALUES(136,'DELETE FROM credits WHERE rowid=25'); -INSERT INTO undolog VALUES(137,'DELETE FROM sends WHERE rowid=4'); -INSERT INTO undolog VALUES(138,'UPDATE orders SET tx_index=22,tx_hash=''c916fee429020fa410735b3573e1a5f0c0401648a2aba927dd97502c5b62245e'',block_index=310021,source=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''BBBB'',give_quantity=50000000,give_remaining=50000000,get_asset=''XCP'',get_quantity=50000000,get_remaining=50000000,expiration=10,expire_index=310031,fee_required=0,fee_required_remaining=0,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=3'); -INSERT INTO undolog VALUES(139,'UPDATE balances SET address=''1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBB'',quantity=946000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(140,'DELETE FROM credits WHERE rowid=26'); -INSERT INTO undolog VALUES(141,'DELETE FROM order_expirations WHERE rowid=22'); - --- Table undolog_block -DROP TABLE IF EXISTS undolog_block; -CREATE TABLE undolog_block( - block_index INTEGER PRIMARY KEY, - first_undo_index INTEGER); -INSERT INTO undolog_block VALUES(310001,4); -INSERT INTO undolog_block VALUES(310002,9); -INSERT INTO undolog_block VALUES(310003,10); -INSERT INTO undolog_block VALUES(310004,16); -INSERT INTO undolog_block VALUES(310005,20); -INSERT INTO undolog_block VALUES(310006,26); -INSERT INTO undolog_block VALUES(310007,32); -INSERT INTO undolog_block VALUES(310008,37); -INSERT INTO undolog_block VALUES(310009,42); -INSERT INTO undolog_block VALUES(310010,49); -INSERT INTO undolog_block VALUES(310011,56); -INSERT INTO undolog_block VALUES(310012,57); -INSERT INTO undolog_block VALUES(310013,60); -INSERT INTO undolog_block VALUES(310014,70); -INSERT INTO undolog_block VALUES(310015,77); -INSERT INTO undolog_block VALUES(310016,87); -INSERT INTO undolog_block VALUES(310017,90); -INSERT INTO undolog_block VALUES(310018,100); -INSERT INTO undolog_block VALUES(310019,107); -INSERT INTO undolog_block VALUES(310020,116); -INSERT INTO undolog_block VALUES(310021,123); -INSERT INTO undolog_block VALUES(310022,126); -INSERT INTO undolog_block VALUES(310023,129); -INSERT INTO undolog_block VALUES(310024,138); -INSERT INTO undolog_block VALUES(310025,138); -INSERT INTO undolog_block VALUES(310026,138); -INSERT INTO undolog_block VALUES(310027,138); -INSERT INTO undolog_block VALUES(310028,138); -INSERT INTO undolog_block VALUES(310029,138); -INSERT INTO undolog_block VALUES(310030,138); -INSERT INTO undolog_block VALUES(310031,138); -INSERT INTO undolog_block VALUES(310032,138); -INSERT INTO undolog_block VALUES(310033,142); -INSERT INTO undolog_block VALUES(310034,142); -INSERT INTO undolog_block VALUES(310035,142); -INSERT INTO undolog_block VALUES(310036,142); -INSERT INTO undolog_block VALUES(310037,142); -INSERT INTO undolog_block VALUES(310038,142); -INSERT INTO undolog_block VALUES(310039,142); -INSERT INTO undolog_block VALUES(310040,142); -INSERT INTO undolog_block VALUES(310041,142); -INSERT INTO undolog_block VALUES(310042,142); -INSERT INTO undolog_block VALUES(310043,142); -INSERT INTO undolog_block VALUES(310044,142); -INSERT INTO undolog_block VALUES(310045,142); -INSERT INTO undolog_block VALUES(310046,142); -INSERT INTO undolog_block VALUES(310047,142); -INSERT INTO undolog_block VALUES(310048,142); -INSERT INTO undolog_block VALUES(310049,142); -INSERT INTO undolog_block VALUES(310050,142); -INSERT INTO undolog_block VALUES(310051,142); -INSERT INTO undolog_block VALUES(310052,142); -INSERT INTO undolog_block VALUES(310053,142); -INSERT INTO undolog_block VALUES(310054,142); -INSERT INTO undolog_block VALUES(310055,142); -INSERT INTO undolog_block VALUES(310056,142); -INSERT INTO undolog_block VALUES(310057,142); -INSERT INTO undolog_block VALUES(310058,142); -INSERT INTO undolog_block VALUES(310059,142); -INSERT INTO undolog_block VALUES(310060,142); -INSERT INTO undolog_block VALUES(310061,142); -INSERT INTO undolog_block VALUES(310062,142); -INSERT INTO undolog_block VALUES(310063,142); -INSERT INTO undolog_block VALUES(310064,142); -INSERT INTO undolog_block VALUES(310065,142); -INSERT INTO undolog_block VALUES(310066,142); -INSERT INTO undolog_block VALUES(310067,142); -INSERT INTO undolog_block VALUES(310068,142); -INSERT INTO undolog_block VALUES(310069,142); -INSERT INTO undolog_block VALUES(310070,142); -INSERT INTO undolog_block VALUES(310071,142); -INSERT INTO undolog_block VALUES(310072,142); -INSERT INTO undolog_block VALUES(310073,142); -INSERT INTO undolog_block VALUES(310074,142); -INSERT INTO undolog_block VALUES(310075,142); -INSERT INTO undolog_block VALUES(310076,142); -INSERT INTO undolog_block VALUES(310077,142); -INSERT INTO undolog_block VALUES(310078,142); -INSERT INTO undolog_block VALUES(310079,142); -INSERT INTO undolog_block VALUES(310080,142); -INSERT INTO undolog_block VALUES(310081,142); -INSERT INTO undolog_block VALUES(310082,142); -INSERT INTO undolog_block VALUES(310083,142); -INSERT INTO undolog_block VALUES(310084,142); -INSERT INTO undolog_block VALUES(310085,142); -INSERT INTO undolog_block VALUES(310086,142); -INSERT INTO undolog_block VALUES(310087,142); -INSERT INTO undolog_block VALUES(310088,142); -INSERT INTO undolog_block VALUES(310089,142); -INSERT INTO undolog_block VALUES(310090,142); -INSERT INTO undolog_block VALUES(310091,142); -INSERT INTO undolog_block VALUES(310092,142); -INSERT INTO undolog_block VALUES(310093,142); -INSERT INTO undolog_block VALUES(310094,142); -INSERT INTO undolog_block VALUES(310095,142); -INSERT INTO undolog_block VALUES(310096,142); -INSERT INTO undolog_block VALUES(310097,142); -INSERT INTO undolog_block VALUES(310098,142); -INSERT INTO undolog_block VALUES(310099,142); -INSERT INTO undolog_block VALUES(310100,142); -INSERT INTO undolog_block VALUES(310101,142); - --- For primary key autoincrements the next id to use is stored in --- sqlite_sequence -DELETE FROM main.sqlite_sequence WHERE name='undolog'; -INSERT INTO main.sqlite_sequence VALUES ('undolog', 141); - -COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.log b/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.log deleted file mode 100644 index 0ab18fe40c..0000000000 --- a/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.log +++ /dev/null @@ -1,255 +0,0 @@ -Creating connection to `:memory:`. -Checking database integrity. -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 3.00000000; txid: 070bfe81412d873fb6ff08ae5c6463b4c6cea39894b46fb574af7fd86fd417bc; vout: 0; confirmations: 7'] -Fee/KB 0.00025000 -New input: amount: 3.00000000; txid: 070bfe81412d873fb6ff08ae5c6463b4c6cea39894b46fb574af7fd86fd417bc; vout: 0; confirmations: 7 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 2.37994375 BTC -Credit: 930.0 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #burn# <5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb> -Burn: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 burned 0.62 BTC for 930.0 XCP (5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 2.37994375; txid: 5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.37994375; txid: 5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 2.37971125 BTC -Debit: 0.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <63242f35c724cd03163541785b69fbd620df9ebeb72706a0caeb5e19ce7680cc> -Credit: 0.5 XCP to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <63242f35c724cd03163541785b69fbd620df9ebeb72706a0caeb5e19ce7680cc> -Send: 0.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (63242f35c724cd03163541785b69fbd620df9ebeb72706a0caeb5e19ce7680cc) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 2.37971125; txid: 63242f35c724cd03163541785b69fbd620df9ebeb72706a0caeb5e19ce7680cc; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.37971125; txid: 63242f35c724cd03163541785b69fbd620df9ebeb72706a0caeb5e19ce7680cc; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 1000000 -Size: 272 Fee: 0.01000000 Change quantity: 2.36963325 BTC -Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered 0.5 BTC for 1.0 XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e) [open] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 2.36963325; txid: 82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.36963325; txid: 82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 2.36948725 BTC -Debit: 1.05 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #open order# <371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1> -Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered 1.05 XCP for 0.5 BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1) [open] -Considering: 82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e -Tx0 Price: 2.0; Tx1 Inverse Price: 2.1 -Potential forward quantities: 50000000, 52500000 -Forward Quantity: 50000000 -Backward Quantity: 100000000 -Tx0 fee provided remaining: 0.01; required fee: 0.00857142 -Order Match: 0.5 BTC for 1.0 XCP (82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e_371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1) [pending] -Order match has only -10 confirmation(s). -data_btc_out=15600 (data_value=7800 len(data_array)=2) -Sorted candidate UTXOs: ['amount: 2.36948725; txid: 371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.36948725; txid: 371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 387 final_fee 9675 -Size: 387 Fee: 0.00009675 Change quantity: 1.86923450 BTC -Credit: 1.0 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #btcpay# -Database: set status of order_match 82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e_371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1 to completed. -BTC Payment: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 paid 0.5 BTC to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 for order match 82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e_371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1 (f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86923450; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 3; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.86923450; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 3; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86908850 BTC -Debit: 0.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #issuance fee# -Issuance: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 created 10.0 of divisible asset BBBB (ddd50ba93798b76cf1342fbed755b5aec4df77b99622d670ea70dceb21f8c975) [valid] -Credit: 10.0 BBBB to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #issuance# -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86908850; txid: ddd50ba93798b76cf1342fbed755b5aec4df77b99622d670ea70dceb21f8c975; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 2'] -Fee/KB 0.00025000 -New input: amount: 1.86908850; txid: ddd50ba93798b76cf1342fbed755b5aec4df77b99622d670ea70dceb21f8c975; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86894250 BTC -Debit: 0.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #issuance fee# -Issuance: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 created 100000 of indivisible asset BBBC (b693ef32344d5663f9a8368f6bbb311cc06ebc19bfc2818455af2ca098ed8f06) [valid] -Credit: 100000 BBBC to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #issuance# -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86894250; txid: b693ef32344d5663f9a8368f6bbb311cc06ebc19bfc2818455af2ca098ed8f06; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 3'] -Fee/KB 0.00025000 -New input: amount: 1.86894250; txid: b693ef32344d5663f9a8368f6bbb311cc06ebc19bfc2818455af2ca098ed8f06; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86871000 BTC -Debit: 0.04 BBBB from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# -Credit: 0.04 BBBB to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# -Send: 0.04 BBBB from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (cfdba3d6b7a8dafd12d45751395d3a2a99e2b36456d68db5e2080ce8118503ab) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86871000; txid: cfdba3d6b7a8dafd12d45751395d3a2a99e2b36456d68db5e2080ce8118503ab; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 4'] -Fee/KB 0.00025000 -New input: amount: 1.86871000; txid: cfdba3d6b7a8dafd12d45751395d3a2a99e2b36456d68db5e2080ce8118503ab; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86847750 BTC -Debit: 526 BBBC from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <0f649981bbe02942cc0e2f2e43cdb6e41d22c9275506792873b89b683e023f89> -Credit: 526 BBBC to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <0f649981bbe02942cc0e2f2e43cdb6e41d22c9275506792873b89b683e023f89> -Send: 526 BBBC from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (0f649981bbe02942cc0e2f2e43cdb6e41d22c9275506792873b89b683e023f89) [valid] -Total quantity to be distributed in dividends: 0.00000024 XCP -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86847750; txid: 0f649981bbe02942cc0e2f2e43cdb6e41d22c9275506792873b89b683e023f89; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 5'] -Fee/KB 0.00025000 -New input: amount: 1.86847750; txid: 0f649981bbe02942cc0e2f2e43cdb6e41d22c9275506792873b89b683e023f89; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86833150 BTC -Debit: 0.00000024 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #dividend# <4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3> -Debit: 0.0002 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #dividend fee# <4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3> -Credit: 0.00000024 XCP to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #dividend# <4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3> -Dividend: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 paid 0.000006 XCP per unit of BBBB (4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3) [valid] -Total quantity to be distributed in dividends: 0.004208 XCP -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86833150; txid: 4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 6'] -Fee/KB 0.00025000 -New input: amount: 1.86833150; txid: 4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86818550 BTC -Debit: 0.004208 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #dividend# <2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7> -Debit: 0.0002 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #dividend fee# <2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7> -Credit: 0.004208 XCP to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #dividend# <2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7> -Dividend: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 paid 0.000008 XCP per unit of BBBC (2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86818550; txid: 2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 7'] -Fee/KB 0.00025000 -New input: amount: 1.86818550; txid: 2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86803950 BTC -Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:33:20 with a fee of 99.999999%% (fb70fe2fe539e5ed1950885c3385ecb01d27ccfd583c6dff94006b3a55866e72) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86803950; txid: fb70fe2fe539e5ed1950885c3385ecb01d27ccfd583c6dff94006b3a55866e72; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 8'] -Fee/KB 0.00025000 -New input: amount: 1.86803950; txid: fb70fe2fe539e5ed1950885c3385ecb01d27ccfd583c6dff94006b3a55866e72; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86780700 BTC -Debit: 0.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet# <44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b> -Bet: 0.5 XCP against 0.25 XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86780700; txid: 44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 9'] -Fee/KB 0.00025000 -New input: amount: 1.86780700; txid: 44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86757450 BTC -Expired order: 82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e -Debit: 0.25 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet# <08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12> -Bet: 0.25 XCP against 0.415 XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 -Considering: 44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b -Tx0 Inverse Odds: 0.5; Tx1 Odds: 0.6024096385542169 -Potential forward quantities: 50000000, 41500000 -Forward Quantity: 41500000 -Backward Quantity: 20750000 -Credit: 0.0425 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #filled# <08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12> -Bet Match: BullCFD for 0.415 XCP against BearCFD for 0.2075 XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:00 that 0.0 value, leveraged 3.0x (44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b_08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86757450; txid: 08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 10'] -Fee/KB 0.00025000 -New input: amount: 1.86757450; txid: 08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86734200 BTC -Credit: 0.05 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #cancel order# <371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1> -Expired order: 371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1 -Debit: 1.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet# <3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68> -Bet: 1.5 XCP against 3.5 XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86734200; txid: 3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 11'] -Fee/KB 0.00025000 -New input: amount: 1.86734200; txid: 3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86710950 BTC -Debit: 3.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet# <75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572> -Bet: 3.5 XCP against 1.5 XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 -Considering: 44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b -Skipping: leverages disagree. -Considering: 3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68 -Tx0 Inverse Odds: 2.3333333333333335; Tx1 Odds: 2.3333333333333335 -Potential forward quantities: 150000000, 150000000 -Forward Quantity: 150000000 -Backward Quantity: 350000000 -Credit: 0.0 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #filled# <75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572> -Credit: 0.0 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #filled# <75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572> -Bet Match: BullCFD for 1.5 XCP against BearCFD for 3.5 XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:00 that 0.0 value, leveraged 1.0x (3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68_75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86710950; txid: 75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 12'] -Fee/KB 0.00025000 -New input: amount: 1.86710950; txid: 75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86687700 BTC -Debit: 7.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet# <674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644> -Bet: 7.5 XCP against 6.5 XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86687700; txid: 674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 13'] -Fee/KB 0.00025000 -New input: amount: 1.86687700; txid: 674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86664450 BTC -Debit: 6.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet# <4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9> -Bet: 6.5 XCP against 7.5 XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 -Considering: 674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644 -Tx0 Inverse Odds: 0.8666666666666667; Tx1 Odds: 0.8666666666666667 -Potential forward quantities: 750000000, 750000000 -Forward Quantity: 750000000 -Backward Quantity: 650000000 -Credit: 0.0 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #filled# <4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9> -Credit: 0.0 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #filled# <4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9> -Bet Match: Equal for 7.5 XCP against NotEqual for 6.5 XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:36:40 that 1.0 value, leveraged 1.0x (674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644_4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86664450; txid: 4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 14'] -Fee/KB 0.00025000 -New input: amount: 1.86664450; txid: 4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86649850 BTC -Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:34:10 with a fee of 5.0%% (3c120af6e8f350e4e55e319d699e7f715e5b049f94491c5706426ffe101e1452) [valid] -Credit: 0.591375 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet settled: liquidated for bear# <3c120af6e8f350e4e55e319d699e7f715e5b049f94491c5706426ffe101e1452> -Credit: 0.031125 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #feed fee# <3c120af6e8f350e4e55e319d699e7f715e5b049f94491c5706426ffe101e1452> -Bet Match Force‐Liquidated: 0.0 XCP credited to the bull, 0.591375 XCP credited to the bear, and 0.031125 XCP credited to the feed address (44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b_08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12) -Database: set status of bet_match 44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b_08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12 to settled: liquidated for bear. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86649850; txid: 3c120af6e8f350e4e55e319d699e7f715e5b049f94491c5706426ffe101e1452; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 15'] -Fee/KB 0.00025000 -New input: amount: 1.86649850; txid: 3c120af6e8f350e4e55e319d699e7f715e5b049f94491c5706426ffe101e1452; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86635250 BTC -Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:35:01 with a fee of 5.0%% (f1b036ae3c9e9be338370b7be53f0210b830bd86ac2ddc7a757b80c2f7fb093f) [valid] -Credit: 1.593 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet settled# -Credit: 3.157 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet settled# -Credit: 0.25 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #feed fee# -Bet Match Settled: 1.593 XCP credited to the bull, 3.157 XCP credited to the bear, and 0.25 XCP credited to the feed address (3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68_75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572) -Database: set status of bet_match 3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68_75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572 to settled. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86635250; txid: f1b036ae3c9e9be338370b7be53f0210b830bd86ac2ddc7a757b80c2f7fb093f; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 16'] -Fee/KB 0.00025000 -New input: amount: 1.86635250; txid: f1b036ae3c9e9be338370b7be53f0210b830bd86ac2ddc7a757b80c2f7fb093f; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86620650 BTC -Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 at 2013-12-25T19:36:41 with a fee of 5.0%% (63199a0ec21c2541171b644e4e3876a81d997d238fec82b62baea7baaa33aaa3) [valid] -Credit: 13.3 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #bet settled: for notequal# <63199a0ec21c2541171b644e4e3876a81d997d238fec82b62baea7baaa33aaa3> -Credit: 0.7 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #feed fee# <63199a0ec21c2541171b644e4e3876a81d997d238fec82b62baea7baaa33aaa3> -Bet Match Settled: NotEqual won the pot of 13.3 XCP; 0.7 XCP credited to the feed address (674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644_4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9) -Database: set status of bet_match 674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644_4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9 to settled: for notequal. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86620650; txid: 63199a0ec21c2541171b644e4e3876a81d997d238fec82b62baea7baaa33aaa3; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 17'] -Fee/KB 0.00025000 -New input: amount: 1.86620650; txid: 63199a0ec21c2541171b644e4e3876a81d997d238fec82b62baea7baaa33aaa3; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86606050 BTC -Debit: 0.5 BBBB from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #open order# -Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 ordered 0.5 BBBB for 0.5 XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41) [open] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.86606050; txid: dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 18'] -Fee/KB 0.00025000 -New input: amount: 1.86606050; txid: dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.86600425 BTC -Credit: 569.99887262 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #burn# -Burn: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 burned 0.38 BTC for 569.99887262 XCP (df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86600425; txid: df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f; vout: 0; confirmations: 19'] -Fee/KB 0.00025000 -New input: amount: 0.86600425; txid: df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.86577175 BTC -Credit: 0.085 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #recredit wager remaining# <44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b> -Expired bet: 44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b -Debit: 10000 BBBC from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# -Credit: 10000 BBBC to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# -Send: 10000 BBBC from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 to 2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (ff48aca435aafe8e5fec706d3dcb2e3e54710e797ef43d006206136761371bca) [valid] -Credit: 0.5 BBBB to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #cancel order# -Expired order: dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41 diff --git a/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.sql b/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.sql deleted file mode 100644 index c0e1ec78a4..0000000000 --- a/counterpartylib/test/fixtures/scenarios/multisig_2_of_2.sql +++ /dev/null @@ -1,1400 +0,0 @@ -PRAGMA page_size=4096; --- PRAGMA encoding='UTF-8'; --- PRAGMA auto_vacuum=NONE; --- PRAGMA max_page_count=1073741823; - -BEGIN TRANSACTION; - --- Table addresses -DROP TABLE IF EXISTS addresses; -CREATE TABLE addresses( - address TEXT UNIQUE, - options INTEGER, - block_index INTEGER); --- Triggers and indices on addresses -CREATE TRIGGER _addresses_delete BEFORE DELETE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO addresses(rowid,address,options,block_index) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.options)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _addresses_insert AFTER INSERT ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM addresses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _addresses_update AFTER UPDATE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE addresses SET address='||quote(old.address)||',options='||quote(old.options)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX addresses_idx ON addresses (address); - --- Table assets -DROP TABLE IF EXISTS assets; -CREATE TABLE assets( - asset_id TEXT UNIQUE, - asset_name TEXT UNIQUE, - block_index INTEGER, - asset_longname TEXT); -INSERT INTO assets VALUES('0','BTC',NULL,NULL); -INSERT INTO assets VALUES('1','XCP',NULL,NULL); -INSERT INTO assets VALUES('18279','BBBB',310005,NULL); -INSERT INTO assets VALUES('18280','BBBC',310006,NULL); --- Triggers and indices on assets -CREATE TRIGGER _assets_delete BEFORE DELETE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO assets(rowid,asset_id,asset_name,block_index,asset_longname) VALUES('||old.rowid||','||quote(old.asset_id)||','||quote(old.asset_name)||','||quote(old.block_index)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _assets_insert AFTER INSERT ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM assets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _assets_update AFTER UPDATE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE assets SET asset_id='||quote(old.asset_id)||',asset_name='||quote(old.asset_name)||',block_index='||quote(old.block_index)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE UNIQUE INDEX asset_longname_idx ON assets(asset_longname); -CREATE INDEX id_idx ON assets (asset_id); -CREATE INDEX name_idx ON assets (asset_name); - --- Table balances -DROP TABLE IF EXISTS balances; -CREATE TABLE balances( - address TEXT, - asset TEXT, - quantity INTEGER); -INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',149849426438); -INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50420824); -INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',996000000); -INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',89474); -INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000); -INSERT INTO balances VALUES('2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10526); --- Triggers and indices on balances -CREATE TRIGGER _balances_delete BEFORE DELETE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO balances(rowid,address,asset,quantity) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||')'); - END; -CREATE TRIGGER _balances_insert AFTER INSERT ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM balances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _balances_update AFTER UPDATE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE balances SET address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_asset_idx ON balances (address, asset); - --- Table bet_expirations -DROP TABLE IF EXISTS bet_expirations; -CREATE TABLE bet_expirations( - bet_index INTEGER PRIMARY KEY, - bet_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (bet_index, bet_hash) REFERENCES bets(tx_index, tx_hash)); -INSERT INTO bet_expirations VALUES(13,'44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310023); --- Triggers and indices on bet_expirations -CREATE TRIGGER _bet_expirations_delete BEFORE DELETE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_expirations(rowid,bet_index,bet_hash,source,block_index) VALUES('||old.rowid||','||quote(old.bet_index)||','||quote(old.bet_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_expirations_insert AFTER INSERT ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_expirations_update AFTER UPDATE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_expirations SET bet_index='||quote(old.bet_index)||',bet_hash='||quote(old.bet_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_expirations -DROP TABLE IF EXISTS bet_match_expirations; -CREATE TABLE bet_match_expirations( - bet_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on bet_match_expirations -CREATE TRIGGER _bet_match_expirations_delete BEFORE DELETE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_expirations(rowid,bet_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_match_expirations_insert AFTER INSERT ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_expirations_update AFTER UPDATE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_expirations SET bet_match_id='||quote(old.bet_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_resolutions -DROP TABLE IF EXISTS bet_match_resolutions; -CREATE TABLE bet_match_resolutions( - bet_match_id TEXT PRIMARY KEY, - bet_match_type_id INTEGER, - block_index INTEGER, - winner TEXT, - settled BOOL, - bull_credit INTEGER, - bear_credit INTEGER, - escrow_less_fee INTEGER, - fee INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO bet_match_resolutions VALUES('44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b_08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12',1,310018,'0',0,59137500,NULL,NULL,3112500); -INSERT INTO bet_match_resolutions VALUES('3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68_75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572',1,310019,'1',159300000,315700000,NULL,NULL,25000000); -INSERT INTO bet_match_resolutions VALUES('674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644_4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9',5,310020,NULL,NULL,NULL,'NotEqual',1330000000,70000000); --- Triggers and indices on bet_match_resolutions -CREATE TRIGGER _bet_match_resolutions_delete BEFORE DELETE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_resolutions(rowid,bet_match_id,bet_match_type_id,block_index,winner,settled,bull_credit,bear_credit,escrow_less_fee,fee) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.bet_match_type_id)||','||quote(old.block_index)||','||quote(old.winner)||','||quote(old.settled)||','||quote(old.bull_credit)||','||quote(old.bear_credit)||','||quote(old.escrow_less_fee)||','||quote(old.fee)||')'); - END; -CREATE TRIGGER _bet_match_resolutions_insert AFTER INSERT ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_resolutions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_resolutions_update AFTER UPDATE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_resolutions SET bet_match_id='||quote(old.bet_match_id)||',bet_match_type_id='||quote(old.bet_match_type_id)||',block_index='||quote(old.block_index)||',winner='||quote(old.winner)||',settled='||quote(old.settled)||',bull_credit='||quote(old.bull_credit)||',bear_credit='||quote(old.bear_credit)||',escrow_less_fee='||quote(old.escrow_less_fee)||',fee='||quote(old.fee)||' WHERE rowid='||old.rowid); - END; - --- Table bet_matches -DROP TABLE IF EXISTS bet_matches; -CREATE TABLE bet_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_bet_type INTEGER, - tx1_bet_type INTEGER, - feed_address TEXT, - initial_value INTEGER, - deadline INTEGER, - target_value REAL, - leverage INTEGER, - forward_quantity INTEGER, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO bet_matches VALUES('44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b_08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12',13,'44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',14,'08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310013,10,10,310022,99999999,'settled: liquidated for bear'); -INSERT INTO bet_matches VALUES('3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68_75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572',15,'3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',16,'75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310015,10,10,310024,99999999,'settled'); -INSERT INTO bet_matches VALUES('674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644_4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9',17,'674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',18,'4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',2,3,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310017,10,10,310026,99999999,'settled: for notequal'); --- Triggers and indices on bet_matches -CREATE TRIGGER _bet_matches_delete BEFORE DELETE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_bet_type,tx1_bet_type,feed_address,initial_value,deadline,target_value,leverage,forward_quantity,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_bet_type)||','||quote(old.tx1_bet_type)||','||quote(old.feed_address)||','||quote(old.initial_value)||','||quote(old.deadline)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.forward_quantity)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bet_matches_insert AFTER INSERT ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_matches_update AFTER UPDATE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_bet_type='||quote(old.tx0_bet_type)||',tx1_bet_type='||quote(old.tx1_bet_type)||',feed_address='||quote(old.feed_address)||',initial_value='||quote(old.initial_value)||',deadline='||quote(old.deadline)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',forward_quantity='||quote(old.forward_quantity)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_feed_idx ON bet_matches (feed_address, status); - --- Table bets -DROP TABLE IF EXISTS bets; -CREATE TABLE bets( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - feed_address TEXT, - bet_type INTEGER, - deadline INTEGER, - wager_quantity INTEGER, - wager_remaining INTEGER, - counterwager_quantity INTEGER, - counterwager_remaining INTEGER, - target_value REAL, - leverage INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO bets VALUES(13,'44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b',310012,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'expired'); -INSERT INTO bets VALUES(14,'08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12',310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1,1388000100,25000000,4250000,41500000,0,0.0,15120,10,310023,99999999,'filled'); -INSERT INTO bets VALUES(15,'3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68',310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,1388000100,150000000,0,350000000,0,0.0,5040,10,310024,99999999,'filled'); -INSERT INTO bets VALUES(16,'75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572',310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1,1388000100,350000000,0,150000000,0,0.0,5040,10,310025,99999999,'filled'); -INSERT INTO bets VALUES(17,'674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644',310016,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',2,1388000200,750000000,0,650000000,0,1.0,5040,10,310026,99999999,'filled'); -INSERT INTO bets VALUES(18,'4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9',310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',3,1388000200,650000000,0,750000000,0,1.0,5040,10,310027,99999999,'filled'); --- Triggers and indices on bets -CREATE TRIGGER _bets_delete BEFORE DELETE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bets(rowid,tx_index,tx_hash,block_index,source,feed_address,bet_type,deadline,wager_quantity,wager_remaining,counterwager_quantity,counterwager_remaining,target_value,leverage,expiration,expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.feed_address)||','||quote(old.bet_type)||','||quote(old.deadline)||','||quote(old.wager_quantity)||','||quote(old.wager_remaining)||','||quote(old.counterwager_quantity)||','||quote(old.counterwager_remaining)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bets_insert AFTER INSERT ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bets_update AFTER UPDATE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bets SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',feed_address='||quote(old.feed_address)||',bet_type='||quote(old.bet_type)||',deadline='||quote(old.deadline)||',wager_quantity='||quote(old.wager_quantity)||',wager_remaining='||quote(old.wager_remaining)||',counterwager_quantity='||quote(old.counterwager_quantity)||',counterwager_remaining='||quote(old.counterwager_remaining)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX feed_valid_bettype_idx ON bets (feed_address, status, bet_type); - --- Table blocks -DROP TABLE IF EXISTS blocks; -CREATE TABLE blocks( - block_index INTEGER UNIQUE, - block_hash TEXT UNIQUE, - block_time INTEGER, - previous_block_hash TEXT UNIQUE, - difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, - PRIMARY KEY (block_index, block_hash)); -INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); -INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'a16ae7423db132c887ae41cc33b7fa48a0cc6571d5a49e0963be25ec8a9769b4','b8fb4fb649dd315851564165b076d636e5a85e043d59c11877bdccced38f1b3e','29e22217189ee2195a2889917cb7e650739d075d153652d3ce2cb57aa583746a'); -INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'0cda5c4a26f0b23d5b948142dcd226b2718c57c9c6a481250128a7a1c8ad30dc','3d8351ee76ca6095a663ac6f73ca9c69f583a423bf6ee7e80f3cf3a5fa7686e3','d2348511a51eab4e6998e0f8fdbd3320c93a33c628ca1449d3a90b62e4f6490a'); -INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'657c31576766cf1f8a699a14e6c7493498673f1948bea1be4f639247f4d52d53','57ad70e6408a9ef5998f087cc78ef0b92e55350a6abe943e1b8c81cfd23ea99d','63db0136dc6e23546656f1c9343430fe0451686c85d574564046f2aba8f682bc'); -INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'e11e7eeb21ff539c27324c94a407dc6f04c739f3ed9841f9f661bf4441e4d847','e9f393c9e75962af59b7d467cd99c4120fefda5274101b7c940c607a505ff656','f32bfed6fe1015cae4993ed7cc62c314264cc03f6e68339a97ad8f640e51fd5c'); -INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'2742a3e99eed62c09d9ecdaf501aa69b0d0b21fc092ca061448d5016957f35e0','5f65a652c524e543dad0e4f28628c3a517f2b0bcdd94b8e56c612299cf1c694f','8a857d90a208b911c6acda7ace837421a75fa65db54dba33145c9602720d398a'); -INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'49f526a56f21491c797e8e2559f722ded6f6990b1f69c55dc38791d8d30f4048','e102530532364d1fdb89a1ed3a57ee4140a667c5f5609b662d0a7180e6c491d2','5d2a01d92ece91f3cc63a0f7ca62dd02d8414eb252cc5dcdf1400a6e51d2b521'); -INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'78787c4c9537fc4db5d1dc7d31d4fab6b445d57021aab1a38d4bd6a9404713c5','804e0b50957b0c3c6fd068fd725cf11a089f46642a7560b0ea0373a9fbfd0c06','7e5c5b83cd0a4cfce12c1c7f56621489c9b2f33cdab706ee7d2a23e19bc16dd4'); -INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'5cc2599b63007433426c220c59a777b5c37b1165595f2ba239c3ce578c8055ab','df02aff4e5f00749cd828b4d9b1c915f5d462cfd32ef8689c31b369e2926d793','8feb75ff7563b01378d4214c07d88a6ae8575b25be2ca933c80366a7abb9765e'); -INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'9550db622e679ff3d63d814f9ffa743d57eb12491b213ef6474617a6c738c3fa','a67e4a72d7031c18318fc90e46c9918fc1d1aec3118155e991e34974d25809fb','033289b29d1433aa08cd7f5839304035f83fdea70b4b3f988af21cabd464630f'); -INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'08c005dd5bae7f21ca27803d75318ac4b968c6d4dd2c275ef284c03fea43b189','bbc31edaec3cab0582059cb42360c2f4643b2d17ba5582d6c094eec270477298','712f9c6f1ced53ad55706d12b9c8ad26366d1c95fc888c1350309fb646c5914e'); -INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'07f48634d06e6be1d800e068cd213a648517fe167ed89c355d9db966897ed7b0','9d7ba3c2711c68fcde94bb80676c0cedc1041445a3716a189e56f16246dd9241','2a0b2b021ecdda9cfa1facef22780a51a351753c78f7b1606f6a33c40a114d03'); -INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'8d0be0b3731bdd0d611e81b48efa6c706a983990f31bc563d57893f705b73aa7','2bbbfdb0bc4f2d2581c2f9c1349127d545d0c137b94223ed9ca9985e9eec6ba8','e190c68a08b85415071ebd7be5a5f552e5c658620c3bf492cc7174c0eb55a704'); -INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'e3de05180536ad40eb9007f19ccb819fee0586cb9e7c414dc560e506ae5c09b7','10c0af7d079a3247f17ea074f1e26db5e6f144a7ae8cc7775cf7acf075835dc7','c8e6a98f974fab801b45ec51cc8f077efa95f56f16bffbe2c144563a61648bc8'); -INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'e521556db091cc726fb38cbebfd10923e37dab652c51dca73a646fe5bd81bb96','317de66d42acf21c650ff0ba03552d53b36b618044b5f0581beabffdf053de98','42825b93aeed6be04e7097bd66125820c373f7603042ef3f3a21eae80ecdede4'); -INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'1cd6d92fbbca9266135a35f20a4328d510c8d209ba6161dc8c9e9bfa69032c57','b4d87c4fa900e051f0f77cac88d6736e16b1708dbfb84dec208b8586aa2ab00c','ae9feaad125b7aaaa86eea2919c629be12a4d2c776647081be35bf62f4bbbc30'); -INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'62759ea6d5070225bd30253a42b6c68fdaf2c4165b1b221b8e7bdddeb26e9737','27708efefad6f050e1b29dbf0c70a215cc97dad38753475449b1ba29ad6bfe7d','94ffe5415587dbe3253009dbb86fb5e7c3cc4016c3f9476f84a5b9c9e9873ccd'); -INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'f9fc0dd4d98ac5e06e4f9673cf5678f9fc264cda23172e24427b833331b73c33','cde400342c4b54aba15e9f7158e2efa3cbcc5d34d486e8f1d5f9ca5eb5cdb90f','28dfe3cb0c3d1969983e23c9d8d5301ca643a0462eff664f106034b320159002'); -INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'4a355b8e80a902030f384f58700d05da9a6efaae3f3ce0b1a056dc1250d9ec63','802dd7efdcd53c30cb0400ecdedc3f11530c4fd0c67239863ee31ef318217538','ab1e11e333c78d11d317cc1efc56384582587fa7a94707e3c9b7f2e421f62e83'); -INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'57aee8f9c9b63342ceeea3a3162998e9034a3d624d6d85b19782943ce170cef5','8825b355f948cbd408f237051b136a65ca8bc9c9eea96e5e5b96079f8fe68238','a38c893c8f1e67785a59174e91092b5d80a80abc08221f5329ac740fa1ff93d3'); -INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'d11f94528a9e0034365e4388ee455f02102d2024c65e1428cdee28b6e5aa7e1c','751c0e335abecfa25b8f3a8d5a92b8fbf030503fda632e2a1a8c56188699ebed','445292488d3abd5af6136c4e494e37068ab2b0cfd20af8a92f220acc158d4503'); -INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'4397f5568bfcf8cc90d1e72b7c61e7cc6905a0d9d3b3890c33e2afb464a25fb9','1f5ea74c90fccfd8d57c9d0d69e6120e9d834dc4bd7bf3055f1824d7b3023a1c','7b32e229ce7092b4bb8ef4f2081ff4f7309bdb39a89b052d921703d39544fce2'); -INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'16b7018344f7a97695eb17dc5921c4955b3f8cf4d9e70bd8628041c4033886b9','ff40fa96d3cf20f2b2ff3cfd9917d30f774c146d7f32c3e21caf17fd7310ceac','f5c4a01265af08d6d046f9fbacf3f3ea91ea36fff9300d489e2cd58d1effd497'); -INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'c3c26212677f4aed4614b653f1e5da509f962c29502d22c84c1c5522bca0dcf5','a679ec429c049a6a49d2f8723a4670fd571a60ca9857c5e95d1ce13094620d5d','72f64c8df3c10ab1dca5d7a60b10e2c25639a863c89eede9835159702997b145'); -INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'420b753d9e2a4ae5c00cf65efccb9a657d2daeb19159075d1671a076d8c1ade1','f0f05f6873612f7db442f9d4e91c1960f54748a96e5d55f10c32eb3862d9da13','fd1c358668bd56b1eacbd28884cbf04ecfe564877483b5bb7c7aafd2e4bf047a'); -INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'786e9c043df5025bb8d123322e2dd9cba30cc433ff90a44b7b7036369565835b','152764518b05cfddf93f2406a4ec705e05655318e7700d3835d22074a60e1382','c8f8ee885bd7ed9c381aab961a1670bad4cdb0f144340354a39ce6ffeee459b6'); -INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'1a2e0585eb1a7f608b4ca4b1d252f555f87e7f16fff124ed869285ec17643059','df89eee2900dad7b067b77f083995f0310d5823831d42cec93de0ac50207e682','598efab2674de1b356a8049b578478ed3f4ebf19e665c1d37d6d6267a380a114'); -INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'44a1f10e2df25328c38e20c36029bff557c7a93784030ece591406df9c71ebd6','aa02a74098170bbb8739cfef0e3173fbe1b6c8c39ea03789d86006648391b169','a3545c7418cf07c97d68a94df56d8ab7db2fcda48bd20be96803e7daebc8d869'); -INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'093f82c2b8e108242edc6dad72e5878700b9c33606c359e673bdfe65341db64a','62ca643090c76fa01ce6cf44b21e2addd859383083d39736f64b1b9e87ebdb37','b9ebc76db14ac6b57d30b6213fd7c04dcb4f39adffee5bb962aa9d79b9880ea7'); -INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'efac93e04f7cd9d3b1c0af3da102c29b50d940b4b5687fb0061b3b6e169290f6','4588c39fcc3d792c828a1ebe9b960ba26ceafbcb76dfe9ba8477124c9a64bace','0e2c1fb076452ac431ff36673f1ce35857de858a471a5dd96096722c8233d925'); -INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'1fa464e853787685a588de6dab287456de7a0efdcd76052a41ddaf5e2f85a648','b277558ad6ba95eaacd5429df1b8c574442fae5611bef798a6e379398e80f896','51b3a809bf3f091e8e647b8d3ec00d782a661f70351384ade7508b3f05c067c2'); -INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'fee866f1cf6e5f83010b97e0e9d88b54ce43fdf45e89081ba3b2fe07b62434fc','da97716c3fe85623b897b40969a060408ed1b0baf43b94b57f8f1f60cc60a21e','29492868ddcaf0e1426bfc96fdcf3ff226786c44484b3db46c1aa2610737ad24'); -INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'11ed526c46610698e7a4f102ae91755a541d668750ec3bc10decd0c1709d1115','b33308238932a5e990eec65d68b9c85e000e8b415fdf9ac854341fda985777e6','ed7a7aab9ae15ae2574bf122732c6ecbee0a3d1273c4ba6f56505112d9bd406d'); -INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'7930e5a2c6150df64dfd995801aec68ce11df292e206f08f7ff20eda9ca2d017','ceff744404eb4e264ed87bc5a0383a74b106abf58d93f5a241d905a2511d31b6','82cc1e421150eaa06c41c052139b1c27c745227ff0939742049cb49b940e1229'); -INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'c5834a54b3ad7f9fdbb18a87c8cefe867eff2ba1ae5bff238a3a041431d0afdd','04ca39b1e5bae08454823abf193fa8b6a7f340c65f0f2227117bd9a06053d37b','0b9411bd364363edb2fd25df4c9e5e1ac53062ef6ff783b9960c8a662270cd15'); -INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'5a4b3f29cb1554ae8f670955df4dde45fdcc57623a50ca7d8f2c78ad79186a7a','fb0303408499c6c350fdecbb8170993dda6394a35e5744b80d3cbadf5373bcc6','fe5c12e08dbf6e1b45400970b99d017f25b31916ca72830e5801dcfc71a77987'); -INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'b81834ed9e92514fe7d277378be72e1f81043a615a4b67cb67dbcf97e3c3b43e','04f5d7c6f22e175de424d8dd0ec8e7ba0be83829de699c7ab34dbe7c8907c74c','94c1261ef38a623e940f67c763723dd30410a292d808317119c6aa8e4a54dbde'); -INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'736adff04611f10a4e384b5d5c44651bdf037c0caeb8dda5bedbbc6d18d04ca2','1838c4dde6271683953d8c28f345cf857438a549796ace10dcd95ff577f4c76c','6fb4e02810201d385388433e534a6d3eb147d085ced4f1d82b3c207b1b2b6d9e'); -INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'34d49fb14a7ec85ebd02ffe04768f5aa7382ed0ac7f9ae903e71567dc5d9ab67','9712dab4f78c6514fff6ffe8dfd012f50d7e85bb30bd7b6078e235e3766e5c23','29ff27c1d66f7c4a531af18ff8b97c24cec9f7f0c1012a138369575523ee227c'); -INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'9bfc3bf0ed35dd256f0df04c813dab9dd818238163e6b01842e18815971e7010','155aa04c676193e731e66466265c7dc889c444eacfbd3067b10f2192bdcf0660','f5f9ef6481899446a83eee4a4aa6134898e62dd55b7aa3265473e0a1cdea7416'); -INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'da7a63f22053d1713c805684d14695c31670eaf848bf23eee3331e679744f291','acd4e587e1ff4fe6f023793ed279f49528e3f6b3746ee116432f57f86d2141b0','ad6a4d39f86bdd4a66c77f757cf1030b9055416523fd3b82edffa84d9c40c294'); -INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'ddb485115b64342bcb172cc3e77b20effb1294e635459119b59179f3b6a87d66','3166c77868258ffe4a298464a7de002338c1b9180bed2b7b6b92eb29b2db9da3','d4bec62ad76a556c82fafd354e2cff92cf20532381d17bfdc47224a0aa4405aa'); -INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'b58d05ae5f282f7904c7a759ae5624194b5cb091f43f05d738cb4002a999c26d','165527c83164f81e549984af8397c31df040dedc3808d506b77568ac5d63af60','eccc50a840997546f4bbf2c5691be225f8b52ef8ed158912b11db162254b6d0c'); -INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'c18e1989fccd8bc7168ebf2acc035c224a9010b428b81c814683b0ce1e244113','2634e5e0d4b869288cef4f132c69ef037754f9c847f58f2a43e9767da4714d97','dfac0e9e787e566deddd6cc834b173fec58ceb9ad85ed26b47005ffb5cfbf3a9'); -INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'1a935492fce6a168d9aafd24246bba6f5615f53a47311549059b21adc6a67154','3faf8dc8d1460619bb9e74875550df14a19628ce7d3c0e466ac10e1acf79d785','ab543dfd963298b1879ccaba815112da073451304946c337e7c71baa9301d702'); -INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'536611cb3cb3005f8c4ffc5b8ed8271734448b5d6f49bd47eb0456bc4ee207e4','1c216bb1260cc537636aba1dc0f97879abd10b54c1cfe2addaebb2855b89a886','72a71d7d05b574f26c90e2dc4d42adca678b541518010ae2f735b17b6f621503'); -INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'ebbeea29c073c61dad3e091302cd945a9926741db0dc6a918792c4c01b8cc30c','4a3ee7ecfef91572383c4a06f164cd4304e891cc5776867799fcc806c87ac6fc','021f5739c8a46280d5578fa6d76dab63bb521bafee792f04a4d8ed34fab43f62'); -INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'d9baff8bec82f3c29f1fa69c9ddd456f1867f33a55d1648605ea7109270d8e07','424998bde43db2db76959e12f2b2a18d92f3a18505b4ca43f6a6a21c59227950','b81aa5d4896d06e990244db2755b060f2ba431af73b4129bbdd3ffc54f15d4ce'); -INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'09ad4a6bb3f671e6ac6d595bcbfb82371cc41f35c309142678eb5b7df97a5de5','08c7a43a87ecb1f2d4db879c576d42265b938ae146d606677d9de4f0c9103039','34dbf7d72872b04cd458501d3aa0746cb9b35b27cb4d251b3b45afe6b90a92fd'); -INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'208200708851a32b0ffaecade58f78f8ba7d5820457c582d5ca127e16fec0952','1e812a4029d16f0a60f34c1e201d43f970c2d42ac74bc6cf1e64232d2ba07538','1778b98fc6b9cc4a4d4dc496323ae78a5dd61b910028cc4fe55f4462ccec8280'); -INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'9d1a7335d989bb73b0363bc88da6dd82c0fbaf064b1d70708b0aa2f6a8a9958b','44a33bfd0a9c9b650a64197a2b0ab342373a34b03b43f4bb91385052210a0418','f788888439a1c02b1fd010464f5646d219fa874fe098b4025be9471fe19fa0d4'); -INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'2fd9039e49fcbb070315defae275bed858cfbb539bc4db8f2ec5f5ff6d69ea25','0bf8dff78ddd86f736e4c10b66080c590ac82ec7aab87006d0d3fd5fddc6c7e8','b3e0cc571c83c01b5fc71586f63d406cfc22d10b1c1c302245210a76f44c1902'); -INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'2e97864865a020b04ed60b22c347d9dbebce5d00abce86c2b3a5054a3184699b','1ddedf5101dc520775c61c73000150adabed385e201c04fdcc814870aa3fb036','048f54bc433772bb2ef9b440a5e33e5a1f749a3dfdbde9907f02fe83d3e03f46'); -INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'f6a8e9f4cde78fbf6c9a5ea176312116f3813f2c0bcaee6c92f3beb13a8c3899','9c308536749ecfe35414252367f6d68b842acc7905f2737fae80cdbc76223506','657bc671c69a9ae92027c4296d73ac77f091597fada9bca779f995134a4b6996'); -INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'1d84e4657febaa291b4873d808d9ab433370227976196fd6436a65839c3575d1','ea53a531412104a500f7777a1281a1865e131e35cd6ff6b07c708c6b1b5db43b','36d8c93305b597ae53cda8813592700780d3f627870e295fd1b200683157b077'); -INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'083f6b773191caaf1844f47c53077e8724e100d0b46461ddaa642b88d5265c9a','d5d229022718ce473ba646317f5d0e97b9578c7120229fffc41635610daffe47','324690c95f7be2985dca6c1dda23a10ff4758f2d5f02bcdb10851b60cdbd7b6b'); -INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'b1302087b804fc5753df5a4d8aaf8626e80ff99b429f52fed97767b051c24e8c','61676027fe3cd657040a248007a8fb16eb08dee3dc28fb16eabd5c648df835fa','37c43a4a262ba1107ab8fea848c68bbd6622384ea7fe676f0b9c53d19ecbcdb6'); -INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'956c9ca0b51eaba7343703a165eb96d5947fc764457ef3dde5ca90c18d3b2f3d','8c1d4744e43b6cc21cc041af33349cddcec980fe740f1776564bbb9d5068ee23','c02ee1975e98d7c9cb34bc5010602233d66e7fab5c9ecdafffd2014821cee5a3'); -INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'e86cae3e73aa13e8498a98de335ed0cbdb7899b24e91839bbf0f50aa22355ecb','522c293ddc948650e5b0c22e956ed3e1c0de804fa68d5d308399acac4377dd28','20bb812c1f31b47419a3ad05db36828a74208e922ca222b9c5668a9592070544'); -INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'54bd5e4fc1bc17df27f9e6f22b5e1facd82229a877e09ec0136f878f2da81344','160a607ad9174c65f27367dc9f8626402d14c2193af90d9e41a3105d8dc05ca5','e69a4d8c0dd9df4ccf1b4ff412f9cca4970d345f1d3d75caf153d407d4ece35c'); -INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'1403832427d4c482b0d2d925e08a72fe37f5aaa6af73e74f601f7e22fdad7662','63eac72bb92a30b6525211612a1c40610dbd1c4e2748b596bbffe168ea576cc6','15815b72f90d80e58ef76f1452f7a52cc7f86acf443ff8cc99c57d2a4d93a19a'); -INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'7b08f124a953d0e5511b0698d3314f5ec71ebba77b94c4d236ff9738d5a587e8','01890f7c4932de0cbad12db5797333551ef9e8efcd4196ef66098d94460134e6','64f0803bd6631cb0107e9d1e38ae9d56d07fea300653dab84d1a840c2c77a7f7'); -INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'1de158dfd18413618b9800236a2aa265d2fab497b09a839be408da8871b0960a','27b39e701ca30ee796e407d1ad18e9dee4965870f96d5d095e483d9d7f4dec5d','740f44c46a141ab36092d50ffe4335618564ee86b7a5f80dc05f0586ad1bb63c'); -INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'aa4be540bad6cd762a02b77856c3d6a737d90245e71f61b63a426573bffb3a4a','4cebabac55d075f4895e1556e74ebd87efe80e90b3705083020f46c9351f4228','4929c78a9d202aac03bf85a3e450fb1a00b6234c8cc75967e2a40bb2f52acb97'); -INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'49edce8190c2480fe3c6b3df7c7c5f13d34f67c3aef3b2aa12eaea603153aa83','5916716daf44996899cca05282527b5e3b4327bede3c1191c35758802dfe90a2','6e80724ce47f9df8bd2f278a074daceb47fb658bfce00d7b49e29ad959761bb0'); -INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'a2a8c9946cf45490858deb15c8f277ec545854dfc02dc9d248a684c0c3544d6e','ca04e3d8a596180b134770ed2f868cb8ddc826be9a1ff8adb7b7d502ef72e279','6ea4ec35f9a7f14dc449b7e6367bb42eac5bd24a41ef309aaec4ab3130e0da3f'); -INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'ca1e5d385fd9cec1184d28095a6f4a2ec2914d40cc016309fe322dbb335cf2c3','6bf60bdad2e88fe236287447ca91e03e802c188209f4525e0c39d54e34c00cdb','72a42bc063004207a83bfc04f154bcbd3176d3d3f9d7e91c72bff9fdce604b50'); -INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'73519f53874cc8cbe9052bf8dd18c590e0a4bd5bdc2a286c4930e8cfd006a993','c777779b79d22bea24211c8dd2dabc77b6587f32b93427f74de9d075b9af0749','3d093ff9badeef100b26303cd9b9e87a65ffb8a75c9b14ea5ac53bc7f3f5735b'); -INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'5de09a95e36480de84f9d3c8db3e18b7bf5145f8b6ee6bde57b5c3de11274cbd','e323cc0632bd007c468c22b6d8b1e9d1d2fb1801cedf074542bf5e30473f5085','d561b007d7149b41c7647bf248bc2a9edf147119e694b581f18ca69d403d0925'); -INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'be6a452931358d500eda0fd2aa3a91b86483fa847a7bf350f23d33d85712592e','dac02ac01a7cdeda193a1e9c67130b245903c994ee35a1076bd5c4f70e7938eb','fc3920458640eb2b9f6767770a6d2e6d40e868a223d684feaee19ec0d66e24fd'); -INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'5940a47dfa1a1c8bc1e51f1e64100cd0604c74197c88b39f6f7a9d5b763a0b56','acbe463d047989e333688eec3ac6ea8a714295b46bd5941d34d9f870e59b478e','4d379658a33656e957410e5e551491c39cfd5129c3a4b0ac330b191376e58d01'); -INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'6aebe68545207e7cc81d68c3aca801f0b39e276ac86e8e0130d5029eefb60e2e','fac718dec32de0113e5367c49ca9aa3a65dc8c642c065d84add8930e76f89dc2','faa263073b5d409eb4559be9024e3c5f35a1a65d591deed369d5fe0689ca9703'); -INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'d005aff752907b93e2dfe442896c8976203f0139fb67cda3ea1936aea495e008','50d09df37c56842331b8bf7ea11d8fae65a2e89a10cffb90d404dffc638c2021','1fba4a34677ed81ad5c9b2e4e5be4efcf08c46c7dc8b446638db0c7528d42fa3'); -INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'781f0ebe67964c25640f0bf5624e08cda546dbbb6648bd6e8d9f280c7f075f7c','79e3dd5c8c2248a7df858251114914018cb3857cab22d1386c02431144c7476e','a88330538f58ba1e1ba63c805f8b90e16016df58a462dc956523fb4e521d6583'); -INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'83b5e1ca76fda895b144e8c03cda5fc3d18f6324b5413fd74923e51a94ccc53a','98d8b47e93cf2febf5aa3f1d9cffc62db81fc9c2c2617b2d19d8d0a752be4c36','a24d04858ba03081e2879cfcd2e3917fd55874549e3b885dca56980b18814266'); -INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'4293be396327c0aa3c56c77a9152068cc32612692c76ba94e8961c59a9ad780f','9f8040bb1ae80db6f688dd33c22e232aa93ebdaef05a6a1d39c892fb92792f02','bba2b1acfec2fbe985270270b7bdeb79ea9284aa8c028062b7ef772c719291af'); -INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'d08b93b609f1766534cb0c30502350b9e4ccc4a885ebff7633e9e5c5b52d8e90','2b6379742f7931f79a9e635d1e77a73b038ce7284185554a940680923c3b669b','94a2bf137ebb50ce7e81365da2ec01d52743d3145511c91ceb2a381e2e4dc5d8'); -INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'06c72d219df429f2873af74b6250f3d12996cce14496d151bf8bd4cf819532e4','f4e198e822161dec5d4b0fa731095a5ecc43c1481055ecfd576ad1a6a7a9c414','d17c0ed0e2952a7cc4dd87daa7849cff0c28d04f2227f18477bc2621a18fa711'); -INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'0ff019cc4b9b8a394aad1b9f8f579fd5c4cc48a846e4fe71ab2f45226cec5a1e','5f2aefda912b814c493c6803e24d81ca54c3c19e15dc87f2a288a5cee5acfbed','2ac8e37638223e80995972eecf08e860f8cf544339eb138eaf7b2ef6c20bdd67'); -INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'6ea40a02464725d0ba45b9969bdbb7529ae5e3ca794ae00abf4783bfc9667104','c4342fdd4ef024f8c707ce29ef69165b39f1be83ceced319759720f0fe21fad8','4b741723413227cfe2d70f0922497dfd2012cb4727d1b81bbc38b9ec44ec310d'); -INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'076abf036bd51c47525fe4e638dbad403a8a1667a5b7c2f81ffc2a70e79b80a8','96b310bf0ae4ef2ce6a9a3dbab73ad2a69e96cd48efbf9085ce4f9fb5fb0ee96','8ac5c0fad3f3ecadbd10089ebaffaf3c3ad6388300145b386d1ab8a9b0ba7be9'); -INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'8cc2e62f7b3ae2c89977ee9e31acacff38f944d00a978e9b0e48678487cdbe27','72bb783e61790691179e62643ce86792914697ad132ee524fee212f2d33e8087','18e851c3742a6bf0d7d3c3c702cbb7d35229a88d0c6e70e35d975bc464bfc717'); -INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'ec86fa6786b598b091121fc2001650bc04668d26d88805efff7271312c76a373','0bb9fabea98c5e4f720030e030f77b3960033385fedc9357954a2f23c829245c','3e7ab881b3557f286f21f0865366b66a998ef69de3c8caeca8cfebcebe3e0cb2'); -INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'6b720db96b2d10816e5022ab8c61fafba49cc6bf484909fb500295451e61f768','0f9ea91fe4e2c012042724e34866c5000d26ca5bd3717107ed91555f554b86b7','57ebbda7e3b0403c74a96be905cc7594f81716b016248d26d6cfce4d5ab9d39c'); -INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'d8c6fabb9b9dff0f1f3ba35e75c08be55dc4ded8dcf54e51f0cd857625b87dc8','0f56427ebb8b63957f4c1d70ecdbd51f3d1c89f76416bc290003ec3cc2629d49','89f055098bd851d7a8c208d974c7ea77e518fc2531516fb903a32cd213243914'); -INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'eba03194b13ca764dbfbb86f86d16841df4486f12c26a214f7f1020468b52d27','71837daf0d464712caa10bf1c02f30e0c5402aac19c92fa91ca1db7c8f84e87f','db7f921ea738b26042bc46f5f75ca81dc0383c1e804dada7ccd5ab91f1853c48'); -INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'d7fa8085722edc91ea5cb907e439649533e32ad5429b52bc10463629719af5ab','0e5f52a95be1dac079a0600eb868a73c21d7c8e8e6855c425c9fb7ce7ca62cd6','af550dd1718191cc5b371da3b82d16e923206aef67124c1b2589413a17ff2521'); -INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'e84e0b26a5a67af1bca0cdadadea17b52b79f160d8acc0281289de1c70bef248','17fb8ba3aac1556cdaf6bbf962365d971aa632e95f8b5c179dc279c23189cfd9','0e22415d87f2b2f372c5c15cbca66d2e71b2e77599d17c7a5121d3382653baf6'); -INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'ac3522ba0e8278bac956b5f9d7af271424f8e4eff23d57d2a5ff88416dd02ff4','991a948d60c61b5d6acc02951bce9aaa8fc026e571921ba99a54e5d97e682a37','d7543b97499bf697edd957f1e8c2b6b3154b39dfe43aaa81372cbeade846f65f'); -INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'86255a3e32e6c7a96d0f0a6e7815d61d9a970272f1df38bb0c29ee9f2051f2e4','a5a61748cb2fa9409efed49ca201e29fd3e4f7754c74ea1a86fb69942cc7d190','032c011448424f293eaa52a9af6ef9e80a9e69c92695da7e5408af872d30e784'); -INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'9694fd19263381693133a47584432de876ef1e0a32060d52c8db96811ff7d09e','35a0939d03abeaa805e638daf023a92bad989a97a4ad9f1e311ba5c10e64fa59','474806edb8674281118f48c6b5677d4bbf59b7c9f7329764732771030ebda0d0'); -INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'3cb1b469cc6627cbed3f0db1a00370d5c95edf9940f8a4c9406fc78076640d90','d02844061e67847d5b58f10de3e12fb5543d60ea104928c20889d0d5e3dd2fe8','5c460bb70667372516cc3ba1fd33082a123db9e155c71622d647a84886cb9c7c'); -INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'cac7cc49c1d632aef2e9bcb3456f60df2ff11110c4e9980989ce0f2d8a5835e1','4e37c6cb4c778d2f849b4798ccbd1942af059051270de489d4266924a703e53b','2b7d94a10eaa2883d0860d6c73710a8307e87f54bb6cf1d82639651a40c258ef'); -INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'1614a317b1144c7f08fb2785bf468bb299b9f19450331b7fdfebd510fa07e574','db44cdcb38fd9653ca8ee1a72a5024c8d54c993b59d434c370b20835c60bf504','2a37c7edf18f6ab0a6e28bc978d17feb36ee296fcf9b53a57347c1c2833fd0fc'); -INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'631d42f4b3fb091a4c67f737bc2da60b8bf9820d27c758f5b9453b40813c5bc5','aad64c92a4de5c942193c7448a37c4112798c0d5e23f091fbec82e8b3b2b9747','4b8cc648099185ea0061c15d8e3810eaeaf6fadf4d5e424c1d5fc057dc98da9b'); -INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'2b3f460da72fc0a9b3a720abca80bff0c44654287de69567c43c62a5557144bf','8dd1e79d95296e1a931740d0dc6109b72a4f7eb05f8fcfbc325751b08347961e','1acdcc0092f47d1039f5791a476432f8fb18365f36fc1f49446292a0a89f1d5a'); -INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'db62bf94ddb276cf55ddfe73f8023e760788647910807adff6e0672ce1d5e23d','e130340fe094c2e1ea313f73ec63a3f8622bb0f3bcaee3f2ac6d615d24869521','ad66de69d26ea7c3c1819706f20b7c677c73b3c3987d9797d5b2efb0c167b877'); -INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'1c427808f1eb1972df57b51eea9f3405d3d63a1d58c5a3faba616d7160e3a264','e19a19a26bf0b3092d87dd5e24bcbbfee514d1a25401a026a4e8485e92c187c3','322f4a63e0d57a69498abeb47d3114c5f362975666faee3230929e1c5d646d60'); -INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'cd28b5ac0f80f8815467663c1e90b15ffe46ce067a1b2ce004b0d371cb0ceb16','3d987da5850f190e930b0b282a00c86d86fd3db640c0cb5c32fe704c197135b2','1b1ad1fc9515afd756871e7793ea44627d228924cbce882d2e97dbed154e98a7'); -INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'69adfbe756c116e395fb3a5170b57210ac2721b07144b3d7a35c4327f28e28c9','e729db125384db60646578da27354ff5c4e81d089268decec9c62356b7f173e0','99345fba31a1da3374502f15bcac36d36959376fcb5e60cea54211828015e7c9'); -INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'d50cb66a25a410db360cdf749b5d10932410b5e37c3e5d3d834a65b5671dcca6','9ec378057e383c451ca260757489dd36da9660b18f4202e9051736d6f979f0ad','7f1e7ebdb1d2a52ab47a16f28e50c2b856be48e5dc9e575b9a50c5cc5f98e07d'); -INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'384f8d2eda5f1b7b8273ef149ac37fcaa9ae51865fd57bd348339579b8a078eb','fbbc180a2e56c6f8440b2930a01a16820aefc4f463e42717e238cd74be66217a','2c63eab89b59c98ed99f1165bcd965ab9c10ccd639267206c8981fa5d7eff145'); -INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'5eff25450225c71f85f34466d6e359001eed8f05ea5042e7d65c30ccfeb6098f','24349767075b38124a94fd480dd5f4c5b7ff491676d7161d58dd6987a9c1075c','40efdec5807a456c18d7ea6197f62fe7a32d76b67ee6aff5f0eb5386a965e8c3'); --- Triggers and indices on blocks -CREATE INDEX block_index_idx ON blocks (block_index); -CREATE INDEX index_hash_idx ON blocks (block_index, block_hash); - --- Table broadcasts -DROP TABLE IF EXISTS broadcasts; -CREATE TABLE broadcasts( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - timestamp INTEGER, - value REAL, - fee_fraction_int INTEGER, - text TEXT, - locked BOOL, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO broadcasts VALUES(12,'fb70fe2fe539e5ed1950885c3385ecb01d27ccfd583c6dff94006b3a55866e72',310011,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000000,100.0,99999999,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(19,'3c120af6e8f350e4e55e319d699e7f715e5b049f94491c5706426ffe101e1452',310018,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000050,99.86166,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(20,'f1b036ae3c9e9be338370b7be53f0210b830bd86ac2ddc7a757b80c2f7fb093f',310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000101,100.343,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(21,'63199a0ec21c2541171b644e4e3876a81d997d238fec82b62baea7baaa33aaa3',310020,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',1388000201,2.0,5000000,'Unit Test',0,'valid'); --- Triggers and indices on broadcasts -CREATE TRIGGER _broadcasts_delete BEFORE DELETE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO broadcasts(rowid,tx_index,tx_hash,block_index,source,timestamp,value,fee_fraction_int,text,locked,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.timestamp)||','||quote(old.value)||','||quote(old.fee_fraction_int)||','||quote(old.text)||','||quote(old.locked)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _broadcasts_insert AFTER INSERT ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM broadcasts WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _broadcasts_update AFTER UPDATE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE broadcasts SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',timestamp='||quote(old.timestamp)||',value='||quote(old.value)||',fee_fraction_int='||quote(old.fee_fraction_int)||',text='||quote(old.text)||',locked='||quote(old.locked)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_source_idx ON broadcasts (status, source); -CREATE INDEX status_source_index_idx ON broadcasts (status, source, tx_index); -CREATE INDEX timestamp_idx ON broadcasts (timestamp); - --- Table btcpays -DROP TABLE IF EXISTS btcpays; -CREATE TABLE btcpays( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - order_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO btcpays VALUES(5,'f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f',310004,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',50000000,'82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e_371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1','valid'); --- Triggers and indices on btcpays -CREATE TRIGGER _btcpays_delete BEFORE DELETE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO btcpays(rowid,tx_index,tx_hash,block_index,source,destination,btc_amount,order_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.btc_amount)||','||quote(old.order_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _btcpays_insert AFTER INSERT ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM btcpays WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _btcpays_update AFTER UPDATE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE btcpays SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',btc_amount='||quote(old.btc_amount)||',order_match_id='||quote(old.order_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table burns -DROP TABLE IF EXISTS burns; -CREATE TABLE burns( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - burned INTEGER, - earned INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO burns VALUES(1,'5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb',310000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',62000000,93000000000,'valid'); -INSERT INTO burns VALUES(23,'df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1',310022,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',38000000,56999887262,'valid'); --- Triggers and indices on burns -CREATE TRIGGER _burns_delete BEFORE DELETE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO burns(rowid,tx_index,tx_hash,block_index,source,burned,earned,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.burned)||','||quote(old.earned)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _burns_insert AFTER INSERT ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM burns WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _burns_update AFTER UPDATE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE burns SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',burned='||quote(old.burned)||',earned='||quote(old.earned)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table cancels -DROP TABLE IF EXISTS cancels; -CREATE TABLE cancels( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - offer_hash TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on cancels -CREATE TRIGGER _cancels_delete BEFORE DELETE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO cancels(rowid,tx_index,tx_hash,block_index,source,offer_hash,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.offer_hash)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _cancels_insert AFTER INSERT ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM cancels WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _cancels_update AFTER UPDATE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE cancels SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',offer_hash='||quote(old.offer_hash)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX cancels_block_index_idx ON cancels (block_index); - --- Table credits -DROP TABLE IF EXISTS credits; -CREATE TABLE credits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - calling_function TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO credits VALUES(310000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',93000000000,'burn','5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb'); -INSERT INTO credits VALUES(310001,'2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'send','63242f35c724cd03163541785b69fbd620df9ebeb72706a0caeb5e19ce7680cc'); -INSERT INTO credits VALUES(310004,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',100000000,'btcpay','f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f'); -INSERT INTO credits VALUES(310005,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',1000000000,'issuance','ddd50ba93798b76cf1342fbed755b5aec4df77b99622d670ea70dceb21f8c975'); -INSERT INTO credits VALUES(310006,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',100000,'issuance','b693ef32344d5663f9a8368f6bbb311cc06ebc19bfc2818455af2ca098ed8f06'); -INSERT INTO credits VALUES(310007,'2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,'send','cfdba3d6b7a8dafd12d45751395d3a2a99e2b36456d68db5e2080ce8118503ab'); -INSERT INTO credits VALUES(310008,'2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,'send','0f649981bbe02942cc0e2f2e43cdb6e41d22c9275506792873b89b683e023f89'); -INSERT INTO credits VALUES(310009,'2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',24,'dividend','4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3'); -INSERT INTO credits VALUES(310010,'2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',420800,'dividend','2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7'); -INSERT INTO credits VALUES(310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',4250000,'filled','08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12'); -INSERT INTO credits VALUES(310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',5000000,'cancel order','371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1'); -INSERT INTO credits VALUES(310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572'); -INSERT INTO credits VALUES(310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572'); -INSERT INTO credits VALUES(310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9'); -INSERT INTO credits VALUES(310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',0,'filled','4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9'); -INSERT INTO credits VALUES(310018,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',59137500,'bet settled: liquidated for bear','3c120af6e8f350e4e55e319d699e7f715e5b049f94491c5706426ffe101e1452'); -INSERT INTO credits VALUES(310018,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',3112500,'feed fee','3c120af6e8f350e4e55e319d699e7f715e5b049f94491c5706426ffe101e1452'); -INSERT INTO credits VALUES(310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',159300000,'bet settled','f1b036ae3c9e9be338370b7be53f0210b830bd86ac2ddc7a757b80c2f7fb093f'); -INSERT INTO credits VALUES(310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',315700000,'bet settled','f1b036ae3c9e9be338370b7be53f0210b830bd86ac2ddc7a757b80c2f7fb093f'); -INSERT INTO credits VALUES(310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',25000000,'feed fee','f1b036ae3c9e9be338370b7be53f0210b830bd86ac2ddc7a757b80c2f7fb093f'); -INSERT INTO credits VALUES(310020,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',1330000000,'bet settled: for notequal','63199a0ec21c2541171b644e4e3876a81d997d238fec82b62baea7baaa33aaa3'); -INSERT INTO credits VALUES(310020,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',70000000,'feed fee','63199a0ec21c2541171b644e4e3876a81d997d238fec82b62baea7baaa33aaa3'); -INSERT INTO credits VALUES(310022,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',56999887262,'burn','df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1'); -INSERT INTO credits VALUES(310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',8500000,'recredit wager remaining','44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b'); -INSERT INTO credits VALUES(310023,'2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10000,'send','ff48aca435aafe8e5fec706d3dcb2e3e54710e797ef43d006206136761371bca'); -INSERT INTO credits VALUES(310032,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,'cancel order','dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41'); --- Triggers and indices on credits -CREATE TRIGGER _credits_delete BEFORE DELETE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO credits(rowid,block_index,address,asset,quantity,calling_function,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.calling_function)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _credits_insert AFTER INSERT ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM credits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _credits_update AFTER UPDATE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE credits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',calling_function='||quote(old.calling_function)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; - --- Table debits -DROP TABLE IF EXISTS debits; -CREATE TABLE debits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - action TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO debits VALUES(310001,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'send','63242f35c724cd03163541785b69fbd620df9ebeb72706a0caeb5e19ce7680cc'); -INSERT INTO debits VALUES(310003,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',105000000,'open order','371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1'); -INSERT INTO debits VALUES(310005,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'issuance fee','ddd50ba93798b76cf1342fbed755b5aec4df77b99622d670ea70dceb21f8c975'); -INSERT INTO debits VALUES(310006,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'issuance fee','b693ef32344d5663f9a8368f6bbb311cc06ebc19bfc2818455af2ca098ed8f06'); -INSERT INTO debits VALUES(310007,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,'send','cfdba3d6b7a8dafd12d45751395d3a2a99e2b36456d68db5e2080ce8118503ab'); -INSERT INTO debits VALUES(310008,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,'send','0f649981bbe02942cc0e2f2e43cdb6e41d22c9275506792873b89b683e023f89'); -INSERT INTO debits VALUES(310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',24,'dividend','4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3'); -INSERT INTO debits VALUES(310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',20000,'dividend fee','4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3'); -INSERT INTO debits VALUES(310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',420800,'dividend','2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7'); -INSERT INTO debits VALUES(310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',20000,'dividend fee','2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7'); -INSERT INTO debits VALUES(310012,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'bet','44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b'); -INSERT INTO debits VALUES(310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',25000000,'bet','08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12'); -INSERT INTO debits VALUES(310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',150000000,'bet','3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68'); -INSERT INTO debits VALUES(310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',350000000,'bet','75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572'); -INSERT INTO debits VALUES(310016,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',750000000,'bet','674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644'); -INSERT INTO debits VALUES(310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',650000000,'bet','4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9'); -INSERT INTO debits VALUES(310021,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,'open order','dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41'); -INSERT INTO debits VALUES(310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10000,'send','ff48aca435aafe8e5fec706d3dcb2e3e54710e797ef43d006206136761371bca'); --- Triggers and indices on debits -CREATE TRIGGER _debits_delete BEFORE DELETE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO debits(rowid,block_index,address,asset,quantity,action,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.action)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _debits_insert AFTER INSERT ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM debits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _debits_update AFTER UPDATE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE debits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',action='||quote(old.action)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_idx ON debits (address); -CREATE INDEX asset_idx ON debits (asset); - --- Table destructions -DROP TABLE IF EXISTS destructions; -CREATE TABLE destructions( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset INTEGER, - quantity INTEGER, - tag TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on destructions -CREATE TRIGGER _destructions_delete BEFORE DELETE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO destructions(rowid,tx_index,tx_hash,block_index,source,asset,quantity,tag,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.tag)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _destructions_insert AFTER INSERT ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM destructions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _destructions_update AFTER UPDATE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE destructions SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',tag='||quote(old.tag)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_idx ON destructions (status); - --- Table dispensers -DROP TABLE IF EXISTS dispensers; -CREATE TABLE dispensers( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - give_quantity INTEGER, - escrow_quantity INTEGER, - satoshirate INTEGER, - status INTEGER, - give_remaining INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispensers -CREATE TRIGGER _dispensers_delete BEFORE DELETE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispensers(rowid,tx_index,tx_hash,block_index,source,asset,give_quantity,escrow_quantity,satoshirate,status,give_remaining) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.give_quantity)||','||quote(old.escrow_quantity)||','||quote(old.satoshirate)||','||quote(old.status)||','||quote(old.give_remaining)||')'); - END; -CREATE TRIGGER _dispensers_insert AFTER INSERT ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispensers WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispensers_update AFTER UPDATE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispensers SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',give_quantity='||quote(old.give_quantity)||',escrow_quantity='||quote(old.escrow_quantity)||',satoshirate='||quote(old.satoshirate)||',status='||quote(old.status)||',give_remaining='||quote(old.give_remaining)||' WHERE rowid='||old.rowid); - END; - --- Table dispenses -DROP TABLE IF EXISTS dispenses; -CREATE TABLE dispenses( - tx_index INTEGER, - dispense_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - dispense_quantity INTEGER, - dispenser_tx_hash TEXT, - PRIMARY KEY (tx_index, dispense_index, source, destination), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispenses -CREATE TRIGGER _dispenses_delete BEFORE DELETE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispenses(rowid,tx_index,dispense_index,tx_hash,block_index,source,destination,asset,dispense_quantity,dispenser_tx_hash) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.dispense_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.dispense_quantity)||','||quote(old.dispenser_tx_hash)||')'); - END; -CREATE TRIGGER _dispenses_insert AFTER INSERT ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispenses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispenses_update AFTER UPDATE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispenses SET tx_index='||quote(old.tx_index)||',dispense_index='||quote(old.dispense_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',dispense_quantity='||quote(old.dispense_quantity)||',dispenser_tx_hash='||quote(old.dispenser_tx_hash)||' WHERE rowid='||old.rowid); - END; - --- Table dividends -DROP TABLE IF EXISTS dividends; -CREATE TABLE dividends( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - dividend_asset TEXT, - quantity_per_unit INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO dividends VALUES(10,'4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3',310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB','XCP',600,20000,'valid'); -INSERT INTO dividends VALUES(11,'2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7',310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC','XCP',800,20000,'valid'); --- Triggers and indices on dividends -CREATE TRIGGER _dividends_delete BEFORE DELETE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dividends(rowid,tx_index,tx_hash,block_index,source,asset,dividend_asset,quantity_per_unit,fee_paid,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.dividend_asset)||','||quote(old.quantity_per_unit)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _dividends_insert AFTER INSERT ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dividends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dividends_update AFTER UPDATE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dividends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',dividend_asset='||quote(old.dividend_asset)||',quantity_per_unit='||quote(old.quantity_per_unit)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table issuances -DROP TABLE IF EXISTS issuances; -CREATE TABLE "issuances"( - tx_index INTEGER, - tx_hash TEXT, - msg_index INTEGER DEFAULT 0, - block_index INTEGER, - asset TEXT, - quantity INTEGER, - divisible BOOL, - source TEXT, - issuer TEXT, - transfer BOOL, - callable BOOL, - call_date INTEGER, - call_price REAL, - description TEXT, - fee_paid INTEGER, - locked BOOL, - status TEXT, - asset_longname TEXT, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index)); -INSERT INTO issuances VALUES(6,'ddd50ba93798b76cf1342fbed755b5aec4df77b99622d670ea70dceb21f8c975',0,310005,'BBBB',1000000000,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,0,0,0.0,'',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(7,'b693ef32344d5663f9a8368f6bbb311cc06ebc19bfc2818455af2ca098ed8f06',0,310006,'BBBC',100000,0,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',0,0,0,0.0,'foobar',50000000,0,'valid',NULL); --- Triggers and indices on issuances -CREATE TRIGGER _issuances_delete BEFORE DELETE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO issuances(rowid,tx_index,tx_hash,msg_index,block_index,asset,quantity,divisible,source,issuer,transfer,callable,call_date,call_price,description,fee_paid,locked,status,asset_longname) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.msg_index)||','||quote(old.block_index)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.divisible)||','||quote(old.source)||','||quote(old.issuer)||','||quote(old.transfer)||','||quote(old.callable)||','||quote(old.call_date)||','||quote(old.call_price)||','||quote(old.description)||','||quote(old.fee_paid)||','||quote(old.locked)||','||quote(old.status)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _issuances_insert AFTER INSERT ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM issuances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _issuances_update AFTER UPDATE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE issuances SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',msg_index='||quote(old.msg_index)||',block_index='||quote(old.block_index)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',divisible='||quote(old.divisible)||',source='||quote(old.source)||',issuer='||quote(old.issuer)||',transfer='||quote(old.transfer)||',callable='||quote(old.callable)||',call_date='||quote(old.call_date)||',call_price='||quote(old.call_price)||',description='||quote(old.description)||',fee_paid='||quote(old.fee_paid)||',locked='||quote(old.locked)||',status='||quote(old.status)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_asset_idx ON issuances (asset, status); - --- Table mempool -DROP TABLE IF EXISTS mempool; -CREATE TABLE mempool( - tx_hash TEXT, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); - --- Table messages -DROP TABLE IF EXISTS messages; -CREATE TABLE messages( - message_index INTEGER PRIMARY KEY, - block_index INTEGER, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); -INSERT INTO messages VALUES(0,310000,'insert','credits','{"action": "burn", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310000, "event": "5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb", "quantity": 93000000000}',0); -INSERT INTO messages VALUES(1,310000,'insert','burns','{"block_index": 310000, "burned": 62000000, "earned": 93000000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb", "tx_index": 1}',0); -INSERT INTO messages VALUES(2,310001,'insert','debits','{"action": "send", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310001, "event": "63242f35c724cd03163541785b69fbd620df9ebeb72706a0caeb5e19ce7680cc", "quantity": 50000000}',0); -INSERT INTO messages VALUES(3,310001,'insert','credits','{"action": "send", "address": "2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310001, "event": "63242f35c724cd03163541785b69fbd620df9ebeb72706a0caeb5e19ce7680cc", "quantity": 50000000}',0); -INSERT INTO messages VALUES(4,310001,'insert','sends','{"asset": "XCP", "block_index": 310001, "destination": "2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 50000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "63242f35c724cd03163541785b69fbd620df9ebeb72706a0caeb5e19ce7680cc", "tx_index": 2}',0); -INSERT INTO messages VALUES(5,310002,'insert','orders','{"block_index": 310002, "expiration": 10, "expire_index": 310012, "fee_provided": 1000000, "fee_provided_remaining": 1000000, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "BTC", "give_quantity": 50000000, "give_remaining": 50000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "tx_hash": "82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e", "tx_index": 3}',0); -INSERT INTO messages VALUES(6,310003,'insert','debits','{"action": "open order", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310003, "event": "371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1", "quantity": 105000000}',0); -INSERT INTO messages VALUES(7,310003,'insert','orders','{"block_index": 310003, "expiration": 10, "expire_index": 310013, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 900000, "fee_required_remaining": 900000, "get_asset": "BTC", "get_quantity": 50000000, "get_remaining": 50000000, "give_asset": "XCP", "give_quantity": 105000000, "give_remaining": 105000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "tx_hash": "371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1", "tx_index": 4}',0); -INSERT INTO messages VALUES(8,310003,'update','orders','{"fee_provided_remaining": 142858, "fee_required_remaining": 0, "get_remaining": 0, "give_remaining": 0, "status": "open", "tx_hash": "82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e"}',0); -INSERT INTO messages VALUES(9,310003,'update','orders','{"fee_provided_remaining": 6800, "fee_required_remaining": 42858, "get_remaining": 0, "give_remaining": 5000000, "status": "open", "tx_hash": "371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1"}',0); -INSERT INTO messages VALUES(10,310003,'insert','order_matches','{"backward_asset": "XCP", "backward_quantity": 100000000, "block_index": 310003, "fee_paid": 857142, "forward_asset": "BTC", "forward_quantity": 50000000, "id": "82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e_371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1", "match_expire_index": 310023, "status": "pending", "tx0_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx0_block_index": 310002, "tx0_expiration": 10, "tx0_hash": "82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e", "tx0_index": 3, "tx1_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx1_block_index": 310003, "tx1_expiration": 10, "tx1_hash": "371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1", "tx1_index": 4}',0); -INSERT INTO messages VALUES(11,310004,'insert','credits','{"action": "btcpay", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310004, "event": "f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f", "quantity": 100000000}',0); -INSERT INTO messages VALUES(12,310004,'update','order_matches','{"order_match_id": "82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e_371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1", "status": "completed"}',0); -INSERT INTO messages VALUES(13,310004,'insert','btcpays','{"block_index": 310004, "btc_amount": 50000000, "destination": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "order_match_id": "82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e_371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1", "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f", "tx_index": 5}',0); -INSERT INTO messages VALUES(14,310005,'insert','debits','{"action": "issuance fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310005, "event": "ddd50ba93798b76cf1342fbed755b5aec4df77b99622d670ea70dceb21f8c975", "quantity": 50000000}',0); -INSERT INTO messages VALUES(15,310005,'insert','issuances','{"asset": "BBBB", "asset_longname": null, "block_index": 310005, "call_date": 0, "call_price": 0.0, "callable": false, "description": "", "divisible": true, "fee_paid": 50000000, "issuer": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "locked": false, "quantity": 1000000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "transfer": false, "tx_hash": "ddd50ba93798b76cf1342fbed755b5aec4df77b99622d670ea70dceb21f8c975", "tx_index": 6}',0); -INSERT INTO messages VALUES(16,310005,'insert','credits','{"action": "issuance", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBB", "block_index": 310005, "event": "ddd50ba93798b76cf1342fbed755b5aec4df77b99622d670ea70dceb21f8c975", "quantity": 1000000000}',0); -INSERT INTO messages VALUES(17,310006,'insert','debits','{"action": "issuance fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310006, "event": "b693ef32344d5663f9a8368f6bbb311cc06ebc19bfc2818455af2ca098ed8f06", "quantity": 50000000}',0); -INSERT INTO messages VALUES(18,310006,'insert','issuances','{"asset": "BBBC", "asset_longname": null, "block_index": 310006, "call_date": 0, "call_price": 0.0, "callable": false, "description": "foobar", "divisible": false, "fee_paid": 50000000, "issuer": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "locked": false, "quantity": 100000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "transfer": false, "tx_hash": "b693ef32344d5663f9a8368f6bbb311cc06ebc19bfc2818455af2ca098ed8f06", "tx_index": 7}',0); -INSERT INTO messages VALUES(19,310006,'insert','credits','{"action": "issuance", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBC", "block_index": 310006, "event": "b693ef32344d5663f9a8368f6bbb311cc06ebc19bfc2818455af2ca098ed8f06", "quantity": 100000}',0); -INSERT INTO messages VALUES(20,310007,'insert','debits','{"action": "send", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBB", "block_index": 310007, "event": "cfdba3d6b7a8dafd12d45751395d3a2a99e2b36456d68db5e2080ce8118503ab", "quantity": 4000000}',0); -INSERT INTO messages VALUES(21,310007,'insert','credits','{"action": "send", "address": "2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBB", "block_index": 310007, "event": "cfdba3d6b7a8dafd12d45751395d3a2a99e2b36456d68db5e2080ce8118503ab", "quantity": 4000000}',0); -INSERT INTO messages VALUES(22,310007,'insert','sends','{"asset": "BBBB", "block_index": 310007, "destination": "2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 4000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "cfdba3d6b7a8dafd12d45751395d3a2a99e2b36456d68db5e2080ce8118503ab", "tx_index": 8}',0); -INSERT INTO messages VALUES(23,310008,'insert','debits','{"action": "send", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBC", "block_index": 310008, "event": "0f649981bbe02942cc0e2f2e43cdb6e41d22c9275506792873b89b683e023f89", "quantity": 526}',0); -INSERT INTO messages VALUES(24,310008,'insert','credits','{"action": "send", "address": "2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBC", "block_index": 310008, "event": "0f649981bbe02942cc0e2f2e43cdb6e41d22c9275506792873b89b683e023f89", "quantity": 526}',0); -INSERT INTO messages VALUES(25,310008,'insert','sends','{"asset": "BBBC", "block_index": 310008, "destination": "2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 526, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "0f649981bbe02942cc0e2f2e43cdb6e41d22c9275506792873b89b683e023f89", "tx_index": 9}',0); -INSERT INTO messages VALUES(26,310009,'insert','debits','{"action": "dividend", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310009, "event": "4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3", "quantity": 24}',0); -INSERT INTO messages VALUES(27,310009,'insert','debits','{"action": "dividend fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310009, "event": "4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3", "quantity": 20000}',0); -INSERT INTO messages VALUES(28,310009,'insert','credits','{"action": "dividend", "address": "2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310009, "event": "4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3", "quantity": 24}',0); -INSERT INTO messages VALUES(29,310009,'insert','dividends','{"asset": "BBBB", "block_index": 310009, "dividend_asset": "XCP", "fee_paid": 20000, "quantity_per_unit": 600, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3", "tx_index": 10}',0); -INSERT INTO messages VALUES(30,310010,'insert','debits','{"action": "dividend", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310010, "event": "2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7", "quantity": 420800}',0); -INSERT INTO messages VALUES(31,310010,'insert','debits','{"action": "dividend fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310010, "event": "2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7", "quantity": 20000}',0); -INSERT INTO messages VALUES(32,310010,'insert','credits','{"action": "dividend", "address": "2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310010, "event": "2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7", "quantity": 420800}',0); -INSERT INTO messages VALUES(33,310010,'insert','dividends','{"asset": "BBBC", "block_index": 310010, "dividend_asset": "XCP", "fee_paid": 20000, "quantity_per_unit": 800, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7", "tx_index": 11}',0); -INSERT INTO messages VALUES(34,310011,'insert','broadcasts','{"block_index": 310011, "fee_fraction_int": 99999999, "locked": false, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "text": "Unit Test", "timestamp": 1388000000, "tx_hash": "fb70fe2fe539e5ed1950885c3385ecb01d27ccfd583c6dff94006b3a55866e72", "tx_index": 12, "value": 100.0}',0); -INSERT INTO messages VALUES(35,310012,'insert','debits','{"action": "bet", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310012, "event": "44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b", "quantity": 50000000}',0); -INSERT INTO messages VALUES(36,310012,'insert','bets','{"bet_type": 0, "block_index": 310012, "counterwager_quantity": 25000000, "counterwager_remaining": 25000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310022, "fee_fraction_int": 99999999.0, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "leverage": 15120, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "target_value": 0.0, "tx_hash": "44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b", "tx_index": 13, "wager_quantity": 50000000, "wager_remaining": 50000000}',0); -INSERT INTO messages VALUES(37,310013,'update','orders','{"status": "expired", "tx_hash": "82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e"}',0); -INSERT INTO messages VALUES(38,310013,'insert','order_expirations','{"block_index": 310013, "order_hash": "82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e", "order_index": 3, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2"}',0); -INSERT INTO messages VALUES(39,310013,'insert','debits','{"action": "bet", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310013, "event": "08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12", "quantity": 25000000}',0); -INSERT INTO messages VALUES(40,310013,'insert','bets','{"bet_type": 1, "block_index": 310013, "counterwager_quantity": 41500000, "counterwager_remaining": 41500000, "deadline": 1388000100, "expiration": 10, "expire_index": 310023, "fee_fraction_int": 99999999.0, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "leverage": 15120, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "target_value": 0.0, "tx_hash": "08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12", "tx_index": 14, "wager_quantity": 25000000, "wager_remaining": 25000000}',0); -INSERT INTO messages VALUES(41,310013,'update','bets','{"counterwager_remaining": 4250000, "status": "open", "tx_hash": "44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b", "wager_remaining": 8500000}',0); -INSERT INTO messages VALUES(42,310013,'insert','credits','{"action": "filled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310013, "event": "08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12", "quantity": 4250000}',0); -INSERT INTO messages VALUES(43,310013,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12", "wager_remaining": 4250000}',0); -INSERT INTO messages VALUES(44,310013,'insert','bet_matches','{"backward_quantity": 20750000, "block_index": 310013, "deadline": 1388000100, "fee_fraction_int": 99999999, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "forward_quantity": 41500000, "id": "44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b_08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12", "initial_value": 100.0, "leverage": 15120, "match_expire_index": 310022, "status": "pending", "target_value": 0.0, "tx0_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx0_bet_type": 0, "tx0_block_index": 310012, "tx0_expiration": 10, "tx0_hash": "44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b", "tx0_index": 13, "tx1_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx1_bet_type": 1, "tx1_block_index": 310013, "tx1_expiration": 10, "tx1_hash": "08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12", "tx1_index": 14}',0); -INSERT INTO messages VALUES(45,310014,'update','orders','{"status": "expired", "tx_hash": "371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1"}',0); -INSERT INTO messages VALUES(46,310014,'insert','credits','{"action": "cancel order", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310014, "event": "371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1", "quantity": 5000000}',0); -INSERT INTO messages VALUES(47,310014,'insert','order_expirations','{"block_index": 310014, "order_hash": "371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1", "order_index": 4, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2"}',0); -INSERT INTO messages VALUES(48,310014,'insert','debits','{"action": "bet", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310014, "event": "3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68", "quantity": 150000000}',0); -INSERT INTO messages VALUES(49,310014,'insert','bets','{"bet_type": 0, "block_index": 310014, "counterwager_quantity": 350000000, "counterwager_remaining": 350000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310024, "fee_fraction_int": 99999999.0, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "leverage": 5040, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "target_value": 0.0, "tx_hash": "3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68", "tx_index": 15, "wager_quantity": 150000000, "wager_remaining": 150000000}',0); -INSERT INTO messages VALUES(50,310015,'insert','debits','{"action": "bet", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310015, "event": "75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572", "quantity": 350000000}',0); -INSERT INTO messages VALUES(51,310015,'insert','bets','{"bet_type": 1, "block_index": 310015, "counterwager_quantity": 150000000, "counterwager_remaining": 150000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310025, "fee_fraction_int": 99999999.0, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "leverage": 5040, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "target_value": 0.0, "tx_hash": "75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572", "tx_index": 16, "wager_quantity": 350000000, "wager_remaining": 350000000}',0); -INSERT INTO messages VALUES(52,310015,'insert','credits','{"action": "filled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310015, "event": "75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572", "quantity": 0}',0); -INSERT INTO messages VALUES(53,310015,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(54,310015,'insert','credits','{"action": "filled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310015, "event": "75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572", "quantity": 0}',0); -INSERT INTO messages VALUES(55,310015,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(56,310015,'insert','bet_matches','{"backward_quantity": 350000000, "block_index": 310015, "deadline": 1388000100, "fee_fraction_int": 99999999, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "forward_quantity": 150000000, "id": "3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68_75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572", "initial_value": 100.0, "leverage": 5040, "match_expire_index": 310024, "status": "pending", "target_value": 0.0, "tx0_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx0_bet_type": 0, "tx0_block_index": 310014, "tx0_expiration": 10, "tx0_hash": "3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68", "tx0_index": 15, "tx1_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx1_bet_type": 1, "tx1_block_index": 310015, "tx1_expiration": 10, "tx1_hash": "75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572", "tx1_index": 16}',0); -INSERT INTO messages VALUES(57,310016,'insert','debits','{"action": "bet", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310016, "event": "674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644", "quantity": 750000000}',0); -INSERT INTO messages VALUES(58,310016,'insert','bets','{"bet_type": 2, "block_index": 310016, "counterwager_quantity": 650000000, "counterwager_remaining": 650000000, "deadline": 1388000200, "expiration": 10, "expire_index": 310026, "fee_fraction_int": 99999999.0, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "leverage": 5040, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "target_value": 1.0, "tx_hash": "674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644", "tx_index": 17, "wager_quantity": 750000000, "wager_remaining": 750000000}',0); -INSERT INTO messages VALUES(59,310017,'insert','debits','{"action": "bet", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310017, "event": "4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9", "quantity": 650000000}',0); -INSERT INTO messages VALUES(60,310017,'insert','bets','{"bet_type": 3, "block_index": 310017, "counterwager_quantity": 750000000, "counterwager_remaining": 750000000, "deadline": 1388000200, "expiration": 10, "expire_index": 310027, "fee_fraction_int": 99999999.0, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "leverage": 5040, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "target_value": 1.0, "tx_hash": "4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9", "tx_index": 18, "wager_quantity": 650000000, "wager_remaining": 650000000}',0); -INSERT INTO messages VALUES(61,310017,'insert','credits','{"action": "filled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310017, "event": "4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9", "quantity": 0}',0); -INSERT INTO messages VALUES(62,310017,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(63,310017,'insert','credits','{"action": "filled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310017, "event": "4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9", "quantity": 0}',0); -INSERT INTO messages VALUES(64,310017,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(65,310017,'insert','bet_matches','{"backward_quantity": 650000000, "block_index": 310017, "deadline": 1388000200, "fee_fraction_int": 99999999, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "forward_quantity": 750000000, "id": "674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644_4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9", "initial_value": 100.0, "leverage": 5040, "match_expire_index": 310026, "status": "pending", "target_value": 1.0, "tx0_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx0_bet_type": 2, "tx0_block_index": 310016, "tx0_expiration": 10, "tx0_hash": "674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644", "tx0_index": 17, "tx1_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "tx1_bet_type": 3, "tx1_block_index": 310017, "tx1_expiration": 10, "tx1_hash": "4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9", "tx1_index": 18}',0); -INSERT INTO messages VALUES(66,310018,'insert','broadcasts','{"block_index": 310018, "fee_fraction_int": 5000000, "locked": false, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "text": "Unit Test", "timestamp": 1388000050, "tx_hash": "3c120af6e8f350e4e55e319d699e7f715e5b049f94491c5706426ffe101e1452", "tx_index": 19, "value": 99.86166}',0); -INSERT INTO messages VALUES(67,310018,'insert','credits','{"action": "bet settled: liquidated for bear", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310018, "event": "3c120af6e8f350e4e55e319d699e7f715e5b049f94491c5706426ffe101e1452", "quantity": 59137500}',0); -INSERT INTO messages VALUES(68,310018,'insert','credits','{"action": "feed fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310018, "event": "3c120af6e8f350e4e55e319d699e7f715e5b049f94491c5706426ffe101e1452", "quantity": 3112500}',0); -INSERT INTO messages VALUES(69,310018,'insert','bet_match_resolutions','{"bear_credit": 59137500, "bet_match_id": "44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b_08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12", "bet_match_type_id": 1, "block_index": 310018, "bull_credit": 0, "escrow_less_fee": null, "fee": 3112500, "settled": false, "winner": null}',0); -INSERT INTO messages VALUES(70,310018,'update','bet_matches','{"bet_match_id": "44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b_08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12", "status": "settled: liquidated for bear"}',0); -INSERT INTO messages VALUES(71,310019,'insert','broadcasts','{"block_index": 310019, "fee_fraction_int": 5000000, "locked": false, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "text": "Unit Test", "timestamp": 1388000101, "tx_hash": "f1b036ae3c9e9be338370b7be53f0210b830bd86ac2ddc7a757b80c2f7fb093f", "tx_index": 20, "value": 100.343}',0); -INSERT INTO messages VALUES(72,310019,'insert','credits','{"action": "bet settled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310019, "event": "f1b036ae3c9e9be338370b7be53f0210b830bd86ac2ddc7a757b80c2f7fb093f", "quantity": 159300000}',0); -INSERT INTO messages VALUES(73,310019,'insert','credits','{"action": "bet settled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310019, "event": "f1b036ae3c9e9be338370b7be53f0210b830bd86ac2ddc7a757b80c2f7fb093f", "quantity": 315700000}',0); -INSERT INTO messages VALUES(74,310019,'insert','credits','{"action": "feed fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310019, "event": "f1b036ae3c9e9be338370b7be53f0210b830bd86ac2ddc7a757b80c2f7fb093f", "quantity": 25000000}',0); -INSERT INTO messages VALUES(75,310019,'insert','bet_match_resolutions','{"bear_credit": 315700000, "bet_match_id": "3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68_75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572", "bet_match_type_id": 1, "block_index": 310019, "bull_credit": 159300000, "escrow_less_fee": null, "fee": 25000000, "settled": true, "winner": null}',0); -INSERT INTO messages VALUES(76,310019,'update','bet_matches','{"bet_match_id": "3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68_75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572", "status": "settled"}',0); -INSERT INTO messages VALUES(77,310020,'insert','broadcasts','{"block_index": 310020, "fee_fraction_int": 5000000, "locked": false, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "text": "Unit Test", "timestamp": 1388000201, "tx_hash": "63199a0ec21c2541171b644e4e3876a81d997d238fec82b62baea7baaa33aaa3", "tx_index": 21, "value": 2.0}',0); -INSERT INTO messages VALUES(78,310020,'insert','credits','{"action": "bet settled: for notequal", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310020, "event": "63199a0ec21c2541171b644e4e3876a81d997d238fec82b62baea7baaa33aaa3", "quantity": 1330000000}',0); -INSERT INTO messages VALUES(79,310020,'insert','credits','{"action": "feed fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310020, "event": "63199a0ec21c2541171b644e4e3876a81d997d238fec82b62baea7baaa33aaa3", "quantity": 70000000}',0); -INSERT INTO messages VALUES(80,310020,'insert','bet_match_resolutions','{"bear_credit": null, "bet_match_id": "674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644_4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9", "bet_match_type_id": 5, "block_index": 310020, "bull_credit": null, "escrow_less_fee": 1330000000, "fee": 70000000, "settled": null, "winner": "NotEqual"}',0); -INSERT INTO messages VALUES(81,310020,'update','bet_matches','{"bet_match_id": "674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644_4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9", "status": "settled: for notequal"}',0); -INSERT INTO messages VALUES(82,310021,'insert','debits','{"action": "open order", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBB", "block_index": 310021, "event": "dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41", "quantity": 50000000}',0); -INSERT INTO messages VALUES(83,310021,'insert','orders','{"block_index": 310021, "expiration": 10, "expire_index": 310031, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 50000000, "get_remaining": 50000000, "give_asset": "BBBB", "give_quantity": 50000000, "give_remaining": 50000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "open", "tx_hash": "dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41", "tx_index": 22}',0); -INSERT INTO messages VALUES(84,310022,'insert','credits','{"action": "burn", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310022, "event": "df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1", "quantity": 56999887262}',0); -INSERT INTO messages VALUES(85,310022,'insert','burns','{"block_index": 310022, "burned": 38000000, "earned": 56999887262, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1", "tx_index": 23}',0); -INSERT INTO messages VALUES(86,310023,'update','bets','{"status": "expired", "tx_hash": "44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b"}',0); -INSERT INTO messages VALUES(87,310023,'insert','credits','{"action": "recredit wager remaining", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310023, "event": "44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b", "quantity": 8500000}',0); -INSERT INTO messages VALUES(88,310023,'insert','bet_expirations','{"bet_hash": "44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b", "bet_index": 13, "block_index": 310023, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2"}',0); -INSERT INTO messages VALUES(89,310023,'insert','debits','{"action": "send", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBC", "block_index": 310023, "event": "ff48aca435aafe8e5fec706d3dcb2e3e54710e797ef43d006206136761371bca", "quantity": 10000}',0); -INSERT INTO messages VALUES(90,310023,'insert','credits','{"action": "send", "address": "2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBC", "block_index": 310023, "event": "ff48aca435aafe8e5fec706d3dcb2e3e54710e797ef43d006206136761371bca", "quantity": 10000}',0); -INSERT INTO messages VALUES(91,310023,'insert','sends','{"asset": "BBBC", "block_index": 310023, "destination": "2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 10000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "status": "valid", "tx_hash": "ff48aca435aafe8e5fec706d3dcb2e3e54710e797ef43d006206136761371bca", "tx_index": 24}',0); -INSERT INTO messages VALUES(92,310032,'update','orders','{"status": "expired", "tx_hash": "dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41"}',0); -INSERT INTO messages VALUES(93,310032,'insert','credits','{"action": "cancel order", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "BBBB", "block_index": 310032, "event": "dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41", "quantity": 50000000}',0); -INSERT INTO messages VALUES(94,310032,'insert','order_expirations','{"block_index": 310032, "order_hash": "dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41", "order_index": 22, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2"}',0); --- Triggers and indices on messages -CREATE INDEX block_index_message_index_idx ON messages (block_index, message_index); - --- Table order_expirations -DROP TABLE IF EXISTS order_expirations; -CREATE TABLE order_expirations( - order_index INTEGER PRIMARY KEY, - order_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (order_index, order_hash) REFERENCES orders(tx_index, tx_hash)); -INSERT INTO order_expirations VALUES(3,'82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310013); -INSERT INTO order_expirations VALUES(4,'371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310014); -INSERT INTO order_expirations VALUES(22,'dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',310032); --- Triggers and indices on order_expirations -CREATE TRIGGER _order_expirations_delete BEFORE DELETE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_expirations(rowid,order_index,order_hash,source,block_index) VALUES('||old.rowid||','||quote(old.order_index)||','||quote(old.order_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_expirations_insert AFTER INSERT ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_expirations_update AFTER UPDATE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_expirations SET order_index='||quote(old.order_index)||',order_hash='||quote(old.order_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_match_expirations -DROP TABLE IF EXISTS order_match_expirations; -CREATE TABLE order_match_expirations( - order_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (order_match_id) REFERENCES order_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on order_match_expirations -CREATE TRIGGER _order_match_expirations_delete BEFORE DELETE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_match_expirations(rowid,order_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.order_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_match_expirations_insert AFTER INSERT ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_match_expirations_update AFTER UPDATE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_match_expirations SET order_match_id='||quote(old.order_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_matches -DROP TABLE IF EXISTS order_matches; -CREATE TABLE order_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - forward_asset TEXT, - forward_quantity INTEGER, - backward_asset TEXT, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO order_matches VALUES('82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e_371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1',3,'82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',4,'371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,'XCP',100000000,310002,310003,310003,10,10,310023,857142,'completed'); --- Triggers and indices on order_matches -CREATE TRIGGER _order_matches_delete BEFORE DELETE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,forward_asset,forward_quantity,backward_asset,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_paid,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.forward_asset)||','||quote(old.forward_quantity)||','||quote(old.backward_asset)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _order_matches_insert AFTER INSERT ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_matches_update AFTER UPDATE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',forward_asset='||quote(old.forward_asset)||',forward_quantity='||quote(old.forward_quantity)||',backward_asset='||quote(old.backward_asset)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX backward_status_idx ON order_matches (backward_asset, status); -CREATE INDEX forward_status_idx ON order_matches (forward_asset, status); -CREATE INDEX match_expire_idx ON order_matches (status, match_expire_index); -CREATE INDEX tx0_address_idx ON order_matches (tx0_address); -CREATE INDEX tx1_address_idx ON order_matches (tx1_address); - --- Table orders -DROP TABLE IF EXISTS orders; -CREATE TABLE orders( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - give_asset TEXT, - give_quantity INTEGER, - give_remaining INTEGER, - get_asset TEXT, - get_quantity INTEGER, - get_remaining INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_required INTEGER, - fee_required_remaining INTEGER, - fee_provided INTEGER, - fee_provided_remaining INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO orders VALUES(3,'82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e',310002,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'expired'); -INSERT INTO orders VALUES(4,'371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1',310003,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'expired'); -INSERT INTO orders VALUES(22,'dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41',310021,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'expired'); --- Triggers and indices on orders -CREATE TRIGGER _orders_delete BEFORE DELETE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO orders(rowid,tx_index,tx_hash,block_index,source,give_asset,give_quantity,give_remaining,get_asset,get_quantity,get_remaining,expiration,expire_index,fee_required,fee_required_remaining,fee_provided,fee_provided_remaining,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.give_asset)||','||quote(old.give_quantity)||','||quote(old.give_remaining)||','||quote(old.get_asset)||','||quote(old.get_quantity)||','||quote(old.get_remaining)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_required)||','||quote(old.fee_required_remaining)||','||quote(old.fee_provided)||','||quote(old.fee_provided_remaining)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _orders_insert AFTER INSERT ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM orders WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _orders_update AFTER UPDATE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE orders SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',give_asset='||quote(old.give_asset)||',give_quantity='||quote(old.give_quantity)||',give_remaining='||quote(old.give_remaining)||',get_asset='||quote(old.get_asset)||',get_quantity='||quote(old.get_quantity)||',get_remaining='||quote(old.get_remaining)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_required='||quote(old.fee_required)||',fee_required_remaining='||quote(old.fee_required_remaining)||',fee_provided='||quote(old.fee_provided)||',fee_provided_remaining='||quote(old.fee_provided_remaining)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX expire_idx ON orders (expire_index, status); -CREATE INDEX give_asset_idx ON orders (give_asset); -CREATE INDEX give_get_status_idx ON orders (get_asset, give_asset, status); -CREATE INDEX give_status_idx ON orders (give_asset, status); -CREATE INDEX source_give_status_idx ON orders (source, give_asset, status); - --- Table rps -DROP TABLE IF EXISTS rps; -CREATE TABLE rps( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - possible_moves INTEGER, - wager INTEGER, - move_random_hash TEXT, - expiration INTEGER, - expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); --- Triggers and indices on rps -CREATE TRIGGER _rps_delete BEFORE DELETE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps(rowid,tx_index,tx_hash,block_index,source,possible_moves,wager,move_random_hash,expiration,expire_index,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.possible_moves)||','||quote(old.wager)||','||quote(old.move_random_hash)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_insert AFTER INSERT ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_update AFTER UPDATE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',possible_moves='||quote(old.possible_moves)||',wager='||quote(old.wager)||',move_random_hash='||quote(old.move_random_hash)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX matching_idx ON rps (wager, possible_moves); - --- Table rps_expirations -DROP TABLE IF EXISTS rps_expirations; -CREATE TABLE rps_expirations( - rps_index INTEGER PRIMARY KEY, - rps_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (rps_index, rps_hash) REFERENCES rps(tx_index, tx_hash)); --- Triggers and indices on rps_expirations -CREATE TRIGGER _rps_expirations_delete BEFORE DELETE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_expirations(rowid,rps_index,rps_hash,source,block_index) VALUES('||old.rowid||','||quote(old.rps_index)||','||quote(old.rps_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_expirations_insert AFTER INSERT ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_expirations_update AFTER UPDATE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_expirations SET rps_index='||quote(old.rps_index)||',rps_hash='||quote(old.rps_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_match_expirations -DROP TABLE IF EXISTS rps_match_expirations; -CREATE TABLE rps_match_expirations( - rps_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (rps_match_id) REFERENCES rps_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on rps_match_expirations -CREATE TRIGGER _rps_match_expirations_delete BEFORE DELETE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_match_expirations(rowid,rps_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.rps_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_match_expirations_insert AFTER INSERT ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_match_expirations_update AFTER UPDATE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_match_expirations SET rps_match_id='||quote(old.rps_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_matches -DROP TABLE IF EXISTS rps_matches; -CREATE TABLE rps_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_move_random_hash TEXT, - tx1_move_random_hash TEXT, - wager INTEGER, - possible_moves INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rps_matches -CREATE TRIGGER _rps_matches_delete BEFORE DELETE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_move_random_hash,tx1_move_random_hash,wager,possible_moves,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_move_random_hash)||','||quote(old.tx1_move_random_hash)||','||quote(old.wager)||','||quote(old.possible_moves)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_matches_insert AFTER INSERT ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_matches_update AFTER UPDATE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_move_random_hash='||quote(old.tx0_move_random_hash)||',tx1_move_random_hash='||quote(old.tx1_move_random_hash)||',wager='||quote(old.wager)||',possible_moves='||quote(old.possible_moves)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_expire_idx ON rps_matches (status, match_expire_index); -CREATE INDEX rps_tx0_address_idx ON rps_matches (tx0_address); -CREATE INDEX rps_tx1_address_idx ON rps_matches (tx1_address); - --- Table rpsresolves -DROP TABLE IF EXISTS rpsresolves; -CREATE TABLE rpsresolves( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - move INTEGER, - random TEXT, - rps_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rpsresolves -CREATE TRIGGER _rpsresolves_delete BEFORE DELETE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rpsresolves(rowid,tx_index,tx_hash,block_index,source,move,random,rps_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.move)||','||quote(old.random)||','||quote(old.rps_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rpsresolves_insert AFTER INSERT ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rpsresolves WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rpsresolves_update AFTER UPDATE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rpsresolves SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',move='||quote(old.move)||',random='||quote(old.random)||',rps_match_id='||quote(old.rps_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_id_idx ON rpsresolves (rps_match_id); - --- Table sends -DROP TABLE IF EXISTS sends; -CREATE TABLE "sends"( - tx_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - quantity INTEGER, - status TEXT, - msg_index INTEGER DEFAULT 0, memo BLOB, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); -INSERT INTO sends VALUES(2,'63242f35c724cd03163541785b69fbd620df9ebeb72706a0caeb5e19ce7680cc',310001,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',50000000,'valid',0,NULL); -INSERT INTO sends VALUES(8,'cfdba3d6b7a8dafd12d45751395d3a2a99e2b36456d68db5e2080ce8118503ab',310007,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBB',4000000,'valid',0,NULL); -INSERT INTO sends VALUES(9,'0f649981bbe02942cc0e2f2e43cdb6e41d22c9275506792873b89b683e023f89',310008,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',526,'valid',0,NULL); -INSERT INTO sends VALUES(24,'ff48aca435aafe8e5fec706d3dcb2e3e54710e797ef43d006206136761371bca',310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','BBBC',10000,'valid',0,NULL); --- Triggers and indices on sends -CREATE TRIGGER _sends_delete BEFORE DELETE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sends(rowid,tx_index,tx_hash,block_index,source,destination,asset,quantity,status,msg_index,memo) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.status)||','||quote(old.msg_index)||','||quote(old.memo)||')'); - END; -CREATE TRIGGER _sends_insert AFTER INSERT ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sends_update AFTER UPDATE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',status='||quote(old.status)||',msg_index='||quote(old.msg_index)||',memo='||quote(old.memo)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX destination_idx ON sends (destination); -CREATE INDEX memo_idx ON sends (memo); -CREATE INDEX source_idx ON sends (source); - --- Table sweeps -DROP TABLE IF EXISTS sweeps; -CREATE TABLE sweeps( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - flags INTEGER, - status TEXT, - memo BLOB, - fee_paid INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on sweeps -CREATE TRIGGER _sweeps_delete BEFORE DELETE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sweeps(rowid,tx_index,tx_hash,block_index,source,destination,flags,status,memo,fee_paid) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.flags)||','||quote(old.status)||','||quote(old.memo)||','||quote(old.fee_paid)||')'); - END; -CREATE TRIGGER _sweeps_insert AFTER INSERT ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sweeps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sweeps_update AFTER UPDATE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sweeps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',flags='||quote(old.flags)||',status='||quote(old.status)||',memo='||quote(old.memo)||',fee_paid='||quote(old.fee_paid)||' WHERE rowid='||old.rowid); - END; - --- Table transactions -DROP TABLE IF EXISTS transactions; -CREATE TABLE transactions( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - block_hash TEXT, - block_time INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - fee INTEGER, - data BLOB, - supported BOOL DEFAULT 1, - FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), - PRIMARY KEY (tx_index, tx_hash, block_index)); -INSERT INTO transactions VALUES(1,'5fde1c728d8d00aaa1b5f8dae963ceb4fd30c415eb0b8a982ba2d8d676fec0bb',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); -INSERT INTO transactions VALUES(2,'63242f35c724cd03163541785b69fbd620df9ebeb72706a0caeb5e19ce7680cc',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'0000000000000000000000010000000002FAF080',1); -INSERT INTO transactions VALUES(3,'82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,1000000,X'0000000A00000000000000000000000002FAF08000000000000000010000000005F5E100000A0000000000000000',1); -INSERT INTO transactions VALUES(4,'371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000000A00000000000000010000000006422C4000000000000000000000000002FAF080000A00000000000DBBA0',1); -INSERT INTO transactions VALUES(5,'f307fdf5e231e05f9e9ecf23e5fc8bfff87951b223575840690b3f8bb502ad0f',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',50000000,9675,X'0000000B82E2A0085961F5672C7BCF81A04ABF78021D9B91C5F9E0D98421CE3CB083CD4E371A06E55FBB3661941DC2300754556A09B6BADC04AA182EE7D80842DD6CB9F1',1); -INSERT INTO transactions VALUES(6,'ddd50ba93798b76cf1342fbed755b5aec4df77b99622d670ea70dceb21f8c975',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'000000140000000000004767000000003B9ACA000100000000000000000000',1); -INSERT INTO transactions VALUES(7,'b693ef32344d5663f9a8368f6bbb311cc06ebc19bfc2818455af2ca098ed8f06',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'00000014000000000000476800000000000186A00000000000000000000006666F6F626172',1); -INSERT INTO transactions VALUES(8,'cfdba3d6b7a8dafd12d45751395d3a2a99e2b36456d68db5e2080ce8118503ab',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000000000000000000476700000000003D0900',1); -INSERT INTO transactions VALUES(9,'0f649981bbe02942cc0e2f2e43cdb6e41d22c9275506792873b89b683e023f89',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'000000000000000000004768000000000000020E',1); -INSERT INTO transactions VALUES(10,'4eb273718f2e68efb37d467d5a5e67388274652f4ad83477d126bb8ef4088bc3',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'00000032000000000000025800000000000047670000000000000001',1); -INSERT INTO transactions VALUES(11,'2e7b84301a9d340c5b4fdc2b765b4e027112ad4f66a1c219163fb743625059c7',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'00000032000000000000032000000000000047680000000000000001',1); -INSERT INTO transactions VALUES(12,'fb70fe2fe539e5ed1950885c3385ecb01d27ccfd583c6dff94006b3a55866e72',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB3300405900000000000005F5E0FF09556E69742054657374',1); -INSERT INTO transactions VALUES(13,'44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000028000052BB33640000000002FAF08000000000017D7840000000000000000000003B100000000A',1); -INSERT INTO transactions VALUES(14,'08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000028000152BB336400000000017D78400000000002793D60000000000000000000003B100000000A',1); -INSERT INTO transactions VALUES(15,'3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000028000052BB33640000000008F0D1800000000014DC93800000000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(16,'75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000028000152BB33640000000014DC93800000000008F0D1800000000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(17,'674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000028000252BB33C8000000002CB417800000000026BE36803FF0000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(18,'4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000028000352BB33C80000000026BE3680000000002CB417803FF0000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(19,'3c120af6e8f350e4e55e319d699e7f715e5b049f94491c5706426ffe101e1452',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB33324058F7256FFC115E004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(20,'f1b036ae3c9e9be338370b7be53f0210b830bd86ac2ddc7a757b80c2f7fb093f',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB3365405915F3B645A1CB004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(21,'63199a0ec21c2541171b644e4e3876a81d997d238fec82b62baea7baaa33aaa3',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000001E52BB33C94000000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(22,'dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41',310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','',0,6800,X'0000000A00000000000047670000000002FAF08000000000000000010000000002FAF080000A0000000000000000',1); -INSERT INTO transactions VALUES(23,'df080a76ceb263201901bc23c85c3e8dce4eca0e72c873131adaf2f46820e9f1',310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','mvCounterpartyXXXXXXXXXXXXXXW24Hef',100000000,5625,X'',1); -INSERT INTO transactions VALUES(24,'ff48aca435aafe8e5fec706d3dcb2e3e54710e797ef43d006206136761371bca',310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'0000000000000000000047680000000000002710',1); --- Triggers and indices on transactions -CREATE INDEX index_hash_index_idx ON transactions (tx_index, tx_hash, block_index); -CREATE INDEX index_index_idx ON transactions (block_index, tx_index); -CREATE INDEX tx_hash_idx ON transactions (tx_hash); -CREATE INDEX tx_index_idx ON transactions (tx_index); - --- Table undolog -DROP TABLE IF EXISTS undolog; -CREATE TABLE undolog( - undo_index INTEGER PRIMARY KEY AUTOINCREMENT, - sql TEXT); -INSERT INTO undolog VALUES(4,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=93000000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(5,'DELETE FROM debits WHERE rowid=1'); -INSERT INTO undolog VALUES(6,'DELETE FROM balances WHERE rowid=2'); -INSERT INTO undolog VALUES(7,'DELETE FROM credits WHERE rowid=2'); -INSERT INTO undolog VALUES(8,'DELETE FROM sends WHERE rowid=1'); -INSERT INTO undolog VALUES(9,'DELETE FROM orders WHERE rowid=1'); -INSERT INTO undolog VALUES(10,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92950000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(11,'DELETE FROM debits WHERE rowid=2'); -INSERT INTO undolog VALUES(12,'DELETE FROM orders WHERE rowid=2'); -INSERT INTO undolog VALUES(13,'UPDATE orders SET tx_index=3,tx_hash=''82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e'',block_index=310002,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',give_asset=''BTC'',give_quantity=50000000,give_remaining=50000000,get_asset=''XCP'',get_quantity=100000000,get_remaining=100000000,expiration=10,expire_index=310012,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=1000000,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(14,'UPDATE orders SET tx_index=4,tx_hash=''371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1'',block_index=310003,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',give_asset=''XCP'',give_quantity=105000000,give_remaining=105000000,get_asset=''BTC'',get_quantity=50000000,get_remaining=50000000,expiration=10,expire_index=310013,fee_required=900000,fee_required_remaining=900000,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(15,'DELETE FROM order_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(16,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92845000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(17,'DELETE FROM credits WHERE rowid=3'); -INSERT INTO undolog VALUES(18,'UPDATE order_matches SET id=''82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e_371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1'',tx0_index=3,tx0_hash=''82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e'',tx0_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx1_index=4,tx1_hash=''371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1'',tx1_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',forward_asset=''BTC'',forward_quantity=50000000,backward_asset=''XCP'',backward_quantity=100000000,tx0_block_index=310002,tx1_block_index=310003,block_index=310003,tx0_expiration=10,tx1_expiration=10,match_expire_index=310023,fee_paid=857142,status=''pending'' WHERE rowid=1'); -INSERT INTO undolog VALUES(19,'DELETE FROM btcpays WHERE rowid=5'); -INSERT INTO undolog VALUES(20,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92945000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(21,'DELETE FROM debits WHERE rowid=3'); -INSERT INTO undolog VALUES(22,'DELETE FROM assets WHERE rowid=3'); -INSERT INTO undolog VALUES(23,'DELETE FROM issuances WHERE rowid=1'); -INSERT INTO undolog VALUES(24,'DELETE FROM balances WHERE rowid=3'); -INSERT INTO undolog VALUES(25,'DELETE FROM credits WHERE rowid=4'); -INSERT INTO undolog VALUES(26,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92895000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(27,'DELETE FROM debits WHERE rowid=4'); -INSERT INTO undolog VALUES(28,'DELETE FROM assets WHERE rowid=4'); -INSERT INTO undolog VALUES(29,'DELETE FROM issuances WHERE rowid=2'); -INSERT INTO undolog VALUES(30,'DELETE FROM balances WHERE rowid=4'); -INSERT INTO undolog VALUES(31,'DELETE FROM credits WHERE rowid=5'); -INSERT INTO undolog VALUES(32,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''BBBB'',quantity=1000000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(33,'DELETE FROM debits WHERE rowid=5'); -INSERT INTO undolog VALUES(34,'DELETE FROM balances WHERE rowid=5'); -INSERT INTO undolog VALUES(35,'DELETE FROM credits WHERE rowid=6'); -INSERT INTO undolog VALUES(36,'DELETE FROM sends WHERE rowid=2'); -INSERT INTO undolog VALUES(37,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''BBBC'',quantity=100000 WHERE rowid=4'); -INSERT INTO undolog VALUES(38,'DELETE FROM debits WHERE rowid=6'); -INSERT INTO undolog VALUES(39,'DELETE FROM balances WHERE rowid=6'); -INSERT INTO undolog VALUES(40,'DELETE FROM credits WHERE rowid=7'); -INSERT INTO undolog VALUES(41,'DELETE FROM sends WHERE rowid=3'); -INSERT INTO undolog VALUES(42,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92845000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(43,'DELETE FROM debits WHERE rowid=7'); -INSERT INTO undolog VALUES(44,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92844999976 WHERE rowid=1'); -INSERT INTO undolog VALUES(45,'DELETE FROM debits WHERE rowid=8'); -INSERT INTO undolog VALUES(46,'UPDATE balances SET address=''2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=50000000 WHERE rowid=2'); -INSERT INTO undolog VALUES(47,'DELETE FROM credits WHERE rowid=8'); -INSERT INTO undolog VALUES(48,'DELETE FROM dividends WHERE rowid=10'); -INSERT INTO undolog VALUES(49,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92844979976 WHERE rowid=1'); -INSERT INTO undolog VALUES(50,'DELETE FROM debits WHERE rowid=9'); -INSERT INTO undolog VALUES(51,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92844559176 WHERE rowid=1'); -INSERT INTO undolog VALUES(52,'DELETE FROM debits WHERE rowid=10'); -INSERT INTO undolog VALUES(53,'UPDATE balances SET address=''2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=50000024 WHERE rowid=2'); -INSERT INTO undolog VALUES(54,'DELETE FROM credits WHERE rowid=9'); -INSERT INTO undolog VALUES(55,'DELETE FROM dividends WHERE rowid=11'); -INSERT INTO undolog VALUES(56,'DELETE FROM broadcasts WHERE rowid=12'); -INSERT INTO undolog VALUES(57,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92844539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(58,'DELETE FROM debits WHERE rowid=11'); -INSERT INTO undolog VALUES(59,'DELETE FROM bets WHERE rowid=1'); -INSERT INTO undolog VALUES(60,'UPDATE orders SET tx_index=3,tx_hash=''82e2a0085961f5672c7bcf81a04abf78021d9b91c5f9e0d98421ce3cb083cd4e'',block_index=310002,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',give_asset=''BTC'',give_quantity=50000000,give_remaining=0,get_asset=''XCP'',get_quantity=100000000,get_remaining=0,expiration=10,expire_index=310012,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=142858,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(61,'DELETE FROM order_expirations WHERE rowid=3'); -INSERT INTO undolog VALUES(62,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92794539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(63,'DELETE FROM debits WHERE rowid=12'); -INSERT INTO undolog VALUES(64,'DELETE FROM bets WHERE rowid=2'); -INSERT INTO undolog VALUES(65,'UPDATE bets SET tx_index=13,tx_hash=''44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b'',block_index=310012,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=0,deadline=1388000100,wager_quantity=50000000,wager_remaining=50000000,counterwager_quantity=25000000,counterwager_remaining=25000000,target_value=0.0,leverage=15120,expiration=10,expire_index=310022,fee_fraction_int=99999999,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(66,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92769539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(67,'DELETE FROM credits WHERE rowid=10'); -INSERT INTO undolog VALUES(68,'UPDATE bets SET tx_index=14,tx_hash=''08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12'',block_index=310013,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=1,deadline=1388000100,wager_quantity=25000000,wager_remaining=25000000,counterwager_quantity=41500000,counterwager_remaining=41500000,target_value=0.0,leverage=15120,expiration=10,expire_index=310023,fee_fraction_int=99999999,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(69,'DELETE FROM bet_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(70,'UPDATE orders SET tx_index=4,tx_hash=''371a06e55fbb3661941dc2300754556a09b6badc04aa182ee7d80842dd6cb9f1'',block_index=310003,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',give_asset=''XCP'',give_quantity=105000000,give_remaining=5000000,get_asset=''BTC'',get_quantity=50000000,get_remaining=0,expiration=10,expire_index=310013,fee_required=900000,fee_required_remaining=42858,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(71,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92773789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(72,'DELETE FROM credits WHERE rowid=11'); -INSERT INTO undolog VALUES(73,'DELETE FROM order_expirations WHERE rowid=4'); -INSERT INTO undolog VALUES(74,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92778789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(75,'DELETE FROM debits WHERE rowid=13'); -INSERT INTO undolog VALUES(76,'DELETE FROM bets WHERE rowid=3'); -INSERT INTO undolog VALUES(77,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92628789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(78,'DELETE FROM debits WHERE rowid=14'); -INSERT INTO undolog VALUES(79,'DELETE FROM bets WHERE rowid=4'); -INSERT INTO undolog VALUES(80,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(81,'DELETE FROM credits WHERE rowid=12'); -INSERT INTO undolog VALUES(82,'UPDATE bets SET tx_index=15,tx_hash=''3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68'',block_index=310014,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=0,deadline=1388000100,wager_quantity=150000000,wager_remaining=150000000,counterwager_quantity=350000000,counterwager_remaining=350000000,target_value=0.0,leverage=5040,expiration=10,expire_index=310024,fee_fraction_int=99999999,status=''open'' WHERE rowid=3'); -INSERT INTO undolog VALUES(83,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(84,'DELETE FROM credits WHERE rowid=13'); -INSERT INTO undolog VALUES(85,'UPDATE bets SET tx_index=16,tx_hash=''75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572'',block_index=310015,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=1,deadline=1388000100,wager_quantity=350000000,wager_remaining=350000000,counterwager_quantity=150000000,counterwager_remaining=150000000,target_value=0.0,leverage=5040,expiration=10,expire_index=310025,fee_fraction_int=99999999,status=''open'' WHERE rowid=4'); -INSERT INTO undolog VALUES(86,'DELETE FROM bet_matches WHERE rowid=2'); -INSERT INTO undolog VALUES(87,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(88,'DELETE FROM debits WHERE rowid=15'); -INSERT INTO undolog VALUES(89,'DELETE FROM bets WHERE rowid=5'); -INSERT INTO undolog VALUES(90,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=91528789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(91,'DELETE FROM debits WHERE rowid=16'); -INSERT INTO undolog VALUES(92,'DELETE FROM bets WHERE rowid=6'); -INSERT INTO undolog VALUES(93,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(94,'DELETE FROM credits WHERE rowid=14'); -INSERT INTO undolog VALUES(95,'UPDATE bets SET tx_index=17,tx_hash=''674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644'',block_index=310016,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=2,deadline=1388000200,wager_quantity=750000000,wager_remaining=750000000,counterwager_quantity=650000000,counterwager_remaining=650000000,target_value=1.0,leverage=5040,expiration=10,expire_index=310026,fee_fraction_int=99999999,status=''open'' WHERE rowid=5'); -INSERT INTO undolog VALUES(96,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(97,'DELETE FROM credits WHERE rowid=15'); -INSERT INTO undolog VALUES(98,'UPDATE bets SET tx_index=18,tx_hash=''4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9'',block_index=310017,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=3,deadline=1388000200,wager_quantity=650000000,wager_remaining=650000000,counterwager_quantity=750000000,counterwager_remaining=750000000,target_value=1.0,leverage=5040,expiration=10,expire_index=310027,fee_fraction_int=99999999,status=''open'' WHERE rowid=6'); -INSERT INTO undolog VALUES(99,'DELETE FROM bet_matches WHERE rowid=3'); -INSERT INTO undolog VALUES(100,'DELETE FROM broadcasts WHERE rowid=19'); -INSERT INTO undolog VALUES(101,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(102,'DELETE FROM credits WHERE rowid=16'); -INSERT INTO undolog VALUES(103,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=90937926676 WHERE rowid=1'); -INSERT INTO undolog VALUES(104,'DELETE FROM credits WHERE rowid=17'); -INSERT INTO undolog VALUES(105,'DELETE FROM bet_match_resolutions WHERE rowid=1'); -INSERT INTO undolog VALUES(106,'UPDATE bet_matches SET id=''44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b_08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12'',tx0_index=13,tx0_hash=''44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b'',tx0_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx1_index=14,tx1_hash=''08b5ed9f3262752165c46ce0d17c2c6604f5662144fecb1a5eabf645dd6bee12'',tx1_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx0_bet_type=0,tx1_bet_type=1,feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',initial_value=100,deadline=1388000100,target_value=0.0,leverage=15120,forward_quantity=41500000,backward_quantity=20750000,tx0_block_index=310012,tx1_block_index=310013,block_index=310013,tx0_expiration=10,tx1_expiration=10,match_expire_index=310022,fee_fraction_int=99999999,status=''pending'' WHERE rowid=1'); -INSERT INTO undolog VALUES(107,'DELETE FROM broadcasts WHERE rowid=20'); -INSERT INTO undolog VALUES(108,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=90941039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(109,'DELETE FROM credits WHERE rowid=18'); -INSERT INTO undolog VALUES(110,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=91100339176 WHERE rowid=1'); -INSERT INTO undolog VALUES(111,'DELETE FROM credits WHERE rowid=19'); -INSERT INTO undolog VALUES(112,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=91416039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(113,'DELETE FROM credits WHERE rowid=20'); -INSERT INTO undolog VALUES(114,'DELETE FROM bet_match_resolutions WHERE rowid=2'); -INSERT INTO undolog VALUES(115,'UPDATE bet_matches SET id=''3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68_75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572'',tx0_index=15,tx0_hash=''3709deca4f216971ff70b564f18f8f439313cd38d73dbf20b903685fb89a5f68'',tx0_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx1_index=16,tx1_hash=''75bb331102e80cb98b1d849101442f59718f2d91609c19056f58771781793572'',tx1_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx0_bet_type=0,tx1_bet_type=1,feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',initial_value=100,deadline=1388000100,target_value=0.0,leverage=5040,forward_quantity=150000000,backward_quantity=350000000,tx0_block_index=310014,tx1_block_index=310015,block_index=310015,tx0_expiration=10,tx1_expiration=10,match_expire_index=310024,fee_fraction_int=99999999,status=''pending'' WHERE rowid=2'); -INSERT INTO undolog VALUES(116,'DELETE FROM broadcasts WHERE rowid=21'); -INSERT INTO undolog VALUES(117,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=91441039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(118,'DELETE FROM credits WHERE rowid=21'); -INSERT INTO undolog VALUES(119,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92771039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(120,'DELETE FROM credits WHERE rowid=22'); -INSERT INTO undolog VALUES(121,'DELETE FROM bet_match_resolutions WHERE rowid=3'); -INSERT INTO undolog VALUES(122,'UPDATE bet_matches SET id=''674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644_4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9'',tx0_index=17,tx0_hash=''674c197ae30a86d1771b9e842194dd5a03d2a85a9f45f6148194cf44e4a54644'',tx0_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx1_index=18,tx1_hash=''4d1ba1b2843a69d9bb822abceff9b41c0d1727be97551546535421b7af2b71b9'',tx1_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',tx0_bet_type=2,tx1_bet_type=3,feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',initial_value=100,deadline=1388000200,target_value=1.0,leverage=5040,forward_quantity=750000000,backward_quantity=650000000,tx0_block_index=310016,tx1_block_index=310017,block_index=310017,tx0_expiration=10,tx1_expiration=10,match_expire_index=310026,fee_fraction_int=99999999,status=''pending'' WHERE rowid=3'); -INSERT INTO undolog VALUES(123,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''BBBB'',quantity=996000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(124,'DELETE FROM debits WHERE rowid=17'); -INSERT INTO undolog VALUES(125,'DELETE FROM orders WHERE rowid=3'); -INSERT INTO undolog VALUES(126,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=92841039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(127,'DELETE FROM credits WHERE rowid=23'); -INSERT INTO undolog VALUES(128,'DELETE FROM burns WHERE rowid=23'); -INSERT INTO undolog VALUES(129,'UPDATE bets SET tx_index=13,tx_hash=''44e2c9f313771d1afb4d656430f41336418d041aa11ab4e1b5eb2cdc51f1832b'',block_index=310012,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',bet_type=0,deadline=1388000100,wager_quantity=50000000,wager_remaining=8500000,counterwager_quantity=25000000,counterwager_remaining=4250000,target_value=0.0,leverage=15120,expiration=10,expire_index=310022,fee_fraction_int=99999999,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(130,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''XCP'',quantity=149840926438 WHERE rowid=1'); -INSERT INTO undolog VALUES(131,'DELETE FROM credits WHERE rowid=24'); -INSERT INTO undolog VALUES(132,'DELETE FROM bet_expirations WHERE rowid=13'); -INSERT INTO undolog VALUES(133,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''BBBC'',quantity=99474 WHERE rowid=4'); -INSERT INTO undolog VALUES(134,'DELETE FROM debits WHERE rowid=18'); -INSERT INTO undolog VALUES(135,'UPDATE balances SET address=''2_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''BBBC'',quantity=526 WHERE rowid=6'); -INSERT INTO undolog VALUES(136,'DELETE FROM credits WHERE rowid=25'); -INSERT INTO undolog VALUES(137,'DELETE FROM sends WHERE rowid=4'); -INSERT INTO undolog VALUES(138,'UPDATE orders SET tx_index=22,tx_hash=''dbbfdae392b27be467139350049f225f6b87682284d1d46c58be7d03d74caf41'',block_index=310021,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',give_asset=''BBBB'',give_quantity=50000000,give_remaining=50000000,get_asset=''XCP'',get_quantity=50000000,get_remaining=50000000,expiration=10,expire_index=310031,fee_required=0,fee_required_remaining=0,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=3'); -INSERT INTO undolog VALUES(139,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2'',asset=''BBBB'',quantity=946000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(140,'DELETE FROM credits WHERE rowid=26'); -INSERT INTO undolog VALUES(141,'DELETE FROM order_expirations WHERE rowid=22'); - --- Table undolog_block -DROP TABLE IF EXISTS undolog_block; -CREATE TABLE undolog_block( - block_index INTEGER PRIMARY KEY, - first_undo_index INTEGER); -INSERT INTO undolog_block VALUES(310001,4); -INSERT INTO undolog_block VALUES(310002,9); -INSERT INTO undolog_block VALUES(310003,10); -INSERT INTO undolog_block VALUES(310004,16); -INSERT INTO undolog_block VALUES(310005,20); -INSERT INTO undolog_block VALUES(310006,26); -INSERT INTO undolog_block VALUES(310007,32); -INSERT INTO undolog_block VALUES(310008,37); -INSERT INTO undolog_block VALUES(310009,42); -INSERT INTO undolog_block VALUES(310010,49); -INSERT INTO undolog_block VALUES(310011,56); -INSERT INTO undolog_block VALUES(310012,57); -INSERT INTO undolog_block VALUES(310013,60); -INSERT INTO undolog_block VALUES(310014,70); -INSERT INTO undolog_block VALUES(310015,77); -INSERT INTO undolog_block VALUES(310016,87); -INSERT INTO undolog_block VALUES(310017,90); -INSERT INTO undolog_block VALUES(310018,100); -INSERT INTO undolog_block VALUES(310019,107); -INSERT INTO undolog_block VALUES(310020,116); -INSERT INTO undolog_block VALUES(310021,123); -INSERT INTO undolog_block VALUES(310022,126); -INSERT INTO undolog_block VALUES(310023,129); -INSERT INTO undolog_block VALUES(310024,138); -INSERT INTO undolog_block VALUES(310025,138); -INSERT INTO undolog_block VALUES(310026,138); -INSERT INTO undolog_block VALUES(310027,138); -INSERT INTO undolog_block VALUES(310028,138); -INSERT INTO undolog_block VALUES(310029,138); -INSERT INTO undolog_block VALUES(310030,138); -INSERT INTO undolog_block VALUES(310031,138); -INSERT INTO undolog_block VALUES(310032,138); -INSERT INTO undolog_block VALUES(310033,142); -INSERT INTO undolog_block VALUES(310034,142); -INSERT INTO undolog_block VALUES(310035,142); -INSERT INTO undolog_block VALUES(310036,142); -INSERT INTO undolog_block VALUES(310037,142); -INSERT INTO undolog_block VALUES(310038,142); -INSERT INTO undolog_block VALUES(310039,142); -INSERT INTO undolog_block VALUES(310040,142); -INSERT INTO undolog_block VALUES(310041,142); -INSERT INTO undolog_block VALUES(310042,142); -INSERT INTO undolog_block VALUES(310043,142); -INSERT INTO undolog_block VALUES(310044,142); -INSERT INTO undolog_block VALUES(310045,142); -INSERT INTO undolog_block VALUES(310046,142); -INSERT INTO undolog_block VALUES(310047,142); -INSERT INTO undolog_block VALUES(310048,142); -INSERT INTO undolog_block VALUES(310049,142); -INSERT INTO undolog_block VALUES(310050,142); -INSERT INTO undolog_block VALUES(310051,142); -INSERT INTO undolog_block VALUES(310052,142); -INSERT INTO undolog_block VALUES(310053,142); -INSERT INTO undolog_block VALUES(310054,142); -INSERT INTO undolog_block VALUES(310055,142); -INSERT INTO undolog_block VALUES(310056,142); -INSERT INTO undolog_block VALUES(310057,142); -INSERT INTO undolog_block VALUES(310058,142); -INSERT INTO undolog_block VALUES(310059,142); -INSERT INTO undolog_block VALUES(310060,142); -INSERT INTO undolog_block VALUES(310061,142); -INSERT INTO undolog_block VALUES(310062,142); -INSERT INTO undolog_block VALUES(310063,142); -INSERT INTO undolog_block VALUES(310064,142); -INSERT INTO undolog_block VALUES(310065,142); -INSERT INTO undolog_block VALUES(310066,142); -INSERT INTO undolog_block VALUES(310067,142); -INSERT INTO undolog_block VALUES(310068,142); -INSERT INTO undolog_block VALUES(310069,142); -INSERT INTO undolog_block VALUES(310070,142); -INSERT INTO undolog_block VALUES(310071,142); -INSERT INTO undolog_block VALUES(310072,142); -INSERT INTO undolog_block VALUES(310073,142); -INSERT INTO undolog_block VALUES(310074,142); -INSERT INTO undolog_block VALUES(310075,142); -INSERT INTO undolog_block VALUES(310076,142); -INSERT INTO undolog_block VALUES(310077,142); -INSERT INTO undolog_block VALUES(310078,142); -INSERT INTO undolog_block VALUES(310079,142); -INSERT INTO undolog_block VALUES(310080,142); -INSERT INTO undolog_block VALUES(310081,142); -INSERT INTO undolog_block VALUES(310082,142); -INSERT INTO undolog_block VALUES(310083,142); -INSERT INTO undolog_block VALUES(310084,142); -INSERT INTO undolog_block VALUES(310085,142); -INSERT INTO undolog_block VALUES(310086,142); -INSERT INTO undolog_block VALUES(310087,142); -INSERT INTO undolog_block VALUES(310088,142); -INSERT INTO undolog_block VALUES(310089,142); -INSERT INTO undolog_block VALUES(310090,142); -INSERT INTO undolog_block VALUES(310091,142); -INSERT INTO undolog_block VALUES(310092,142); -INSERT INTO undolog_block VALUES(310093,142); -INSERT INTO undolog_block VALUES(310094,142); -INSERT INTO undolog_block VALUES(310095,142); -INSERT INTO undolog_block VALUES(310096,142); -INSERT INTO undolog_block VALUES(310097,142); -INSERT INTO undolog_block VALUES(310098,142); -INSERT INTO undolog_block VALUES(310099,142); -INSERT INTO undolog_block VALUES(310100,142); -INSERT INTO undolog_block VALUES(310101,142); - --- For primary key autoincrements the next id to use is stored in --- sqlite_sequence -DELETE FROM main.sqlite_sequence WHERE name='undolog'; -INSERT INTO main.sqlite_sequence VALUES ('undolog', 141); - -COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.log b/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.log deleted file mode 100644 index f84523f6fa..0000000000 --- a/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.log +++ /dev/null @@ -1,255 +0,0 @@ -Creating connection to `:memory:`. -Checking database integrity. -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 3.00000000; txid: d331d71f0f5d5f62261d6f18019459f9a0711c1fa0a0e38004386319cefbccfc; vout: 0; confirmations: 7'] -Fee/KB 0.00025000 -New input: amount: 3.00000000; txid: d331d71f0f5d5f62261d6f18019459f9a0711c1fa0a0e38004386319cefbccfc; vout: 0; confirmations: 7 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 2.37994375 BTC -Credit: 930.0 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #burn# <15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399> -Burn: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 burned 0.62 BTC for 930.0 XCP (15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 2.37994375; txid: 15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.37994375; txid: 15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 2.37971125 BTC -Debit: 0.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #send# <52e4c56494983092daf8cef2850b69a66e0c0cdbef3ec3ba92d42983bda70505> -Credit: 0.5 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #send# <52e4c56494983092daf8cef2850b69a66e0c0cdbef3ec3ba92d42983bda70505> -Send: 0.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (52e4c56494983092daf8cef2850b69a66e0c0cdbef3ec3ba92d42983bda70505) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 2.37971125; txid: 52e4c56494983092daf8cef2850b69a66e0c0cdbef3ec3ba92d42983bda70505; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.37971125; txid: 52e4c56494983092daf8cef2850b69a66e0c0cdbef3ec3ba92d42983bda70505; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 1000000 -Size: 272 Fee: 0.01000000 Change quantity: 2.36963325 BTC -Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered 0.5 BTC for 1.0 XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8) [open] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 2.36963325; txid: 12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.36963325; txid: 12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 2.36948725 BTC -Debit: 1.05 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #open order# <792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c> -Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered 1.05 XCP for 0.5 BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c) [open] -Considering: 12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8 -Tx0 Price: 2.0; Tx1 Inverse Price: 2.1 -Potential forward quantities: 50000000, 52500000 -Forward Quantity: 50000000 -Backward Quantity: 100000000 -Tx0 fee provided remaining: 0.01; required fee: 0.00857142 -Order Match: 0.5 BTC for 1.0 XCP (12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8_792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c) [pending] -Order match has only -10 confirmation(s). -data_btc_out=15600 (data_value=7800 len(data_array)=2) -Sorted candidate UTXOs: ['amount: 2.36948725; txid: 792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.36948725; txid: 792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 387 final_fee 9675 -Size: 387 Fee: 0.00009675 Change quantity: 1.86923450 BTC -Credit: 1.0 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #btcpay# <957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495> -Database: set status of order_match 12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8_792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c to completed. -BTC Payment: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid 0.5 BTC to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 for order match 12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8_792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c (957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86923450; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 3; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.86923450; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 3; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86908850 BTC -Debit: 0.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #issuance fee# <3542e3a185495b9cafae33747e3840236f65c94e360e0725b384821af67a2ecf> -Issuance: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 created 10.0 of divisible asset BBBB (3542e3a185495b9cafae33747e3840236f65c94e360e0725b384821af67a2ecf) [valid] -Credit: 10.0 BBBB to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #issuance# <3542e3a185495b9cafae33747e3840236f65c94e360e0725b384821af67a2ecf> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86908850; txid: 3542e3a185495b9cafae33747e3840236f65c94e360e0725b384821af67a2ecf; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 2'] -Fee/KB 0.00025000 -New input: amount: 1.86908850; txid: 3542e3a185495b9cafae33747e3840236f65c94e360e0725b384821af67a2ecf; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86894250 BTC -Debit: 0.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #issuance fee# <875294dc37e08c5c392c297179dc89aabe49e0f3d8484c62687e78a44477f452> -Issuance: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 created 100000 of indivisible asset BBBC (875294dc37e08c5c392c297179dc89aabe49e0f3d8484c62687e78a44477f452) [valid] -Credit: 100000 BBBC to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #issuance# <875294dc37e08c5c392c297179dc89aabe49e0f3d8484c62687e78a44477f452> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86894250; txid: 875294dc37e08c5c392c297179dc89aabe49e0f3d8484c62687e78a44477f452; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 3'] -Fee/KB 0.00025000 -New input: amount: 1.86894250; txid: 875294dc37e08c5c392c297179dc89aabe49e0f3d8484c62687e78a44477f452; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86871000 BTC -Debit: 0.04 BBBB from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #send# <209ca33a9b698c14c16090296e84e1556ed194a32b4ffb537f5e08327867ec48> -Credit: 0.04 BBBB to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #send# <209ca33a9b698c14c16090296e84e1556ed194a32b4ffb537f5e08327867ec48> -Send: 0.04 BBBB from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (209ca33a9b698c14c16090296e84e1556ed194a32b4ffb537f5e08327867ec48) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86871000; txid: 209ca33a9b698c14c16090296e84e1556ed194a32b4ffb537f5e08327867ec48; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 4'] -Fee/KB 0.00025000 -New input: amount: 1.86871000; txid: 209ca33a9b698c14c16090296e84e1556ed194a32b4ffb537f5e08327867ec48; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86847750 BTC -Debit: 526 BBBC from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #send# -Credit: 526 BBBC to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #send# -Send: 526 BBBC from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (bad7a9312cc465ddd3083b0158963134db90dbf61d999841766f283f348ddf6a) [valid] -Total quantity to be distributed in dividends: 0.00000024 XCP -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86847750; txid: bad7a9312cc465ddd3083b0158963134db90dbf61d999841766f283f348ddf6a; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 5'] -Fee/KB 0.00025000 -New input: amount: 1.86847750; txid: bad7a9312cc465ddd3083b0158963134db90dbf61d999841766f283f348ddf6a; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86833150 BTC -Debit: 0.00000024 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #dividend# -Debit: 0.0002 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #dividend fee# -Credit: 0.00000024 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #dividend# -Dividend: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid 0.000006 XCP per unit of BBBB (cb9991934562490fc66980601a2afbf34d7b1d772079c1e56a9094488e454e96) [valid] -Total quantity to be distributed in dividends: 0.004208 XCP -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86833150; txid: cb9991934562490fc66980601a2afbf34d7b1d772079c1e56a9094488e454e96; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 6'] -Fee/KB 0.00025000 -New input: amount: 1.86833150; txid: cb9991934562490fc66980601a2afbf34d7b1d772079c1e56a9094488e454e96; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86818550 BTC -Debit: 0.004208 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #dividend# <5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17> -Debit: 0.0002 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #dividend fee# <5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17> -Credit: 0.004208 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #dividend# <5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17> -Dividend: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid 0.000008 XCP per unit of BBBC (5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86818550; txid: 5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 7'] -Fee/KB 0.00025000 -New input: amount: 1.86818550; txid: 5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86803950 BTC -Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:33:20 with a fee of 99.999999%% (cd429407565d308134170dde76f3ccd8be6c18ef5db2850e636429b4ee377187) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86803950; txid: cd429407565d308134170dde76f3ccd8be6c18ef5db2850e636429b4ee377187; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 8'] -Fee/KB 0.00025000 -New input: amount: 1.86803950; txid: cd429407565d308134170dde76f3ccd8be6c18ef5db2850e636429b4ee377187; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86780700 BTC -Debit: 0.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# <86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243> -Bet: 0.5 XCP against 0.25 XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86780700; txid: 86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 9'] -Fee/KB 0.00025000 -New input: amount: 1.86780700; txid: 86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86757450 BTC -Expired order: 12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8 -Debit: 0.25 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# <19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8> -Bet: 0.25 XCP against 0.415 XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -Considering: 86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243 -Tx0 Inverse Odds: 0.5; Tx1 Odds: 0.6024096385542169 -Potential forward quantities: 50000000, 41500000 -Forward Quantity: 41500000 -Backward Quantity: 20750000 -Credit: 0.0425 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# <19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8> -Bet Match: BullCFD for 0.415 XCP against BearCFD for 0.2075 XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that 0.0 value, leveraged 3.0x (86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243_19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86757450; txid: 19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 10'] -Fee/KB 0.00025000 -New input: amount: 1.86757450; txid: 19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86734200 BTC -Credit: 0.05 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #cancel order# <792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c> -Expired order: 792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c -Debit: 1.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# -Bet: 1.5 XCP against 3.5 XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86734200; txid: cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 11'] -Fee/KB 0.00025000 -New input: amount: 1.86734200; txid: cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86710950 BTC -Debit: 3.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# <78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3> -Bet: 3.5 XCP against 1.5 XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -Considering: 86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243 -Skipping: leverages disagree. -Considering: cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6 -Tx0 Inverse Odds: 2.3333333333333335; Tx1 Odds: 2.3333333333333335 -Potential forward quantities: 150000000, 150000000 -Forward Quantity: 150000000 -Backward Quantity: 350000000 -Credit: 0.0 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# <78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3> -Credit: 0.0 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# <78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3> -Bet Match: BullCFD for 1.5 XCP against BearCFD for 3.5 XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that 0.0 value, leveraged 1.0x (cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6_78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86710950; txid: 78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 12'] -Fee/KB 0.00025000 -New input: amount: 1.86710950; txid: 78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86687700 BTC -Debit: 7.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# <170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b> -Bet: 7.5 XCP against 6.5 XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86687700; txid: 170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 13'] -Fee/KB 0.00025000 -New input: amount: 1.86687700; txid: 170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86664450 BTC -Debit: 6.5 XCP from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# -Bet: 6.5 XCP against 7.5 XCP, by 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -Considering: 170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b -Tx0 Inverse Odds: 0.8666666666666667; Tx1 Odds: 0.8666666666666667 -Potential forward quantities: 750000000, 750000000 -Forward Quantity: 750000000 -Backward Quantity: 650000000 -Credit: 0.0 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# -Credit: 0.0 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# -Bet Match: Equal for 7.5 XCP against NotEqual for 6.5 XCP on 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:40 that 1.0 value, leveraged 1.0x (170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b_b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86664450; txid: b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 14'] -Fee/KB 0.00025000 -New input: amount: 1.86664450; txid: b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86649850 BTC -Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:34:10 with a fee of 5.0%% (16db4d63be8839383e28cdab7edf52c1264340fb5db51ae5341801983ff48861) [valid] -Credit: 0.591375 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet settled: liquidated for bear# <16db4d63be8839383e28cdab7edf52c1264340fb5db51ae5341801983ff48861> -Credit: 0.031125 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #feed fee# <16db4d63be8839383e28cdab7edf52c1264340fb5db51ae5341801983ff48861> -Bet Match Force‐Liquidated: 0.0 XCP credited to the bull, 0.591375 XCP credited to the bear, and 0.031125 XCP credited to the feed address (86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243_19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8) -Database: set status of bet_match 86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243_19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8 to settled: liquidated for bear. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86649850; txid: 16db4d63be8839383e28cdab7edf52c1264340fb5db51ae5341801983ff48861; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 15'] -Fee/KB 0.00025000 -New input: amount: 1.86649850; txid: 16db4d63be8839383e28cdab7edf52c1264340fb5db51ae5341801983ff48861; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86635250 BTC -Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:01 with a fee of 5.0%% (f0409d985023c1fcb9cd0df5530b65b71c1ebff78f36020f157fadd109f4c52f) [valid] -Credit: 1.593 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet settled# -Credit: 3.157 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet settled# -Credit: 0.25 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #feed fee# -Bet Match Settled: 1.593 XCP credited to the bull, 3.157 XCP credited to the bear, and 0.25 XCP credited to the feed address (cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6_78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3) -Database: set status of bet_match cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6_78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3 to settled. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86635250; txid: f0409d985023c1fcb9cd0df5530b65b71c1ebff78f36020f157fadd109f4c52f; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 16'] -Fee/KB 0.00025000 -New input: amount: 1.86635250; txid: f0409d985023c1fcb9cd0df5530b65b71c1ebff78f36020f157fadd109f4c52f; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86620650 BTC -Broadcast: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:41 with a fee of 5.0%% (4e33149428c2fe189c237ed80abd77262c4f2df3fdfad7e275631f2ef51b0a7e) [valid] -Credit: 13.3 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet settled: for notequal# <4e33149428c2fe189c237ed80abd77262c4f2df3fdfad7e275631f2ef51b0a7e> -Credit: 0.7 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #feed fee# <4e33149428c2fe189c237ed80abd77262c4f2df3fdfad7e275631f2ef51b0a7e> -Bet Match Settled: NotEqual won the pot of 13.3 XCP; 0.7 XCP credited to the feed address (170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b_b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679) -Database: set status of bet_match 170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b_b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679 to settled: for notequal. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86620650; txid: 4e33149428c2fe189c237ed80abd77262c4f2df3fdfad7e275631f2ef51b0a7e; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 17'] -Fee/KB 0.00025000 -New input: amount: 1.86620650; txid: 4e33149428c2fe189c237ed80abd77262c4f2df3fdfad7e275631f2ef51b0a7e; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86606050 BTC -Debit: 0.5 BBBB from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #open order# -Order: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered 0.5 BBBB for 0.5 XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64) [open] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.86606050; txid: cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 18'] -Fee/KB 0.00025000 -New input: amount: 1.86606050; txid: cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.86600425 BTC -Credit: 569.99887262 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #burn# <181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01> -Burn: 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 burned 0.38 BTC for 569.99887262 XCP (181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86600425; txid: 181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495; vout: 0; confirmations: 19'] -Fee/KB 0.00025000 -New input: amount: 0.86600425; txid: 181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.86577175 BTC -Credit: 0.085 XCP to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #recredit wager remaining# <86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243> -Expired bet: 86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243 -Debit: 10000 BBBC from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #send# <057f27f2340282c1a82250563b67a37497eb8e07c2f5d0905422238158488488> -Credit: 10000 BBBC to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #send# <057f27f2340282c1a82250563b67a37497eb8e07c2f5d0905422238158488488> -Send: 10000 BBBC from 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (057f27f2340282c1a82250563b67a37497eb8e07c2f5d0905422238158488488) [valid] -Credit: 0.5 BBBB to 2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #cancel order# -Expired order: cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64 diff --git a/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.sql b/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.sql deleted file mode 100644 index c972314dd0..0000000000 --- a/counterpartylib/test/fixtures/scenarios/multisig_2_of_3.sql +++ /dev/null @@ -1,1400 +0,0 @@ -PRAGMA page_size=4096; --- PRAGMA encoding='UTF-8'; --- PRAGMA auto_vacuum=NONE; --- PRAGMA max_page_count=1073741823; - -BEGIN TRANSACTION; - --- Table addresses -DROP TABLE IF EXISTS addresses; -CREATE TABLE addresses( - address TEXT UNIQUE, - options INTEGER, - block_index INTEGER); --- Triggers and indices on addresses -CREATE TRIGGER _addresses_delete BEFORE DELETE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO addresses(rowid,address,options,block_index) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.options)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _addresses_insert AFTER INSERT ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM addresses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _addresses_update AFTER UPDATE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE addresses SET address='||quote(old.address)||',options='||quote(old.options)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX addresses_idx ON addresses (address); - --- Table assets -DROP TABLE IF EXISTS assets; -CREATE TABLE assets( - asset_id TEXT UNIQUE, - asset_name TEXT UNIQUE, - block_index INTEGER, - asset_longname TEXT); -INSERT INTO assets VALUES('0','BTC',NULL,NULL); -INSERT INTO assets VALUES('1','XCP',NULL,NULL); -INSERT INTO assets VALUES('18279','BBBB',310005,NULL); -INSERT INTO assets VALUES('18280','BBBC',310006,NULL); --- Triggers and indices on assets -CREATE TRIGGER _assets_delete BEFORE DELETE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO assets(rowid,asset_id,asset_name,block_index,asset_longname) VALUES('||old.rowid||','||quote(old.asset_id)||','||quote(old.asset_name)||','||quote(old.block_index)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _assets_insert AFTER INSERT ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM assets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _assets_update AFTER UPDATE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE assets SET asset_id='||quote(old.asset_id)||',asset_name='||quote(old.asset_name)||',block_index='||quote(old.block_index)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE UNIQUE INDEX asset_longname_idx ON assets(asset_longname); -CREATE INDEX id_idx ON assets (asset_id); -CREATE INDEX name_idx ON assets (asset_name); - --- Table balances -DROP TABLE IF EXISTS balances; -CREATE TABLE balances( - address TEXT, - asset TEXT, - quantity INTEGER); -INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149849426438); -INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50420824); -INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000); -INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',89474); -INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000); -INSERT INTO balances VALUES('2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10526); --- Triggers and indices on balances -CREATE TRIGGER _balances_delete BEFORE DELETE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO balances(rowid,address,asset,quantity) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||')'); - END; -CREATE TRIGGER _balances_insert AFTER INSERT ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM balances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _balances_update AFTER UPDATE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE balances SET address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_asset_idx ON balances (address, asset); - --- Table bet_expirations -DROP TABLE IF EXISTS bet_expirations; -CREATE TABLE bet_expirations( - bet_index INTEGER PRIMARY KEY, - bet_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (bet_index, bet_hash) REFERENCES bets(tx_index, tx_hash)); -INSERT INTO bet_expirations VALUES(13,'86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310023); --- Triggers and indices on bet_expirations -CREATE TRIGGER _bet_expirations_delete BEFORE DELETE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_expirations(rowid,bet_index,bet_hash,source,block_index) VALUES('||old.rowid||','||quote(old.bet_index)||','||quote(old.bet_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_expirations_insert AFTER INSERT ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_expirations_update AFTER UPDATE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_expirations SET bet_index='||quote(old.bet_index)||',bet_hash='||quote(old.bet_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_expirations -DROP TABLE IF EXISTS bet_match_expirations; -CREATE TABLE bet_match_expirations( - bet_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on bet_match_expirations -CREATE TRIGGER _bet_match_expirations_delete BEFORE DELETE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_expirations(rowid,bet_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_match_expirations_insert AFTER INSERT ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_expirations_update AFTER UPDATE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_expirations SET bet_match_id='||quote(old.bet_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_resolutions -DROP TABLE IF EXISTS bet_match_resolutions; -CREATE TABLE bet_match_resolutions( - bet_match_id TEXT PRIMARY KEY, - bet_match_type_id INTEGER, - block_index INTEGER, - winner TEXT, - settled BOOL, - bull_credit INTEGER, - bear_credit INTEGER, - escrow_less_fee INTEGER, - fee INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO bet_match_resolutions VALUES('86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243_19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8',1,310018,'0',0,59137500,NULL,NULL,3112500); -INSERT INTO bet_match_resolutions VALUES('cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6_78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3',1,310019,'1',159300000,315700000,NULL,NULL,25000000); -INSERT INTO bet_match_resolutions VALUES('170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b_b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679',5,310020,NULL,NULL,NULL,'NotEqual',1330000000,70000000); --- Triggers and indices on bet_match_resolutions -CREATE TRIGGER _bet_match_resolutions_delete BEFORE DELETE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_resolutions(rowid,bet_match_id,bet_match_type_id,block_index,winner,settled,bull_credit,bear_credit,escrow_less_fee,fee) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.bet_match_type_id)||','||quote(old.block_index)||','||quote(old.winner)||','||quote(old.settled)||','||quote(old.bull_credit)||','||quote(old.bear_credit)||','||quote(old.escrow_less_fee)||','||quote(old.fee)||')'); - END; -CREATE TRIGGER _bet_match_resolutions_insert AFTER INSERT ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_resolutions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_resolutions_update AFTER UPDATE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_resolutions SET bet_match_id='||quote(old.bet_match_id)||',bet_match_type_id='||quote(old.bet_match_type_id)||',block_index='||quote(old.block_index)||',winner='||quote(old.winner)||',settled='||quote(old.settled)||',bull_credit='||quote(old.bull_credit)||',bear_credit='||quote(old.bear_credit)||',escrow_less_fee='||quote(old.escrow_less_fee)||',fee='||quote(old.fee)||' WHERE rowid='||old.rowid); - END; - --- Table bet_matches -DROP TABLE IF EXISTS bet_matches; -CREATE TABLE bet_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_bet_type INTEGER, - tx1_bet_type INTEGER, - feed_address TEXT, - initial_value INTEGER, - deadline INTEGER, - target_value REAL, - leverage INTEGER, - forward_quantity INTEGER, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO bet_matches VALUES('86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243_19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8',13,'86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',14,'19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310013,10,10,310022,99999999,'settled: liquidated for bear'); -INSERT INTO bet_matches VALUES('cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6_78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3',15,'cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',16,'78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310015,10,10,310024,99999999,'settled'); -INSERT INTO bet_matches VALUES('170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b_b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679',17,'170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',18,'b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,3,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310017,10,10,310026,99999999,'settled: for notequal'); --- Triggers and indices on bet_matches -CREATE TRIGGER _bet_matches_delete BEFORE DELETE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_bet_type,tx1_bet_type,feed_address,initial_value,deadline,target_value,leverage,forward_quantity,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_bet_type)||','||quote(old.tx1_bet_type)||','||quote(old.feed_address)||','||quote(old.initial_value)||','||quote(old.deadline)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.forward_quantity)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bet_matches_insert AFTER INSERT ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_matches_update AFTER UPDATE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_bet_type='||quote(old.tx0_bet_type)||',tx1_bet_type='||quote(old.tx1_bet_type)||',feed_address='||quote(old.feed_address)||',initial_value='||quote(old.initial_value)||',deadline='||quote(old.deadline)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',forward_quantity='||quote(old.forward_quantity)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_feed_idx ON bet_matches (feed_address, status); - --- Table bets -DROP TABLE IF EXISTS bets; -CREATE TABLE bets( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - feed_address TEXT, - bet_type INTEGER, - deadline INTEGER, - wager_quantity INTEGER, - wager_remaining INTEGER, - counterwager_quantity INTEGER, - counterwager_remaining INTEGER, - target_value REAL, - leverage INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO bets VALUES(13,'86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243',310012,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'expired'); -INSERT INTO bets VALUES(14,'19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8',310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,25000000,4250000,41500000,0,0.0,15120,10,310023,99999999,'filled'); -INSERT INTO bets VALUES(15,'cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6',310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,150000000,0,350000000,0,0.0,5040,10,310024,99999999,'filled'); -INSERT INTO bets VALUES(16,'78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3',310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,350000000,0,150000000,0,0.0,5040,10,310025,99999999,'filled'); -INSERT INTO bets VALUES(17,'170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b',310016,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,1388000200,750000000,0,650000000,0,1.0,5040,10,310026,99999999,'filled'); -INSERT INTO bets VALUES(18,'b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679',310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',3,1388000200,650000000,0,750000000,0,1.0,5040,10,310027,99999999,'filled'); --- Triggers and indices on bets -CREATE TRIGGER _bets_delete BEFORE DELETE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bets(rowid,tx_index,tx_hash,block_index,source,feed_address,bet_type,deadline,wager_quantity,wager_remaining,counterwager_quantity,counterwager_remaining,target_value,leverage,expiration,expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.feed_address)||','||quote(old.bet_type)||','||quote(old.deadline)||','||quote(old.wager_quantity)||','||quote(old.wager_remaining)||','||quote(old.counterwager_quantity)||','||quote(old.counterwager_remaining)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bets_insert AFTER INSERT ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bets_update AFTER UPDATE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bets SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',feed_address='||quote(old.feed_address)||',bet_type='||quote(old.bet_type)||',deadline='||quote(old.deadline)||',wager_quantity='||quote(old.wager_quantity)||',wager_remaining='||quote(old.wager_remaining)||',counterwager_quantity='||quote(old.counterwager_quantity)||',counterwager_remaining='||quote(old.counterwager_remaining)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX feed_valid_bettype_idx ON bets (feed_address, status, bet_type); - --- Table blocks -DROP TABLE IF EXISTS blocks; -CREATE TABLE blocks( - block_index INTEGER UNIQUE, - block_hash TEXT UNIQUE, - block_time INTEGER, - previous_block_hash TEXT UNIQUE, - difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, - PRIMARY KEY (block_index, block_hash)); -INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); -INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'cff3ba7c92f6b318eb4a4a5e2b90b655fc055d4e8a82101b813aef6e1c6152e4','9f6f20e36fd2b2b44df6e91fbfaeffc6d7fae9917b27d196245ee90c36d99ff1','85a06958d9c6620e0cf4e8d7502819df9a79125bc6f1f143d27bf9e1e03dad33'); -INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'2281de0177f4fcf8d730e2751d7b9fb5da4df741196bbcaff470c7860a2ca0b6','b393dcd93d8e02cf3475cc428183d9c979afb11414ca9e8f867401351182d047','9096a5e156a91add456c6659b592df1eced8d2bbb460539d2904f2d1bcb31b72'); -INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'802742a55d8ab83de24c45efb86d1daa0ad4e565cc4db6dcaa5cedb16ec4125f','a4e334790934f7c9ebaad65350678a7aaabccd408ecd2ce42b236b7006fbe6d6','5ceecc1fb4ed6c5e549adf31638321ec4698fc889187dc0d8fbb4801da50d5c4'); -INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'ed279c6a985256134cfb39f1283ec97c8dc800b7255a3e8243ca9846884d0378','64d1ecab20a6e90414bc724e158a5fdfd4053ad32f982d27498aeadda3d9510d','073528e1297f2cbe38b5c3ad02d5026194ad9ee16c94872781f9e46bdba96b5f'); -INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'bba1ec90ee149be7d8a88ff9df1fca931e076e885be21bc822637829a8675e02','3345111af3d4dbd9ec2e2ee1429369c530d43e5306b97dd74afc1267646a592a','8f8e7e8e03586f60ec838ba2f56e88d5c6ba70e8a78277ed391fde705091fc9d'); -INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'5f8a9d465e686b3e9471041bd15d645b7fc8afee36ee890873aa6c3c51d87bb5','82fcba49d0bfc014ac8ab30a4691026d26b5d26420e95b458356f15cf5aee8d6','274c5b87e5f8911af6da954c4799a169e38e6995af03565e169e1755dc834056'); -INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'153795f1c7ae2dbec7fc19bb25d03dd518f0664bca82b9bb92bb7c4f1e22f040','bf441cf8ad660bcd326ddbde426c754967354ea138c97090832df658740b8911','e0c3647fdedfdfb2720d75082fcba0c27ed9148fb12ac7552ad85938ab8c3863'); -INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'c5d21baa8c6949a8e9f0d73a37436d431bf4876ab3b60b82553877ec53fc4454','7394aba3ed78139155e8e2a3254e0acffda47efc1c8c5ada709b9efe5a28cdcb','2ad30c8d01ab5218d92b4428592481bcbd592290dcc62ea8da8bcdc38ea8bdb9'); -INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'579de8204446e9128076fd27a644a82da77ca5ff2793ff56815c24a11218af5e','666e6d9782286353933cfb3bab6831856d70081b02b35ec0607e5430bc295df3','f31c66f44d95d0b61bc25aad5eeaab319660cec0bcc1875cb530e0f3d67d85a6'); -INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'c03a6e31f50f172c86029ce6a810ec730e1179ad3e76ba5d4290595ec414bb87','fb1b8ee4e94d23f56f967a4f2c48301855261c1a76ece49afa0b7519f9705806','373a57f6f56397ace901dc53c35c43ea4b97d4912156039de3036bf61b8dcab1'); -INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'804651f6571bb24ef7534c97116ae35fb0b6b31aa6a4574a419aae7fc2900b1c','3fdaf1047a7e198c4aee58a91ef03ec877bdb08f4e0c925d71e6f6313bfab670','d743b760869b75cb09970c597d89a6d70a73e64465c8e87ccc9f6be7014a0bec'); -INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'a9a18fcba1a83d637dcfd633f32848d55c86c5b499e0c15af6a626653b7424b8','a214b8069793a75abd9a977aa67abfdf07763fd5dc46cd05b07320d3f60b7819','32e524f4bcb0cf22b4fb9299b89ea778addbf65c45c2ffbf01475e670a016f08'); -INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'27298dbdb9026b5d54228b686b7a76f9d42479da79b38b9ef7cd13e4fee27159','2267a2c3de9677c64e4ee8b6a9406d0dbfa964acb7396182835583ae794ee61a','a15223451206d694b8a629d24d3a1f78d4e6722fee56abcc2af9f908284731c7'); -INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'f5fbbb8870bb8253cfba52c58765b8c2493ceee6a2db5779a4212ed456bf892e','e2f856c0cc64e1a2e924461ed25a2abc4268ea587666ecdc9ba300ae1d854233','03e423d6c7fb412dccb32d5719765807a7107b24234de7d9accef55993c080f2'); -INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'f1e77a7a4d28d64a0cfd878112074b6205ef09055b93b8923b0c6466a07ea500','a1c5af7207bc87442bd41a28511143dfe3259b98f479ab314d101821ac82732c','1ba5fbc10ceefc8e0879cd505d5bd66807baaf8a8cff56cd98ead30a956ef4cf'); -INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'014bcc839c0ea0d2fecd9aab3074528ffee3b2dce7f805e4d459e2dfb3d98a51','0263e566149b2db6b4742c0b797a17327294fa2a07624cc0df97ad792ec7c7e4','651630a78f4775ef5877fe8f421f6c6023623171802df2d52bc4a703f92189d7'); -INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'9f72d6a84ee58e1e851a90a62b525dc257c3b1b0c7e9964f93a7e5df6a2e4007','2c0ca9fb210ab683467d03d8b45e45709295fe52c7c070c17c9fd3c6f2e341f6','ded84824dafd2309c0331604487c05acf7b7aafc11b888ffd310ec678582e5aa'); -INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'5d1e195a7d313d703253640cd98be600b04a7d98aae69b5327a29e740573198d','73dd30daf74bde42681f1c3980b2aa01aa1e14476b7e00f4fbc89007b46f306d','1a069c5f5dbf9b36ced62ab4f9d0cb248c6d3ac097f989574f03a9cba4875f01'); -INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'f38538a4a2cba9bcf8821b56e1dc877990e027135d3f220338cd8cb11f3eb205','fc281f0470545d145082e240b4754cf592a65f5ba0a2b94bcf67b667d5025cfb','c65d217abf4a6ff0a0c98ce560fa284ccfaf251bd6a9b85cb6229909b9765873'); -INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'3a51f1f061d953c940ac7e53f8bb37df041f2d4f42a16f5c5d23707b8b0c0dc6','50e4b316e60f479969768480fa0e24b10a8b2a40fd485b1f47a4ca9b51a62c2e','1090f1cb462fccb0dad804306ab426bec08f3650ad97105dd4802468708b5adb'); -INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'cce3284c53fcf79ba268d925e32ab70e3d4df1e6f13dbcbe2920e93fc689128b','033fae287f489cf539f33f291090bdf971387fb7ec1a0dbecda37260adb88a28','3ea1404a91be470a93c201fe1d0ff11bd84307ecdb35c1591a893239c5e2c327'); -INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'6ad5172a6dcaa6706d5a4f6fd8ada183e103b9faab58e42c1365613a26477490','9f04c16d1f480da166fecb679a515a7bbb6658e3273a3dbae0715fd00108d27a','62ea4976ea1e08a905871f74a1ee4ab92556c8e4aad507beb4d591f1f3d468af'); -INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'c9361fea7f3dd2415969eb6ad7fe893381c9ca65ea391f2e47a966e342db3a90','1e9f2863a1df03505fe29f507ca06d61595dab0ec6c55626196ba35396603fbf','720badbac7efeb488effe47bf6a11706d1b28afc3ed24bee7278b760ee2224c6'); -INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'f63680db66cf963aaaebf64130629790e7492b5ea9396434c2179a5eb8774412','5f2c60c5fdc47a7938c30f93412c61ee4f6c7ebf587f3dbf5b5f1dbdd782345f','7440f622a88fc0a6775eb503ab9b0039e2ad5badd94a2755b3fb61d4e3a034ab'); -INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'d69ea243fcd5e525ae03af680d5610b654a9d2bad17782e196305aaa110a6ba9','a614e55cb713cd8a8b5339feae81e291997de7abde087db624f981e8e0d38182','08f55cddde90b7e8e2aff4bb12f997eb99fe8ab4991f2dd396521923c74cb41b'); -INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'721906ed4cbd1524fafdc8e3ffef27d8b03e0c798bbcbe3eee7bc7f14afe4e81','55855d614321ca741fb97071b97bfd42353a7bb57e7204e6cd5774db4f186e14','c2332fdff5b9be324898d42741e7544eec43ef0eb7ea6b8bdf0811f2410dbba8'); -INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'27912da2afa797876030dd0e50c31aea462d54c7bfa4f89d2f14fdb7b80db6b0','24d7481a996863918866b6a35fd1bd06794ed2865f10066d87cfe20ddbccc9a2','b5618aab813fd65b516c4059c0064b1246c84395d74f35b3c60582d18774de5d'); -INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'cc0734ecfd2bdbd2d04d236b853f60e324feaa9115fae33a8add961c4a5f9436','f7ee5c2c91925a4040896943ccc3ea650ae9c410da53a74cc49c821b4e34dc3f','d59e43309396c80398fd92c4aeb7fb67ea482bd6fe10eea0fedc6da7138983b3'); -INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'d3f5fbbe85d5a81fef8735c73349f61a43122f4b6f3f7aa61215323a683ce3aa','ed54aff67eb6812c30535f8f8bb0b133afc6e3de796133c2e07a90fc5a57c024','cdc5d821391f0a4f372e55cf59cb8047cc9dd6f6c135a52d7699bf95fa54fde7'); -INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'74d08f0d1cad9f7102d0cfe70f50614c7ae7f4844ca6d02390031e1e96c2b418','f220d4a7ac61227281fc5de058955da81f54a012a134df74dc1c29e7924b4eb3','a1f2c1f5efbca62bda9f33967dbc28ae0e9709743fce978a16d57b25e3e318ed'); -INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'753a1a8bb877851ae24dbc33884344f34ee18c6b0d70a4d909231448b943e8cd','391154a9273f2b68bcd6a1bdcb194020fd0446d276959335b899f782f999cdc3','c49c2f8747b935c4bec8cbeb950a4eef500591a5aa63e68305e2f2d707411794'); -INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'f7c62d08a4efc854dea6f47249786d3d00778d97223dd84de1d0fd1eef3e2ee7','65cfbb0dd5ef5987149ee73ee85d88e81e5f4273eb19cc313e9063c3eaf021b5','8674476b053d7c7956eeb3a25a9adc8e4c8bd028f447b679c2b679957b4475f6'); -INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'833690f195e85b427b61890640fe8f0cc7419e0f4301b6f4738bab12be06dbb8','d87ce8710dc2b0b6cce6bc1ebd22c782d2900d1909ceb92c1bba6972d6967b64','f048c5c2bceacd00b7adfd0ae9c4da928275d959584f912a971b78ce7cd9d536'); -INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'a1e118474a6f70b8f700a67b43ee0272c4609d3309603b5be6434ca587eaa704','782741e5a177d5d169afba9f84754cb51c156d788e2339f358c6f66902e1cd6d','19a67ff4f5163c5ab28519dc85b34ee3290c9654478ac1ad03642df7e9cfab79'); -INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'3b6427f61fb59ffd674ed8e0af75687fc4ccf8b462011727d4dc4bdf4c794775','9ec3e81cc7ec6276e4058847492c66aea0497a200c632e194d4628acb068dea8','5ef202b2175e6b21b9061f376863ca4f4b7ce98949c3b3a2b9dcb1671693a851'); -INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'d065384f739c52a718f656717f88eb2fecc10d8567a93ccf823434c003d28c55','cec32126cc01f1d8906bd22e0ae4a7b09f0d6c095384d098a74c883e3c8f1120','c6817a26a426313d1ed0fad93cbcef24922504292138d6fdcf9a40768b2c09cb'); -INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'22cddc8dbfcbaf4b851fa5379c740a96294acc3d772dcf6d684881bef18d7fbf','57d147c6de30e5d5513a9cebb76c32ba87bfd61abf82eb26ce6f4252525ded99','ab8da9b64a721736c3306a29fd7d376937e57eecd62b2b72df2a1e34f01da224'); -INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'93172c51a9c4cb5c33937a199a32ad3c13a40a60f4c194a1187e2c59a15c0ccc','0241e2eccc7f4465f1dfdc3e76bc767a2709737e2a52ab1dfb7f9cee9d736731','c9932fd2d73cfc9efdc79fb1287195238fb31e4163b8c634fcea1d1385adebba'); -INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'7a167a13f7e576c7e066035dbe2a2513659f1386c095a9e63afa494c043b7def','fdd50f06a9e4a9a40ddc75de5e1d6e44a8e3ad5aad6a5eda26767f2822160b3a','396bca5a0e68f90c9450bcfb6e42965317df09866452d730cd5cee9041c3a27c'); -INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'4733d9ada3d4f60bc09f0a6eba3fdcdcd8e8b18adfd38c7bf06372259e2d38f3','a949a16079cd6a1291c97380dd03ab949fbbc99f08203e99e5dba1846fc47d2f','6a81bcfe1db4f0e3e4d5aea55321e859209852e1685d2a4137cd49ab1ef8b2f7'); -INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'b8021bbe3744e58cedfc3dd99220fce48f4e56a8fe8256d7894dd55c7312a76d','11f713c6a3f065b6f579e1868dbb880b03e763e56fa69bb2fb42442a961676f7','9da607172f249d305b931c4a6029002f8500f45a2ee4e228f38a6f55495f8ecf'); -INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'017b79a5fb34785dd39964a61a5bde69d676f75ee085c27bbc9e3381983c2dab','b2752fbb62bfa7f4a26f1121d1aef28df520029d59e3f43374897cf344d7bf32','5461922e4d9695f666d4b9f5c66c6d03ccd6b22163196218c41f578f94a8960d'); -INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'cf5389c037b6c619025bf95d9718fb5548cd67978c3ebf26f76029873828162e','141ac90675b54cea3447ff18f1296c1e626dd76243abe48ad25bf43887d33aa4','d36575b5b5117bbd8a94b2f23efd7baf0aa3c83510fc64afeb79723062eec94f'); -INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'df116ea1fcf5f968644dcc97c1149f0ef6061b188fd56c27152543256ce79009','3e0694e65cb762fd6c14e471c9dd471658011c8626903f228860b009c9447ac6','386da44d35fe8f666700acd85a71f14e3c8336c23b33886f598bba86d366ff2f'); -INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'c12cfaa984bfb34e781ac93848a87cdc0318c45a1cd9f02d31f5c3a4abe8d918','c17ce5cfe174e57f219b7d42295e3fc9b54d59a72dc0e16b3330506e471cccdc','67ab0e67464b31417dec98a4d1bc7ac5ce42d0a802eb2ce7a31760c410072f1d'); -INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'999a9ed2673de2db7637e22eb8a1876e0c794e90f09cdd76d1442e56ae12b1c8','81039578a1b7390f2e446b46aca6726e4810a10ffa281b5eadde6070989a0316','50645814a803efc8b80be3b5d5540c895da81aeac03072a68882cd393458e723'); -INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'240c9a2f6dc918ed868abfb5de6838d7a17f02263fdda0ccd3c7481c09e155d1','d90ae7ff9d713ad733ba2855abb4240a28a82f821a7552970e307b88f1ec2d9d','3c7f1e295b066ae259f22257a93b1f4c522c46af3baea0348afe70bfeb5975be'); -INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'79836105e355e25afd709d15632e2c0d1ab53ab251cd3750ffee9fea4a2605b8','c7ba9e19a5aec07955ae01a5e24114689a52c3d900574e6bb19ebe10c628970a','602877fa7b1b595f90b48f962dcb00a3dbc25a9666eb2e20d55ee384b6433fda'); -INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'6bf0789392e97311c4283d9f748b37effe7b0d1678076e30ce5725eff345a8c5','573d00311f273ea4f17610fa072c212d50772b104b812fbecd973f4eb8850d6b','1fef764118d36329855c086e51582f2b10481027d8cc51922e1d44456b485f15'); -INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'1842c46a03800f5e191cb8d641aead6bc80e6d25c2ec826f3a5df426059cc1cb','7d75bae86dd0a31cbb95905bca36054ebe6eaccbdca146d9996e1b0a76a98bdb','01d716f665211b1d34ec9aece39e1fa3cb418cbddc5ee592e1f65ae9c513379d'); -INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'d424b02109320491b2d32388869d6468ab1fca26d4bf72374cfef729efad866d','449d5e53f4516460031a18e8ef806b04d0dfc5ca23f3ea2cf44ca5c9735d52ce','00bab3b3fbea9dce35afe466a69282a95f60f6d430048a02e6bca0c466c56ba2'); -INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'d1db4181403136b41168ab7786831f2fadfc418a05b7477246ab097bab531859','eed4b4cc20c3bf505736dd9ea75d6d9e9c35cd10335640e2be7bfe8751854af3','5a0f85f3811da402d4e2b3bb0a70549121dd4ffdce22b3eca8276dec111604d9'); -INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'97fdb6b2c8e636d23109a67af55ab4bb30955a84073274de3fdc788074dc1b6b','4ee25b235d8703e973cc5624009a501dcd5c7756cafbf40d0337a5d029138953','0083d59ac2318086752ce890382abade55905896a13103f985b027dfa9e680d8'); -INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'0506be4f04a22058504406210af3f1475dbf6d6834c1c1b7f6ac0fe013b47363','f970e2a4cf6083e7d6d514543b80f2f7d97ce5a6221310a3b5bb33e958f58196','e12f5fdffd0e55071842d8f82ac19dea3de7cbc7f1c6d6da85b5ff92c8714c4f'); -INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'3dc7894c1368c9ef5d32a95fdc292e7de8237b73b61365a25b9d0da95eedc2e6','559b5dfaadea9b00fff29e5c0875c64ba9ee614f4dad3a5fb67367f9df013b65','6cbdca99ae44530c78c9b8c8673611708775ffc6869a929da558604bd6257b29'); -INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'a9ef2c8bf3a88c326d2bdd722c3d82ed4f4c10b65620b136d4b893ed93174795','6497347dd581a2d57305823d496164bae3aa9cd879f9612e74f3c8d7e49f466d','635b6ba7af7c615e25eaff1437e418fdd03d0de3a93f7d823d30602b706309a2'); -INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'13b76edecb04a9733107d5c21420ee20424fd463dcde2ea98424ad99ed3383f0','fbdb6f8d5c7fa6792ba740fb3e2da221be8c9d30625473cf124c5e751b746fda','eea7b0925672282262ec6a6c55d464f354512060f7a2f05250d476dbdf8ec419'); -INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'41c8a47d7bc4e73aa2f09685acb9fac052c5c55764ec3a8250abbbcde40dbe90','2b0e2baf32043cd5226b09906e56f4699d5fa314ae251a93fe4fc40e5ce929bc','e7db74349b3c205e390638dd141bd210379d3ff4a2b9108e17d50e65e7335e92'); -INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'0b8ec211d258206ab8c318c079d9deb33d444a7086d5a05aaba97abc0be137df','2e25c81c028cf2fa9a335cbe12988a98b2785ccc831dd89fbdd77c8bc70308ed','569ec3e813db531bf9376ad51bee53714c9a42bdf07920c1540e02bee3c1af51'); -INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'f5c2686408577854893d11b02f52d8ea917e90777dddf67c98aabb36a3339b6f','8271bed11c0ff72ad50c056f41a96ad193acc3a107dee912bb2dfdfd3a53e5fc','ed5e01158e7b4e51ae98987eecf18d2a165e83ee2cacc7e65ca57a63b3a18994'); -INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'b80d446905550494f56f4f8240b501d593b0d0e63b5d98a09e180b1a0a68e3b1','785837f8116b5ebe091f5238397d6b061eb619c9d0af2e97501a4ff2baf4bae7','f12cb51384b67fba9b3d3f54dd32916ae9decdaff8d49bcf289ec1e38871a8ae'); -INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'41b30d23becc727151698b29a1bb733e45ae5086683c5256d073a6f817baaf49','f812823c3c035e7f9bb1dd4b3815dfdb88bf97156f60ce7b4260f68b94978677','885a99435356058b1ecf67a3a260c770292e7c9fd79bded1496ebcec4498da3c'); -INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'f873f47e89715e965c98e92616339f8ff4200f6b8ef5cf747e8de2d101cbde02','d76e072b57594089d90617f321af7979eb8861bbe6e4382c1fce9fb4098fa53a','112b8914682c77f9aa1e0a0d286756b9970b103b8029cfa07c50c7fdccb5208d'); -INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'14ce21ebfe6a00eccd7bf1aac2d5cf122441d2ebe8c0f5fd6dd14a95b5a209b3','35f574f238b41640590faff8c9171121f0154f568d5a7d6101068f1579c331d1','979bafceee726c1458472ebc33ce28cc3c5b91aec47c565f09ccf5730bde553d'); -INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'adb05bac5e7f1e6a1679d5c51f252dc877ebd99c2b73a56df69a9c848cef98a7','9b1d0eb7deb910d1fa652bb0599419de260936b9e78f23aa48a314e65de141b6','ac52d05ac8238c980779ab33784a1d466ea187f23a08d46f72dbe49377434515'); -INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'9065476b6b2cfb122888e036cea71d36f3d5f7d6c72451c63d770b40a4560fac','9a6a7be860e7e6c66af23c9993663d466c95ba8a968d86ddc678843abb95aeda','1a667715b918a6d747c11364dd081a8d4a1a125cc8bf1745fd9aacaf5436176a'); -INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'7d5d369827ec0cd44743ed9a519d45003789ff8dc2e511191d2726e1482f58d2','a7fb23011875a86b280e53bbb2797dbfef35b1904b92fbd8d23ed276d076d5d1','36587a014e370c4b12fe56c6ab2979bd5023c112ee84a62d126859f366c9b791'); -INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'301b22a9338d5dd39bbebf6bf518ac53bbb8e1cf7469322484cbcee2fee666ef','88546b5bed3b2acc23c0d779713fdf89e53f0a318a3fb7416f9cd28240dbe6f4','d3d2603f06e2c67634fc3c8541b3f1229acc0f0298acb8307c0937fd845bed54'); -INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'fc281736e1dfe5a89a9a3dd098565c645904a4ad1626dd70ac8e9bc447dfb8b8','e5cde5dae8c0a811888f0ff1bf463c4f1d84d1e5e73f660bc5a293d232d98ae5','92191165d5a32e467a2b0ca05c6362b7f3fba6b9ad56a6bbcc66ec3588fdf9a6'); -INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'b0249a0dfd008a4554adc24085d3c5f44278403cbccb44ba27ee354b23c5627b','26de5022a7cffac7aeb372928a7cbbcb8030706df145ec016578cd01eddc2f74','b2a719719d82f76930530af93d7e15b95ade137e89d2640f7bb704e2eb612b42'); -INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'d34051879c8db679ac5c49e50edf2085d0ce88dfc1adb971e7b097c0177854c2','45c3c8d6139293224b055fc2b2097e4cfb20f740ab17c8fd9378af580d17502e','e714025644d3ddb7228d6f4662c734470fde227590232bb0b571b39fe9677a75'); -INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'0186c5312af19576cc628a85014ce7c33892dc23b5352c8ff5a0f230adfe263b','29ef079afd821ca54f33ccde284c780d516fda27d1575ed7345ed89d684ff2d5','3885b65d72a48c91fb223a6592b8995ec491d93a503083022c49535f2739ef82'); -INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'5376530512d61c3967f21cf01418d317ed072976119b8583fefaf3991b93d8b2','3ab02b47d357e9574d0ba499ce55bcd7ca247af2f5f58f58ec0e2fab7dc94db5','2c4651811d2c9cd87256cd23f22598a9b2ca88ab47894e25d122a651e50a21e4'); -INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'d15fe704fe5de58e9203ff5ded50218a1a01609b65a1a259aec510b8b9e6d690','f73fab735cb30bc58e888dcde06073d4e9e60e1c1f867695e1d7b279a9629da4','9ef237a76738c6f156450ca03774d76f6f6bb7303832339452b5adf57ac752e0'); -INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'61015667044d0dddac3bdb16db67faa6ebcb71758101bfad898fca8ed183e7c3','73a0a752cc7ff0c303f8905ad6451e208854f17b0d6ddcd181b651ffd493e48b','c4a4d2092eca169c4ea568af894e357b6813f17e24712309e929726fe76dada0'); -INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'5dd06f32075c46b6e573d73f12c1c31cf82cac5d1588bbdf302b8fe95c4b948b','f6d496b7a4dd61a930d464e2da7a4ea9600156d979115e44127f974c8da0ab9f','1bd7bd52a9725aa04b0d461678f2dc93bd899c11b0cbd008d1e030a7ed97005d'); -INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'8e1782c2f35a07fcc4c57b34b2226b70cc4c7af2761386f38fc8fd74d53d5e60','98511eb15a3aa5eb765103ee01d065e3f68f7d6973315becf5b2fbf1cc4e3db7','2166e5f2e0bc5bcecf9b8afb07f6a3a77f51e3322b03adf53397376e7976a257'); -INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'6469ff80c3890d274817d30602f33d5d4b0a7c0a9e3b85100d21d7b38d894efb','0fab5ef1e876ee6930be064f601bbc279e30181be5d64cf6716ce53510c91b76','30485e041656d8e4eda40fdb764cdf9c64e2075299dfa70c58295fc821c453f1'); -INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'3ca73c2bf37c694281938a0599335633dccf0284a027f5f3b8e17a9e68cbcdf0','f160aac290ab47ef5be9368776a701adae30c953abea3465b74afb3d3dafeed2','80ad0b51aefc41edfd6a13acf68e079b5a05f03ed838677999def6259bcbfeac'); -INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'ae4a36e1ce7d5e11f059301684573cddce85b70ba69188a116e0611ceba5c140','43c35784ee83820213a1b52c985efa2a99eb282c39e76358a5e66dea284218bc','335e5005e586054047acc41a20256f02c9bcaddbac5bdada431b392e9087fbed'); -INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'c2c0b96c64f1ed555c8553da976e0fcc3a5ef403819ceac49cf22b476281ced1','3773929aba14eb6aadfa183a5278771bdf80cd7cd0818914e7f8683b5097199b','5741ab88c95c149a620ac1c8390d8ba7f06af49dfa1f8fba0e3bb2a1c7856de3'); -INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'88d1b09f8141b90b44740e4618422298f8a64f2b3d11230c6b04084ef8d11b2c','c315f3d544d1dfac18f21f7622c9a36636f5c93b502ec9a022817ea799f866d9','8436be1470fb9664f6522e09052fbd16743c1f3afba9bf53aac91a6bb8c209af'); -INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'dab22ae7a9216033777136cbbac87a3597cf6478a2fd008260caab3cad0cde3f','1ff15756661e1045cad287e7aee947024dcac7799cee59d3aadbffdd8e6081ea','512e2d403b9ae45fe21c020e6f625449b95e5a583c77f2a407dda7358aaafbe8'); -INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'a185e60dc97d19a211b0dfaa3f3da154956499b4af146751bf1d776fc68c15b8','5cb3386f5af64f4c67c1f0cda7f6bbefbe557ff7a3997fd0738e525b56306aa7','121367799e01e69b54fafa2b29efa54c90d928c4ac9cdbd92433571c6d24df64'); -INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'622c574321be176c535fde918f319e10cfacaab383978be51406334303d14a8d','cc1cc1b23e3ba312993c3c47c25b03505c81f7afee313d8cb82d263b318678a0','55d1d4a1b5f1a561bb9dfd9f40d1502d247ab4940795f9d881237186323cc673'); -INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'5556084b92f51175d4de4097fcd820a3c367c2f0630d3a20081296e892462d84','092ac614a823b5bfe66d443d939b4a3435a7d9ca8d2c86d4ccb33cef78576ea9','3461054a3db842671efaf553d9f8b38c4a8e6b1718998b2276a4d2764d1132c9'); -INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'fc9dd8ef92fc7d47b187a75bd16e9698d61fa9ce6b4da7bba75982f59b0fbbc5','41e34386115cfe1bb8103bf825d43ab61340a5a4ad9c6e1e327a2c229284a3c6','76fa84d969eadbf3680af05c8f310ff4efca3a185932428970cd5e9dd437479f'); -INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'21f7329fa27373fba176043db9081b0d9f95f75421e5adce87177a3edffcedc0','cb823c44c029c17b45b51f9deac7ac79be0b1fd51d6b05d3721d5e6df8be5bdd','b67912cb0edc6b0d009712528fda782fcee303cd91b2d594b0af2b2f37f4f3c9'); -INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'19164a10a0602df57d1add2e3a31ad4eef9d3ef9e53e70174b44aa91de2d6296','57e4ea6ca8103195f149f4e5a736ce7d8e44c1501ca81114aa7ad366a80c3a12','7157fb9ca59aa6e5ec37af4cd9762ce3198490263e9624d26fd9434ab65f80fe'); -INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'87f1c713c5f2cd84fab28b996008900f86bf9eaad25ceedac1507348a949be7c','7db9624a1eebe679658252670d30f2e7a4532f2a6bdaa5caf07c0fd283dcd36b','52b8433b86eb55ae05626699e7e7a0185e4771dfe10a3232f0538aae02f32870'); -INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'75264a6a628d669a60b4a8ca7e24b6b5ef1ad2c74d955b8325959f906c3bc337','6b77510f71e6e6cf30df07bcfb131e8a42eadd25cae1976d3c02ed6ab6f181bc','50abb886ca2151994a68abc4a7250e46eef84136a96cfb994de40a12bfa649db'); -INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'27914e38b3ca9d8444275e5c6d24b5cfe0b4093f7c645d5c1fc3c39e0d3a3c60','3bde0c4826b8cf54f0ab970fc9f3ab32d3fe68f60b6d450881150d74fa7f2432','641c6ea5978fb804f4cc8b06a81643b9ff0a67bb0f25ef37995f571e05137898'); -INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'eca83e762899ace4d990b8acb23183263df5f92be10b63aecab3518b340b975d','8537ea459ae95f3c6b7fe92369224c4590126e5111a382487f539ca4c3752bf7','543df12a72ea1b32f68a6c0f44cb9600c6543ed4ca7ede038551db8eeedb7dc0'); -INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'3544fab97fe90a35b1f52ba955f88a8149d90329986df38d97e12992201bb187','43ae15f61f304d8d4a140fa1cef774d6aa983dc6ba4c6a13e7cb52a9efb50ece','ce640aa0b30a37f0b15eb068f6e032641bad472e5b5ca286888ee57a83761e87'); -INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'df1e6d8f1be344f78c0b58baf7260c2abdbed3175adc45a122947815c08fcc16','8937d5eb3eabefcc075cff898f9c73bc0889420b68200f55ff72df81bec9d6a1','141a987e611fa09bd31807b3ab0d285098a388274ff35570437bda74f2c3d0a0'); -INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'8b9febcfe1a9447f6a820c060f503dfe6e5c02738df4d9d63b007fe03847a6c7','4ed84b4279710a10ec9684007e67c41e7e064d2a69d5a899f272e455feda3bb2','dd9ff1c2c57b7c7d79754f8fa8d4c731a9dac6db14bfb8cc74a763220115d518'); -INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'b927091b4cf42f8537058a9adbec3814b574c1e1ccd242fe44c5f3671a191304','5e52b374337b642f2cbd51133255c3b065ceea15b6cdf5e81c8500341f261667','3f495a519bcb50a6b6b88ff18854bb23d2a8986c6ca221504ce47397dbcbc6fc'); -INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'649d094cfc74f90e06bb4514276aaf3b0a0ed45f56397a2f774cae9602d02e6f','6bf77650d713206c7c2b4f6df67f8b545f359528f7b4b09187bcea9836ec608a','1d812ec164629ec8a302b76cdcd920ce3d8da8455a55c3c2fa40a942c2ed3d68'); -INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'c9a9dec300afba2cc3f171f76ff4c07cbeb7a41a86a3f498f712e066a8acbd17','c3e2a7e3431443d45562135da7336300c4ed3f299bcd8da3e35bbabef8a2da29','7a1843971fab85bd51231114feca467250c3299876f02cfd07b601c8343a70e5'); -INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'3c7434887f9373b5370664180ba640fa63c2eb5b85569875105e4f4db67d8c02','4bbfb2c71f4d74170272066f4cf3d6648f4d0ad8cebac38b73eb4b70533da6d5','439f702588bc456939ba4fd2951ed932f5beef9e0072de8e0f614a759893725e'); -INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'7e6a09386c3d8552a0dcc25b75143876a3046ebac0ff9cb09d6224ea7e2f3df9','f70c5144e9fef3ceb4d1c6c7d39c6a267a95cbb17ef855e58ee234486af73354','1d0d779128a6eb3760797f5e4f0fd0ab710d737d798a9f59726e6d2cbc76026e'); -INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'6903c0c5941f334f1374aa731e389b010043fc5940d4e9ae8b94480fb4fca030','e0445dc5719722c02571538ae83015a49eb495ac090a6d52936a1a4d7b58f19d','59dda1c6592e773fc35ba8536dac9f1dd995309ad25db21189ea23b6ebb8834b'); --- Triggers and indices on blocks -CREATE INDEX block_index_idx ON blocks (block_index); -CREATE INDEX index_hash_idx ON blocks (block_index, block_hash); - --- Table broadcasts -DROP TABLE IF EXISTS broadcasts; -CREATE TABLE broadcasts( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - timestamp INTEGER, - value REAL, - fee_fraction_int INTEGER, - text TEXT, - locked BOOL, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO broadcasts VALUES(12,'cd429407565d308134170dde76f3ccd8be6c18ef5db2850e636429b4ee377187',310011,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000000,100.0,99999999,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(19,'16db4d63be8839383e28cdab7edf52c1264340fb5db51ae5341801983ff48861',310018,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000050,99.86166,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(20,'f0409d985023c1fcb9cd0df5530b65b71c1ebff78f36020f157fadd109f4c52f',310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000101,100.343,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(21,'4e33149428c2fe189c237ed80abd77262c4f2df3fdfad7e275631f2ef51b0a7e',310020,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000201,2.0,5000000,'Unit Test',0,'valid'); --- Triggers and indices on broadcasts -CREATE TRIGGER _broadcasts_delete BEFORE DELETE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO broadcasts(rowid,tx_index,tx_hash,block_index,source,timestamp,value,fee_fraction_int,text,locked,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.timestamp)||','||quote(old.value)||','||quote(old.fee_fraction_int)||','||quote(old.text)||','||quote(old.locked)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _broadcasts_insert AFTER INSERT ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM broadcasts WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _broadcasts_update AFTER UPDATE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE broadcasts SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',timestamp='||quote(old.timestamp)||',value='||quote(old.value)||',fee_fraction_int='||quote(old.fee_fraction_int)||',text='||quote(old.text)||',locked='||quote(old.locked)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_source_idx ON broadcasts (status, source); -CREATE INDEX status_source_index_idx ON broadcasts (status, source, tx_index); -CREATE INDEX timestamp_idx ON broadcasts (timestamp); - --- Table btcpays -DROP TABLE IF EXISTS btcpays; -CREATE TABLE btcpays( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - order_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO btcpays VALUES(5,'957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495',310004,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',50000000,'12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8_792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c','valid'); --- Triggers and indices on btcpays -CREATE TRIGGER _btcpays_delete BEFORE DELETE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO btcpays(rowid,tx_index,tx_hash,block_index,source,destination,btc_amount,order_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.btc_amount)||','||quote(old.order_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _btcpays_insert AFTER INSERT ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM btcpays WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _btcpays_update AFTER UPDATE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE btcpays SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',btc_amount='||quote(old.btc_amount)||',order_match_id='||quote(old.order_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table burns -DROP TABLE IF EXISTS burns; -CREATE TABLE burns( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - burned INTEGER, - earned INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO burns VALUES(1,'15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399',310000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',62000000,93000000000,'valid'); -INSERT INTO burns VALUES(23,'181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01',310022,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',38000000,56999887262,'valid'); --- Triggers and indices on burns -CREATE TRIGGER _burns_delete BEFORE DELETE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO burns(rowid,tx_index,tx_hash,block_index,source,burned,earned,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.burned)||','||quote(old.earned)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _burns_insert AFTER INSERT ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM burns WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _burns_update AFTER UPDATE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE burns SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',burned='||quote(old.burned)||',earned='||quote(old.earned)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table cancels -DROP TABLE IF EXISTS cancels; -CREATE TABLE cancels( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - offer_hash TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on cancels -CREATE TRIGGER _cancels_delete BEFORE DELETE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO cancels(rowid,tx_index,tx_hash,block_index,source,offer_hash,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.offer_hash)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _cancels_insert AFTER INSERT ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM cancels WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _cancels_update AFTER UPDATE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE cancels SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',offer_hash='||quote(old.offer_hash)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX cancels_block_index_idx ON cancels (block_index); - --- Table credits -DROP TABLE IF EXISTS credits; -CREATE TABLE credits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - calling_function TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO credits VALUES(310000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',93000000000,'burn','15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399'); -INSERT INTO credits VALUES(310001,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,'send','52e4c56494983092daf8cef2850b69a66e0c0cdbef3ec3ba92d42983bda70505'); -INSERT INTO credits VALUES(310004,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',100000000,'btcpay','957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495'); -INSERT INTO credits VALUES(310005,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',1000000000,'issuance','3542e3a185495b9cafae33747e3840236f65c94e360e0725b384821af67a2ecf'); -INSERT INTO credits VALUES(310006,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',100000,'issuance','875294dc37e08c5c392c297179dc89aabe49e0f3d8484c62687e78a44477f452'); -INSERT INTO credits VALUES(310007,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,'send','209ca33a9b698c14c16090296e84e1556ed194a32b4ffb537f5e08327867ec48'); -INSERT INTO credits VALUES(310008,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,'send','bad7a9312cc465ddd3083b0158963134db90dbf61d999841766f283f348ddf6a'); -INSERT INTO credits VALUES(310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',24,'dividend','cb9991934562490fc66980601a2afbf34d7b1d772079c1e56a9094488e454e96'); -INSERT INTO credits VALUES(310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',420800,'dividend','5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17'); -INSERT INTO credits VALUES(310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',4250000,'filled','19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8'); -INSERT INTO credits VALUES(310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',5000000,'cancel order','792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c'); -INSERT INTO credits VALUES(310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3'); -INSERT INTO credits VALUES(310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3'); -INSERT INTO credits VALUES(310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679'); -INSERT INTO credits VALUES(310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679'); -INSERT INTO credits VALUES(310018,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',59137500,'bet settled: liquidated for bear','16db4d63be8839383e28cdab7edf52c1264340fb5db51ae5341801983ff48861'); -INSERT INTO credits VALUES(310018,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',3112500,'feed fee','16db4d63be8839383e28cdab7edf52c1264340fb5db51ae5341801983ff48861'); -INSERT INTO credits VALUES(310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',159300000,'bet settled','f0409d985023c1fcb9cd0df5530b65b71c1ebff78f36020f157fadd109f4c52f'); -INSERT INTO credits VALUES(310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',315700000,'bet settled','f0409d985023c1fcb9cd0df5530b65b71c1ebff78f36020f157fadd109f4c52f'); -INSERT INTO credits VALUES(310019,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',25000000,'feed fee','f0409d985023c1fcb9cd0df5530b65b71c1ebff78f36020f157fadd109f4c52f'); -INSERT INTO credits VALUES(310020,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',1330000000,'bet settled: for notequal','4e33149428c2fe189c237ed80abd77262c4f2df3fdfad7e275631f2ef51b0a7e'); -INSERT INTO credits VALUES(310020,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',70000000,'feed fee','4e33149428c2fe189c237ed80abd77262c4f2df3fdfad7e275631f2ef51b0a7e'); -INSERT INTO credits VALUES(310022,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',56999887262,'burn','181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01'); -INSERT INTO credits VALUES(310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',8500000,'recredit wager remaining','86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243'); -INSERT INTO credits VALUES(310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10000,'send','057f27f2340282c1a82250563b67a37497eb8e07c2f5d0905422238158488488'); -INSERT INTO credits VALUES(310032,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,'cancel order','cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64'); --- Triggers and indices on credits -CREATE TRIGGER _credits_delete BEFORE DELETE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO credits(rowid,block_index,address,asset,quantity,calling_function,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.calling_function)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _credits_insert AFTER INSERT ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM credits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _credits_update AFTER UPDATE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE credits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',calling_function='||quote(old.calling_function)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; - --- Table debits -DROP TABLE IF EXISTS debits; -CREATE TABLE debits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - action TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO debits VALUES(310001,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'send','52e4c56494983092daf8cef2850b69a66e0c0cdbef3ec3ba92d42983bda70505'); -INSERT INTO debits VALUES(310003,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,'open order','792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c'); -INSERT INTO debits VALUES(310005,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'issuance fee','3542e3a185495b9cafae33747e3840236f65c94e360e0725b384821af67a2ecf'); -INSERT INTO debits VALUES(310006,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'issuance fee','875294dc37e08c5c392c297179dc89aabe49e0f3d8484c62687e78a44477f452'); -INSERT INTO debits VALUES(310007,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',4000000,'send','209ca33a9b698c14c16090296e84e1556ed194a32b4ffb537f5e08327867ec48'); -INSERT INTO debits VALUES(310008,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',526,'send','bad7a9312cc465ddd3083b0158963134db90dbf61d999841766f283f348ddf6a'); -INSERT INTO debits VALUES(310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',24,'dividend','cb9991934562490fc66980601a2afbf34d7b1d772079c1e56a9094488e454e96'); -INSERT INTO debits VALUES(310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',20000,'dividend fee','cb9991934562490fc66980601a2afbf34d7b1d772079c1e56a9094488e454e96'); -INSERT INTO debits VALUES(310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',420800,'dividend','5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17'); -INSERT INTO debits VALUES(310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',20000,'dividend fee','5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17'); -INSERT INTO debits VALUES(310012,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'bet','86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243'); -INSERT INTO debits VALUES(310013,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',25000000,'bet','19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8'); -INSERT INTO debits VALUES(310014,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',150000000,'bet','cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6'); -INSERT INTO debits VALUES(310015,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',350000000,'bet','78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3'); -INSERT INTO debits VALUES(310016,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',750000000,'bet','170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b'); -INSERT INTO debits VALUES(310017,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',650000000,'bet','b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679'); -INSERT INTO debits VALUES(310021,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,'open order','cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64'); -INSERT INTO debits VALUES(310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',10000,'send','057f27f2340282c1a82250563b67a37497eb8e07c2f5d0905422238158488488'); --- Triggers and indices on debits -CREATE TRIGGER _debits_delete BEFORE DELETE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO debits(rowid,block_index,address,asset,quantity,action,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.action)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _debits_insert AFTER INSERT ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM debits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _debits_update AFTER UPDATE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE debits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',action='||quote(old.action)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_idx ON debits (address); -CREATE INDEX asset_idx ON debits (asset); - --- Table destructions -DROP TABLE IF EXISTS destructions; -CREATE TABLE destructions( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset INTEGER, - quantity INTEGER, - tag TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on destructions -CREATE TRIGGER _destructions_delete BEFORE DELETE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO destructions(rowid,tx_index,tx_hash,block_index,source,asset,quantity,tag,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.tag)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _destructions_insert AFTER INSERT ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM destructions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _destructions_update AFTER UPDATE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE destructions SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',tag='||quote(old.tag)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_idx ON destructions (status); - --- Table dispensers -DROP TABLE IF EXISTS dispensers; -CREATE TABLE dispensers( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - give_quantity INTEGER, - escrow_quantity INTEGER, - satoshirate INTEGER, - status INTEGER, - give_remaining INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispensers -CREATE TRIGGER _dispensers_delete BEFORE DELETE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispensers(rowid,tx_index,tx_hash,block_index,source,asset,give_quantity,escrow_quantity,satoshirate,status,give_remaining) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.give_quantity)||','||quote(old.escrow_quantity)||','||quote(old.satoshirate)||','||quote(old.status)||','||quote(old.give_remaining)||')'); - END; -CREATE TRIGGER _dispensers_insert AFTER INSERT ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispensers WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispensers_update AFTER UPDATE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispensers SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',give_quantity='||quote(old.give_quantity)||',escrow_quantity='||quote(old.escrow_quantity)||',satoshirate='||quote(old.satoshirate)||',status='||quote(old.status)||',give_remaining='||quote(old.give_remaining)||' WHERE rowid='||old.rowid); - END; - --- Table dispenses -DROP TABLE IF EXISTS dispenses; -CREATE TABLE dispenses( - tx_index INTEGER, - dispense_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - dispense_quantity INTEGER, - dispenser_tx_hash TEXT, - PRIMARY KEY (tx_index, dispense_index, source, destination), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispenses -CREATE TRIGGER _dispenses_delete BEFORE DELETE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispenses(rowid,tx_index,dispense_index,tx_hash,block_index,source,destination,asset,dispense_quantity,dispenser_tx_hash) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.dispense_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.dispense_quantity)||','||quote(old.dispenser_tx_hash)||')'); - END; -CREATE TRIGGER _dispenses_insert AFTER INSERT ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispenses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispenses_update AFTER UPDATE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispenses SET tx_index='||quote(old.tx_index)||',dispense_index='||quote(old.dispense_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',dispense_quantity='||quote(old.dispense_quantity)||',dispenser_tx_hash='||quote(old.dispenser_tx_hash)||' WHERE rowid='||old.rowid); - END; - --- Table dividends -DROP TABLE IF EXISTS dividends; -CREATE TABLE dividends( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - dividend_asset TEXT, - quantity_per_unit INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO dividends VALUES(10,'cb9991934562490fc66980601a2afbf34d7b1d772079c1e56a9094488e454e96',310009,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB','XCP',600,20000,'valid'); -INSERT INTO dividends VALUES(11,'5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17',310010,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC','XCP',800,20000,'valid'); --- Triggers and indices on dividends -CREATE TRIGGER _dividends_delete BEFORE DELETE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dividends(rowid,tx_index,tx_hash,block_index,source,asset,dividend_asset,quantity_per_unit,fee_paid,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.dividend_asset)||','||quote(old.quantity_per_unit)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _dividends_insert AFTER INSERT ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dividends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dividends_update AFTER UPDATE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dividends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',dividend_asset='||quote(old.dividend_asset)||',quantity_per_unit='||quote(old.quantity_per_unit)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table issuances -DROP TABLE IF EXISTS issuances; -CREATE TABLE "issuances"( - tx_index INTEGER, - tx_hash TEXT, - msg_index INTEGER DEFAULT 0, - block_index INTEGER, - asset TEXT, - quantity INTEGER, - divisible BOOL, - source TEXT, - issuer TEXT, - transfer BOOL, - callable BOOL, - call_date INTEGER, - call_price REAL, - description TEXT, - fee_paid INTEGER, - locked BOOL, - status TEXT, - asset_longname TEXT, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index)); -INSERT INTO issuances VALUES(6,'3542e3a185495b9cafae33747e3840236f65c94e360e0725b384821af67a2ecf',0,310005,'BBBB',1000000000,1,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,0,0,0.0,'',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(7,'875294dc37e08c5c392c297179dc89aabe49e0f3d8484c62687e78a44477f452',0,310006,'BBBC',100000,0,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,0,0,0.0,'foobar',50000000,0,'valid',NULL); --- Triggers and indices on issuances -CREATE TRIGGER _issuances_delete BEFORE DELETE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO issuances(rowid,tx_index,tx_hash,msg_index,block_index,asset,quantity,divisible,source,issuer,transfer,callable,call_date,call_price,description,fee_paid,locked,status,asset_longname) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.msg_index)||','||quote(old.block_index)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.divisible)||','||quote(old.source)||','||quote(old.issuer)||','||quote(old.transfer)||','||quote(old.callable)||','||quote(old.call_date)||','||quote(old.call_price)||','||quote(old.description)||','||quote(old.fee_paid)||','||quote(old.locked)||','||quote(old.status)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _issuances_insert AFTER INSERT ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM issuances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _issuances_update AFTER UPDATE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE issuances SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',msg_index='||quote(old.msg_index)||',block_index='||quote(old.block_index)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',divisible='||quote(old.divisible)||',source='||quote(old.source)||',issuer='||quote(old.issuer)||',transfer='||quote(old.transfer)||',callable='||quote(old.callable)||',call_date='||quote(old.call_date)||',call_price='||quote(old.call_price)||',description='||quote(old.description)||',fee_paid='||quote(old.fee_paid)||',locked='||quote(old.locked)||',status='||quote(old.status)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_asset_idx ON issuances (asset, status); - --- Table mempool -DROP TABLE IF EXISTS mempool; -CREATE TABLE mempool( - tx_hash TEXT, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); - --- Table messages -DROP TABLE IF EXISTS messages; -CREATE TABLE messages( - message_index INTEGER PRIMARY KEY, - block_index INTEGER, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); -INSERT INTO messages VALUES(0,310000,'insert','credits','{"action": "burn", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310000, "event": "15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399", "quantity": 93000000000}',0); -INSERT INTO messages VALUES(1,310000,'insert','burns','{"block_index": 310000, "burned": 62000000, "earned": 93000000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399", "tx_index": 1}',0); -INSERT INTO messages VALUES(2,310001,'insert','debits','{"action": "send", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310001, "event": "52e4c56494983092daf8cef2850b69a66e0c0cdbef3ec3ba92d42983bda70505", "quantity": 50000000}',0); -INSERT INTO messages VALUES(3,310001,'insert','credits','{"action": "send", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "XCP", "block_index": 310001, "event": "52e4c56494983092daf8cef2850b69a66e0c0cdbef3ec3ba92d42983bda70505", "quantity": 50000000}',0); -INSERT INTO messages VALUES(4,310001,'insert','sends','{"asset": "XCP", "block_index": 310001, "destination": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "quantity": 50000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "52e4c56494983092daf8cef2850b69a66e0c0cdbef3ec3ba92d42983bda70505", "tx_index": 2}',0); -INSERT INTO messages VALUES(5,310002,'insert','orders','{"block_index": 310002, "expiration": 10, "expire_index": 310012, "fee_provided": 1000000, "fee_provided_remaining": 1000000, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "BTC", "give_quantity": 50000000, "give_remaining": 50000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "tx_hash": "12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8", "tx_index": 3}',0); -INSERT INTO messages VALUES(6,310003,'insert','debits','{"action": "open order", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310003, "event": "792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c", "quantity": 105000000}',0); -INSERT INTO messages VALUES(7,310003,'insert','orders','{"block_index": 310003, "expiration": 10, "expire_index": 310013, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 900000, "fee_required_remaining": 900000, "get_asset": "BTC", "get_quantity": 50000000, "get_remaining": 50000000, "give_asset": "XCP", "give_quantity": 105000000, "give_remaining": 105000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "tx_hash": "792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c", "tx_index": 4}',0); -INSERT INTO messages VALUES(8,310003,'update','orders','{"fee_provided_remaining": 142858, "fee_required_remaining": 0, "get_remaining": 0, "give_remaining": 0, "status": "open", "tx_hash": "12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8"}',0); -INSERT INTO messages VALUES(9,310003,'update','orders','{"fee_provided_remaining": 6800, "fee_required_remaining": 42858, "get_remaining": 0, "give_remaining": 5000000, "status": "open", "tx_hash": "792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c"}',0); -INSERT INTO messages VALUES(10,310003,'insert','order_matches','{"backward_asset": "XCP", "backward_quantity": 100000000, "block_index": 310003, "fee_paid": 857142, "forward_asset": "BTC", "forward_quantity": 50000000, "id": "12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8_792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c", "match_expire_index": 310023, "status": "pending", "tx0_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx0_block_index": 310002, "tx0_expiration": 10, "tx0_hash": "12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8", "tx0_index": 3, "tx1_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx1_block_index": 310003, "tx1_expiration": 10, "tx1_hash": "792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c", "tx1_index": 4}',0); -INSERT INTO messages VALUES(11,310004,'insert','credits','{"action": "btcpay", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310004, "event": "957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495", "quantity": 100000000}',0); -INSERT INTO messages VALUES(12,310004,'update','order_matches','{"order_match_id": "12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8_792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c", "status": "completed"}',0); -INSERT INTO messages VALUES(13,310004,'insert','btcpays','{"block_index": 310004, "btc_amount": 50000000, "destination": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "order_match_id": "12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8_792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c", "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495", "tx_index": 5}',0); -INSERT INTO messages VALUES(14,310005,'insert','debits','{"action": "issuance fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310005, "event": "3542e3a185495b9cafae33747e3840236f65c94e360e0725b384821af67a2ecf", "quantity": 50000000}',0); -INSERT INTO messages VALUES(15,310005,'insert','issuances','{"asset": "BBBB", "asset_longname": null, "block_index": 310005, "call_date": 0, "call_price": 0.0, "callable": false, "description": "", "divisible": true, "fee_paid": 50000000, "issuer": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "locked": false, "quantity": 1000000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "transfer": false, "tx_hash": "3542e3a185495b9cafae33747e3840236f65c94e360e0725b384821af67a2ecf", "tx_index": 6}',0); -INSERT INTO messages VALUES(16,310005,'insert','credits','{"action": "issuance", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBB", "block_index": 310005, "event": "3542e3a185495b9cafae33747e3840236f65c94e360e0725b384821af67a2ecf", "quantity": 1000000000}',0); -INSERT INTO messages VALUES(17,310006,'insert','debits','{"action": "issuance fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310006, "event": "875294dc37e08c5c392c297179dc89aabe49e0f3d8484c62687e78a44477f452", "quantity": 50000000}',0); -INSERT INTO messages VALUES(18,310006,'insert','issuances','{"asset": "BBBC", "asset_longname": null, "block_index": 310006, "call_date": 0, "call_price": 0.0, "callable": false, "description": "foobar", "divisible": false, "fee_paid": 50000000, "issuer": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "locked": false, "quantity": 100000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "transfer": false, "tx_hash": "875294dc37e08c5c392c297179dc89aabe49e0f3d8484c62687e78a44477f452", "tx_index": 7}',0); -INSERT INTO messages VALUES(19,310006,'insert','credits','{"action": "issuance", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBC", "block_index": 310006, "event": "875294dc37e08c5c392c297179dc89aabe49e0f3d8484c62687e78a44477f452", "quantity": 100000}',0); -INSERT INTO messages VALUES(20,310007,'insert','debits','{"action": "send", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBB", "block_index": 310007, "event": "209ca33a9b698c14c16090296e84e1556ed194a32b4ffb537f5e08327867ec48", "quantity": 4000000}',0); -INSERT INTO messages VALUES(21,310007,'insert','credits','{"action": "send", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "BBBB", "block_index": 310007, "event": "209ca33a9b698c14c16090296e84e1556ed194a32b4ffb537f5e08327867ec48", "quantity": 4000000}',0); -INSERT INTO messages VALUES(22,310007,'insert','sends','{"asset": "BBBB", "block_index": 310007, "destination": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "quantity": 4000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "209ca33a9b698c14c16090296e84e1556ed194a32b4ffb537f5e08327867ec48", "tx_index": 8}',0); -INSERT INTO messages VALUES(23,310008,'insert','debits','{"action": "send", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBC", "block_index": 310008, "event": "bad7a9312cc465ddd3083b0158963134db90dbf61d999841766f283f348ddf6a", "quantity": 526}',0); -INSERT INTO messages VALUES(24,310008,'insert','credits','{"action": "send", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "BBBC", "block_index": 310008, "event": "bad7a9312cc465ddd3083b0158963134db90dbf61d999841766f283f348ddf6a", "quantity": 526}',0); -INSERT INTO messages VALUES(25,310008,'insert','sends','{"asset": "BBBC", "block_index": 310008, "destination": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "quantity": 526, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "bad7a9312cc465ddd3083b0158963134db90dbf61d999841766f283f348ddf6a", "tx_index": 9}',0); -INSERT INTO messages VALUES(26,310009,'insert','debits','{"action": "dividend", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310009, "event": "cb9991934562490fc66980601a2afbf34d7b1d772079c1e56a9094488e454e96", "quantity": 24}',0); -INSERT INTO messages VALUES(27,310009,'insert','debits','{"action": "dividend fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310009, "event": "cb9991934562490fc66980601a2afbf34d7b1d772079c1e56a9094488e454e96", "quantity": 20000}',0); -INSERT INTO messages VALUES(28,310009,'insert','credits','{"action": "dividend", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "XCP", "block_index": 310009, "event": "cb9991934562490fc66980601a2afbf34d7b1d772079c1e56a9094488e454e96", "quantity": 24}',0); -INSERT INTO messages VALUES(29,310009,'insert','dividends','{"asset": "BBBB", "block_index": 310009, "dividend_asset": "XCP", "fee_paid": 20000, "quantity_per_unit": 600, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "cb9991934562490fc66980601a2afbf34d7b1d772079c1e56a9094488e454e96", "tx_index": 10}',0); -INSERT INTO messages VALUES(30,310010,'insert','debits','{"action": "dividend", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310010, "event": "5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17", "quantity": 420800}',0); -INSERT INTO messages VALUES(31,310010,'insert','debits','{"action": "dividend fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310010, "event": "5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17", "quantity": 20000}',0); -INSERT INTO messages VALUES(32,310010,'insert','credits','{"action": "dividend", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "XCP", "block_index": 310010, "event": "5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17", "quantity": 420800}',0); -INSERT INTO messages VALUES(33,310010,'insert','dividends','{"asset": "BBBC", "block_index": 310010, "dividend_asset": "XCP", "fee_paid": 20000, "quantity_per_unit": 800, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17", "tx_index": 11}',0); -INSERT INTO messages VALUES(34,310011,'insert','broadcasts','{"block_index": 310011, "fee_fraction_int": 99999999, "locked": false, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "text": "Unit Test", "timestamp": 1388000000, "tx_hash": "cd429407565d308134170dde76f3ccd8be6c18ef5db2850e636429b4ee377187", "tx_index": 12, "value": 100.0}',0); -INSERT INTO messages VALUES(35,310012,'insert','debits','{"action": "bet", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310012, "event": "86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243", "quantity": 50000000}',0); -INSERT INTO messages VALUES(36,310012,'insert','bets','{"bet_type": 0, "block_index": 310012, "counterwager_quantity": 25000000, "counterwager_remaining": 25000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310022, "fee_fraction_int": 99999999.0, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 15120, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 0.0, "tx_hash": "86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243", "tx_index": 13, "wager_quantity": 50000000, "wager_remaining": 50000000}',0); -INSERT INTO messages VALUES(37,310013,'update','orders','{"status": "expired", "tx_hash": "12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8"}',0); -INSERT INTO messages VALUES(38,310013,'insert','order_expirations','{"block_index": 310013, "order_hash": "12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8", "order_index": 3, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3"}',0); -INSERT INTO messages VALUES(39,310013,'insert','debits','{"action": "bet", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310013, "event": "19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8", "quantity": 25000000}',0); -INSERT INTO messages VALUES(40,310013,'insert','bets','{"bet_type": 1, "block_index": 310013, "counterwager_quantity": 41500000, "counterwager_remaining": 41500000, "deadline": 1388000100, "expiration": 10, "expire_index": 310023, "fee_fraction_int": 99999999.0, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 15120, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 0.0, "tx_hash": "19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8", "tx_index": 14, "wager_quantity": 25000000, "wager_remaining": 25000000}',0); -INSERT INTO messages VALUES(41,310013,'update','bets','{"counterwager_remaining": 4250000, "status": "open", "tx_hash": "86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243", "wager_remaining": 8500000}',0); -INSERT INTO messages VALUES(42,310013,'insert','credits','{"action": "filled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310013, "event": "19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8", "quantity": 4250000}',0); -INSERT INTO messages VALUES(43,310013,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8", "wager_remaining": 4250000}',0); -INSERT INTO messages VALUES(44,310013,'insert','bet_matches','{"backward_quantity": 20750000, "block_index": 310013, "deadline": 1388000100, "fee_fraction_int": 99999999, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "forward_quantity": 41500000, "id": "86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243_19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8", "initial_value": 100.0, "leverage": 15120, "match_expire_index": 310022, "status": "pending", "target_value": 0.0, "tx0_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx0_bet_type": 0, "tx0_block_index": 310012, "tx0_expiration": 10, "tx0_hash": "86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243", "tx0_index": 13, "tx1_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx1_bet_type": 1, "tx1_block_index": 310013, "tx1_expiration": 10, "tx1_hash": "19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8", "tx1_index": 14}',0); -INSERT INTO messages VALUES(45,310014,'update','orders','{"status": "expired", "tx_hash": "792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c"}',0); -INSERT INTO messages VALUES(46,310014,'insert','credits','{"action": "cancel order", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310014, "event": "792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c", "quantity": 5000000}',0); -INSERT INTO messages VALUES(47,310014,'insert','order_expirations','{"block_index": 310014, "order_hash": "792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c", "order_index": 4, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3"}',0); -INSERT INTO messages VALUES(48,310014,'insert','debits','{"action": "bet", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310014, "event": "cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6", "quantity": 150000000}',0); -INSERT INTO messages VALUES(49,310014,'insert','bets','{"bet_type": 0, "block_index": 310014, "counterwager_quantity": 350000000, "counterwager_remaining": 350000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310024, "fee_fraction_int": 99999999.0, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 5040, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 0.0, "tx_hash": "cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6", "tx_index": 15, "wager_quantity": 150000000, "wager_remaining": 150000000}',0); -INSERT INTO messages VALUES(50,310015,'insert','debits','{"action": "bet", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310015, "event": "78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3", "quantity": 350000000}',0); -INSERT INTO messages VALUES(51,310015,'insert','bets','{"bet_type": 1, "block_index": 310015, "counterwager_quantity": 150000000, "counterwager_remaining": 150000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310025, "fee_fraction_int": 99999999.0, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 5040, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 0.0, "tx_hash": "78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3", "tx_index": 16, "wager_quantity": 350000000, "wager_remaining": 350000000}',0); -INSERT INTO messages VALUES(52,310015,'insert','credits','{"action": "filled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310015, "event": "78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3", "quantity": 0}',0); -INSERT INTO messages VALUES(53,310015,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(54,310015,'insert','credits','{"action": "filled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310015, "event": "78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3", "quantity": 0}',0); -INSERT INTO messages VALUES(55,310015,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(56,310015,'insert','bet_matches','{"backward_quantity": 350000000, "block_index": 310015, "deadline": 1388000100, "fee_fraction_int": 99999999, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "forward_quantity": 150000000, "id": "cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6_78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3", "initial_value": 100.0, "leverage": 5040, "match_expire_index": 310024, "status": "pending", "target_value": 0.0, "tx0_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx0_bet_type": 0, "tx0_block_index": 310014, "tx0_expiration": 10, "tx0_hash": "cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6", "tx0_index": 15, "tx1_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx1_bet_type": 1, "tx1_block_index": 310015, "tx1_expiration": 10, "tx1_hash": "78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3", "tx1_index": 16}',0); -INSERT INTO messages VALUES(57,310016,'insert','debits','{"action": "bet", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310016, "event": "170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b", "quantity": 750000000}',0); -INSERT INTO messages VALUES(58,310016,'insert','bets','{"bet_type": 2, "block_index": 310016, "counterwager_quantity": 650000000, "counterwager_remaining": 650000000, "deadline": 1388000200, "expiration": 10, "expire_index": 310026, "fee_fraction_int": 99999999.0, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 5040, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 1.0, "tx_hash": "170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b", "tx_index": 17, "wager_quantity": 750000000, "wager_remaining": 750000000}',0); -INSERT INTO messages VALUES(59,310017,'insert','debits','{"action": "bet", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310017, "event": "b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679", "quantity": 650000000}',0); -INSERT INTO messages VALUES(60,310017,'insert','bets','{"bet_type": 3, "block_index": 310017, "counterwager_quantity": 750000000, "counterwager_remaining": 750000000, "deadline": 1388000200, "expiration": 10, "expire_index": 310027, "fee_fraction_int": 99999999.0, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 5040, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 1.0, "tx_hash": "b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679", "tx_index": 18, "wager_quantity": 650000000, "wager_remaining": 650000000}',0); -INSERT INTO messages VALUES(61,310017,'insert','credits','{"action": "filled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310017, "event": "b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679", "quantity": 0}',0); -INSERT INTO messages VALUES(62,310017,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(63,310017,'insert','credits','{"action": "filled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310017, "event": "b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679", "quantity": 0}',0); -INSERT INTO messages VALUES(64,310017,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(65,310017,'insert','bet_matches','{"backward_quantity": 650000000, "block_index": 310017, "deadline": 1388000200, "fee_fraction_int": 99999999, "feed_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "forward_quantity": 750000000, "id": "170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b_b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679", "initial_value": 100.0, "leverage": 5040, "match_expire_index": 310026, "status": "pending", "target_value": 1.0, "tx0_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx0_bet_type": 2, "tx0_block_index": 310016, "tx0_expiration": 10, "tx0_hash": "170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b", "tx0_index": 17, "tx1_address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx1_bet_type": 3, "tx1_block_index": 310017, "tx1_expiration": 10, "tx1_hash": "b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679", "tx1_index": 18}',0); -INSERT INTO messages VALUES(66,310018,'insert','broadcasts','{"block_index": 310018, "fee_fraction_int": 5000000, "locked": false, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "text": "Unit Test", "timestamp": 1388000050, "tx_hash": "16db4d63be8839383e28cdab7edf52c1264340fb5db51ae5341801983ff48861", "tx_index": 19, "value": 99.86166}',0); -INSERT INTO messages VALUES(67,310018,'insert','credits','{"action": "bet settled: liquidated for bear", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310018, "event": "16db4d63be8839383e28cdab7edf52c1264340fb5db51ae5341801983ff48861", "quantity": 59137500}',0); -INSERT INTO messages VALUES(68,310018,'insert','credits','{"action": "feed fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310018, "event": "16db4d63be8839383e28cdab7edf52c1264340fb5db51ae5341801983ff48861", "quantity": 3112500}',0); -INSERT INTO messages VALUES(69,310018,'insert','bet_match_resolutions','{"bear_credit": 59137500, "bet_match_id": "86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243_19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8", "bet_match_type_id": 1, "block_index": 310018, "bull_credit": 0, "escrow_less_fee": null, "fee": 3112500, "settled": false, "winner": null}',0); -INSERT INTO messages VALUES(70,310018,'update','bet_matches','{"bet_match_id": "86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243_19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8", "status": "settled: liquidated for bear"}',0); -INSERT INTO messages VALUES(71,310019,'insert','broadcasts','{"block_index": 310019, "fee_fraction_int": 5000000, "locked": false, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "text": "Unit Test", "timestamp": 1388000101, "tx_hash": "f0409d985023c1fcb9cd0df5530b65b71c1ebff78f36020f157fadd109f4c52f", "tx_index": 20, "value": 100.343}',0); -INSERT INTO messages VALUES(72,310019,'insert','credits','{"action": "bet settled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310019, "event": "f0409d985023c1fcb9cd0df5530b65b71c1ebff78f36020f157fadd109f4c52f", "quantity": 159300000}',0); -INSERT INTO messages VALUES(73,310019,'insert','credits','{"action": "bet settled", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310019, "event": "f0409d985023c1fcb9cd0df5530b65b71c1ebff78f36020f157fadd109f4c52f", "quantity": 315700000}',0); -INSERT INTO messages VALUES(74,310019,'insert','credits','{"action": "feed fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310019, "event": "f0409d985023c1fcb9cd0df5530b65b71c1ebff78f36020f157fadd109f4c52f", "quantity": 25000000}',0); -INSERT INTO messages VALUES(75,310019,'insert','bet_match_resolutions','{"bear_credit": 315700000, "bet_match_id": "cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6_78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3", "bet_match_type_id": 1, "block_index": 310019, "bull_credit": 159300000, "escrow_less_fee": null, "fee": 25000000, "settled": true, "winner": null}',0); -INSERT INTO messages VALUES(76,310019,'update','bet_matches','{"bet_match_id": "cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6_78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3", "status": "settled"}',0); -INSERT INTO messages VALUES(77,310020,'insert','broadcasts','{"block_index": 310020, "fee_fraction_int": 5000000, "locked": false, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "text": "Unit Test", "timestamp": 1388000201, "tx_hash": "4e33149428c2fe189c237ed80abd77262c4f2df3fdfad7e275631f2ef51b0a7e", "tx_index": 21, "value": 2.0}',0); -INSERT INTO messages VALUES(78,310020,'insert','credits','{"action": "bet settled: for notequal", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310020, "event": "4e33149428c2fe189c237ed80abd77262c4f2df3fdfad7e275631f2ef51b0a7e", "quantity": 1330000000}',0); -INSERT INTO messages VALUES(79,310020,'insert','credits','{"action": "feed fee", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310020, "event": "4e33149428c2fe189c237ed80abd77262c4f2df3fdfad7e275631f2ef51b0a7e", "quantity": 70000000}',0); -INSERT INTO messages VALUES(80,310020,'insert','bet_match_resolutions','{"bear_credit": null, "bet_match_id": "170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b_b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679", "bet_match_type_id": 5, "block_index": 310020, "bull_credit": null, "escrow_less_fee": 1330000000, "fee": 70000000, "settled": null, "winner": "NotEqual"}',0); -INSERT INTO messages VALUES(81,310020,'update','bet_matches','{"bet_match_id": "170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b_b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679", "status": "settled: for notequal"}',0); -INSERT INTO messages VALUES(82,310021,'insert','debits','{"action": "open order", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBB", "block_index": 310021, "event": "cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64", "quantity": 50000000}',0); -INSERT INTO messages VALUES(83,310021,'insert','orders','{"block_index": 310021, "expiration": 10, "expire_index": 310031, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 50000000, "get_remaining": 50000000, "give_asset": "BBBB", "give_quantity": 50000000, "give_remaining": 50000000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "tx_hash": "cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64", "tx_index": 22}',0); -INSERT INTO messages VALUES(84,310022,'insert','credits','{"action": "burn", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310022, "event": "181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01", "quantity": 56999887262}',0); -INSERT INTO messages VALUES(85,310022,'insert','burns','{"block_index": 310022, "burned": 38000000, "earned": 56999887262, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01", "tx_index": 23}',0); -INSERT INTO messages VALUES(86,310023,'update','bets','{"status": "expired", "tx_hash": "86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243"}',0); -INSERT INTO messages VALUES(87,310023,'insert','credits','{"action": "recredit wager remaining", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310023, "event": "86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243", "quantity": 8500000}',0); -INSERT INTO messages VALUES(88,310023,'insert','bet_expirations','{"bet_hash": "86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243", "bet_index": 13, "block_index": 310023, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3"}',0); -INSERT INTO messages VALUES(89,310023,'insert','debits','{"action": "send", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBC", "block_index": 310023, "event": "057f27f2340282c1a82250563b67a37497eb8e07c2f5d0905422238158488488", "quantity": 10000}',0); -INSERT INTO messages VALUES(90,310023,'insert','credits','{"action": "send", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "BBBC", "block_index": 310023, "event": "057f27f2340282c1a82250563b67a37497eb8e07c2f5d0905422238158488488", "quantity": 10000}',0); -INSERT INTO messages VALUES(91,310023,'insert','sends','{"asset": "BBBC", "block_index": 310023, "destination": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "quantity": 10000, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "057f27f2340282c1a82250563b67a37497eb8e07c2f5d0905422238158488488", "tx_index": 24}',0); -INSERT INTO messages VALUES(92,310032,'update','orders','{"status": "expired", "tx_hash": "cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64"}',0); -INSERT INTO messages VALUES(93,310032,'insert','credits','{"action": "cancel order", "address": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBB", "block_index": 310032, "event": "cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64", "quantity": 50000000}',0); -INSERT INTO messages VALUES(94,310032,'insert','order_expirations','{"block_index": 310032, "order_hash": "cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64", "order_index": 22, "source": "2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3"}',0); --- Triggers and indices on messages -CREATE INDEX block_index_message_index_idx ON messages (block_index, message_index); - --- Table order_expirations -DROP TABLE IF EXISTS order_expirations; -CREATE TABLE order_expirations( - order_index INTEGER PRIMARY KEY, - order_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (order_index, order_hash) REFERENCES orders(tx_index, tx_hash)); -INSERT INTO order_expirations VALUES(3,'12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310013); -INSERT INTO order_expirations VALUES(4,'792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310014); -INSERT INTO order_expirations VALUES(22,'cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310032); --- Triggers and indices on order_expirations -CREATE TRIGGER _order_expirations_delete BEFORE DELETE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_expirations(rowid,order_index,order_hash,source,block_index) VALUES('||old.rowid||','||quote(old.order_index)||','||quote(old.order_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_expirations_insert AFTER INSERT ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_expirations_update AFTER UPDATE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_expirations SET order_index='||quote(old.order_index)||',order_hash='||quote(old.order_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_match_expirations -DROP TABLE IF EXISTS order_match_expirations; -CREATE TABLE order_match_expirations( - order_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (order_match_id) REFERENCES order_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on order_match_expirations -CREATE TRIGGER _order_match_expirations_delete BEFORE DELETE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_match_expirations(rowid,order_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.order_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_match_expirations_insert AFTER INSERT ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_match_expirations_update AFTER UPDATE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_match_expirations SET order_match_id='||quote(old.order_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_matches -DROP TABLE IF EXISTS order_matches; -CREATE TABLE order_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - forward_asset TEXT, - forward_quantity INTEGER, - backward_asset TEXT, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO order_matches VALUES('12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8_792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c',3,'12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',4,'792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,'XCP',100000000,310002,310003,310003,10,10,310023,857142,'completed'); --- Triggers and indices on order_matches -CREATE TRIGGER _order_matches_delete BEFORE DELETE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,forward_asset,forward_quantity,backward_asset,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_paid,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.forward_asset)||','||quote(old.forward_quantity)||','||quote(old.backward_asset)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _order_matches_insert AFTER INSERT ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_matches_update AFTER UPDATE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',forward_asset='||quote(old.forward_asset)||',forward_quantity='||quote(old.forward_quantity)||',backward_asset='||quote(old.backward_asset)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX backward_status_idx ON order_matches (backward_asset, status); -CREATE INDEX forward_status_idx ON order_matches (forward_asset, status); -CREATE INDEX match_expire_idx ON order_matches (status, match_expire_index); -CREATE INDEX tx0_address_idx ON order_matches (tx0_address); -CREATE INDEX tx1_address_idx ON order_matches (tx1_address); - --- Table orders -DROP TABLE IF EXISTS orders; -CREATE TABLE orders( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - give_asset TEXT, - give_quantity INTEGER, - give_remaining INTEGER, - get_asset TEXT, - get_quantity INTEGER, - get_remaining INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_required INTEGER, - fee_required_remaining INTEGER, - fee_provided INTEGER, - fee_provided_remaining INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO orders VALUES(3,'12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8',310002,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'expired'); -INSERT INTO orders VALUES(4,'792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c',310003,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'expired'); -INSERT INTO orders VALUES(22,'cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64',310021,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'expired'); --- Triggers and indices on orders -CREATE TRIGGER _orders_delete BEFORE DELETE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO orders(rowid,tx_index,tx_hash,block_index,source,give_asset,give_quantity,give_remaining,get_asset,get_quantity,get_remaining,expiration,expire_index,fee_required,fee_required_remaining,fee_provided,fee_provided_remaining,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.give_asset)||','||quote(old.give_quantity)||','||quote(old.give_remaining)||','||quote(old.get_asset)||','||quote(old.get_quantity)||','||quote(old.get_remaining)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_required)||','||quote(old.fee_required_remaining)||','||quote(old.fee_provided)||','||quote(old.fee_provided_remaining)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _orders_insert AFTER INSERT ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM orders WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _orders_update AFTER UPDATE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE orders SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',give_asset='||quote(old.give_asset)||',give_quantity='||quote(old.give_quantity)||',give_remaining='||quote(old.give_remaining)||',get_asset='||quote(old.get_asset)||',get_quantity='||quote(old.get_quantity)||',get_remaining='||quote(old.get_remaining)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_required='||quote(old.fee_required)||',fee_required_remaining='||quote(old.fee_required_remaining)||',fee_provided='||quote(old.fee_provided)||',fee_provided_remaining='||quote(old.fee_provided_remaining)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX expire_idx ON orders (expire_index, status); -CREATE INDEX give_asset_idx ON orders (give_asset); -CREATE INDEX give_get_status_idx ON orders (get_asset, give_asset, status); -CREATE INDEX give_status_idx ON orders (give_asset, status); -CREATE INDEX source_give_status_idx ON orders (source, give_asset, status); - --- Table rps -DROP TABLE IF EXISTS rps; -CREATE TABLE rps( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - possible_moves INTEGER, - wager INTEGER, - move_random_hash TEXT, - expiration INTEGER, - expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); --- Triggers and indices on rps -CREATE TRIGGER _rps_delete BEFORE DELETE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps(rowid,tx_index,tx_hash,block_index,source,possible_moves,wager,move_random_hash,expiration,expire_index,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.possible_moves)||','||quote(old.wager)||','||quote(old.move_random_hash)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_insert AFTER INSERT ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_update AFTER UPDATE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',possible_moves='||quote(old.possible_moves)||',wager='||quote(old.wager)||',move_random_hash='||quote(old.move_random_hash)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX matching_idx ON rps (wager, possible_moves); - --- Table rps_expirations -DROP TABLE IF EXISTS rps_expirations; -CREATE TABLE rps_expirations( - rps_index INTEGER PRIMARY KEY, - rps_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (rps_index, rps_hash) REFERENCES rps(tx_index, tx_hash)); --- Triggers and indices on rps_expirations -CREATE TRIGGER _rps_expirations_delete BEFORE DELETE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_expirations(rowid,rps_index,rps_hash,source,block_index) VALUES('||old.rowid||','||quote(old.rps_index)||','||quote(old.rps_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_expirations_insert AFTER INSERT ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_expirations_update AFTER UPDATE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_expirations SET rps_index='||quote(old.rps_index)||',rps_hash='||quote(old.rps_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_match_expirations -DROP TABLE IF EXISTS rps_match_expirations; -CREATE TABLE rps_match_expirations( - rps_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (rps_match_id) REFERENCES rps_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on rps_match_expirations -CREATE TRIGGER _rps_match_expirations_delete BEFORE DELETE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_match_expirations(rowid,rps_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.rps_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_match_expirations_insert AFTER INSERT ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_match_expirations_update AFTER UPDATE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_match_expirations SET rps_match_id='||quote(old.rps_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_matches -DROP TABLE IF EXISTS rps_matches; -CREATE TABLE rps_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_move_random_hash TEXT, - tx1_move_random_hash TEXT, - wager INTEGER, - possible_moves INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rps_matches -CREATE TRIGGER _rps_matches_delete BEFORE DELETE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_move_random_hash,tx1_move_random_hash,wager,possible_moves,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_move_random_hash)||','||quote(old.tx1_move_random_hash)||','||quote(old.wager)||','||quote(old.possible_moves)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_matches_insert AFTER INSERT ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_matches_update AFTER UPDATE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_move_random_hash='||quote(old.tx0_move_random_hash)||',tx1_move_random_hash='||quote(old.tx1_move_random_hash)||',wager='||quote(old.wager)||',possible_moves='||quote(old.possible_moves)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_expire_idx ON rps_matches (status, match_expire_index); -CREATE INDEX rps_tx0_address_idx ON rps_matches (tx0_address); -CREATE INDEX rps_tx1_address_idx ON rps_matches (tx1_address); - --- Table rpsresolves -DROP TABLE IF EXISTS rpsresolves; -CREATE TABLE rpsresolves( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - move INTEGER, - random TEXT, - rps_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rpsresolves -CREATE TRIGGER _rpsresolves_delete BEFORE DELETE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rpsresolves(rowid,tx_index,tx_hash,block_index,source,move,random,rps_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.move)||','||quote(old.random)||','||quote(old.rps_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rpsresolves_insert AFTER INSERT ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rpsresolves WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rpsresolves_update AFTER UPDATE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rpsresolves SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',move='||quote(old.move)||',random='||quote(old.random)||',rps_match_id='||quote(old.rps_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_id_idx ON rpsresolves (rps_match_id); - --- Table sends -DROP TABLE IF EXISTS sends; -CREATE TABLE "sends"( - tx_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - quantity INTEGER, - status TEXT, - msg_index INTEGER DEFAULT 0, memo BLOB, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); -INSERT INTO sends VALUES(2,'52e4c56494983092daf8cef2850b69a66e0c0cdbef3ec3ba92d42983bda70505',310001,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,'valid',0,NULL); -INSERT INTO sends VALUES(8,'209ca33a9b698c14c16090296e84e1556ed194a32b4ffb537f5e08327867ec48',310007,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,'valid',0,NULL); -INSERT INTO sends VALUES(9,'bad7a9312cc465ddd3083b0158963134db90dbf61d999841766f283f348ddf6a',310008,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,'valid',0,NULL); -INSERT INTO sends VALUES(24,'057f27f2340282c1a82250563b67a37497eb8e07c2f5d0905422238158488488',310023,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10000,'valid',0,NULL); --- Triggers and indices on sends -CREATE TRIGGER _sends_delete BEFORE DELETE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sends(rowid,tx_index,tx_hash,block_index,source,destination,asset,quantity,status,msg_index,memo) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.status)||','||quote(old.msg_index)||','||quote(old.memo)||')'); - END; -CREATE TRIGGER _sends_insert AFTER INSERT ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sends_update AFTER UPDATE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',status='||quote(old.status)||',msg_index='||quote(old.msg_index)||',memo='||quote(old.memo)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX destination_idx ON sends (destination); -CREATE INDEX memo_idx ON sends (memo); -CREATE INDEX source_idx ON sends (source); - --- Table sweeps -DROP TABLE IF EXISTS sweeps; -CREATE TABLE sweeps( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - flags INTEGER, - status TEXT, - memo BLOB, - fee_paid INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on sweeps -CREATE TRIGGER _sweeps_delete BEFORE DELETE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sweeps(rowid,tx_index,tx_hash,block_index,source,destination,flags,status,memo,fee_paid) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.flags)||','||quote(old.status)||','||quote(old.memo)||','||quote(old.fee_paid)||')'); - END; -CREATE TRIGGER _sweeps_insert AFTER INSERT ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sweeps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sweeps_update AFTER UPDATE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sweeps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',flags='||quote(old.flags)||',status='||quote(old.status)||',memo='||quote(old.memo)||',fee_paid='||quote(old.fee_paid)||' WHERE rowid='||old.rowid); - END; - --- Table transactions -DROP TABLE IF EXISTS transactions; -CREATE TABLE transactions( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - block_hash TEXT, - block_time INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - fee INTEGER, - data BLOB, - supported BOOL DEFAULT 1, - FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), - PRIMARY KEY (tx_index, tx_hash, block_index)); -INSERT INTO transactions VALUES(1,'15b35d5497f454c43576f21a1b61d99bde25dfc5aae1a4796dcf55e739d6a399',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); -INSERT INTO transactions VALUES(2,'52e4c56494983092daf8cef2850b69a66e0c0cdbef3ec3ba92d42983bda70505',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',7800,7650,X'0000000000000000000000010000000002FAF080',1); -INSERT INTO transactions VALUES(3,'12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,1000000,X'0000000A00000000000000000000000002FAF08000000000000000010000000005F5E100000A0000000000000000',1); -INSERT INTO transactions VALUES(4,'792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000000A00000000000000010000000006422C4000000000000000000000000002FAF080000A00000000000DBBA0',1); -INSERT INTO transactions VALUES(5,'957a0550bc7ce9cc16d5ff5426bdb111ddb1261739a39bcb93334f15f859a495',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',50000000,9675,X'0000000B12B8EF5D36AD332A8700BE63C5B6E41F4AC8CAD15899E4BA651664E951D384D8792289D0CC057F06FEE7C5CDFA65C770BF30F7BCC9EA85DD83E0DCC9D6CF655C',1); -INSERT INTO transactions VALUES(6,'3542e3a185495b9cafae33747e3840236f65c94e360e0725b384821af67a2ecf',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'000000140000000000004767000000003B9ACA000100000000000000000000',1); -INSERT INTO transactions VALUES(7,'875294dc37e08c5c392c297179dc89aabe49e0f3d8484c62687e78a44477f452',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000014000000000000476800000000000186A00000000000000000000006666F6F626172',1); -INSERT INTO transactions VALUES(8,'209ca33a9b698c14c16090296e84e1556ed194a32b4ffb537f5e08327867ec48',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',7800,7650,X'00000000000000000000476700000000003D0900',1); -INSERT INTO transactions VALUES(9,'bad7a9312cc465ddd3083b0158963134db90dbf61d999841766f283f348ddf6a',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',7800,7650,X'000000000000000000004768000000000000020E',1); -INSERT INTO transactions VALUES(10,'cb9991934562490fc66980601a2afbf34d7b1d772079c1e56a9094488e454e96',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000032000000000000025800000000000047670000000000000001',1); -INSERT INTO transactions VALUES(11,'5012de31b4fc38e61ffc4e4423e39190a5a294c2ab9d137b84cebf7ff3e76e17',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000032000000000000032000000000000047680000000000000001',1); -INSERT INTO transactions VALUES(12,'cd429407565d308134170dde76f3ccd8be6c18ef5db2850e636429b4ee377187',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB3300405900000000000005F5E0FF09556E69742054657374',1); -INSERT INTO transactions VALUES(13,'86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000052BB33640000000002FAF08000000000017D7840000000000000000000003B100000000A',1); -INSERT INTO transactions VALUES(14,'19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000152BB336400000000017D78400000000002793D60000000000000000000003B100000000A',1); -INSERT INTO transactions VALUES(15,'cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000052BB33640000000008F0D1800000000014DC93800000000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(16,'78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000152BB33640000000014DC93800000000008F0D1800000000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(17,'170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000252BB33C8000000002CB417800000000026BE36803FF0000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(18,'b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000352BB33C80000000026BE3680000000002CB417803FF0000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(19,'16db4d63be8839383e28cdab7edf52c1264340fb5db51ae5341801983ff48861',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB33324058F7256FFC115E004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(20,'f0409d985023c1fcb9cd0df5530b65b71c1ebff78f36020f157fadd109f4c52f',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB3365405915F3B645A1CB004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(21,'4e33149428c2fe189c237ed80abd77262c4f2df3fdfad7e275631f2ef51b0a7e',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB33C94000000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(22,'cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64',310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000000A00000000000047670000000002FAF08000000000000000010000000002FAF080000A0000000000000000',1); -INSERT INTO transactions VALUES(23,'181709b341ec136f90975fdaa362c767ebd789e72f16d4e17348ab2985c1bd01',310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','mvCounterpartyXXXXXXXXXXXXXXW24Hef',100000000,5625,X'',1); -INSERT INTO transactions VALUES(24,'057f27f2340282c1a82250563b67a37497eb8e07c2f5d0905422238158488488',310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,'2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',7800,7650,X'0000000000000000000047680000000000002710',1); --- Triggers and indices on transactions -CREATE INDEX index_hash_index_idx ON transactions (tx_index, tx_hash, block_index); -CREATE INDEX index_index_idx ON transactions (block_index, tx_index); -CREATE INDEX tx_hash_idx ON transactions (tx_hash); -CREATE INDEX tx_index_idx ON transactions (tx_index); - --- Table undolog -DROP TABLE IF EXISTS undolog; -CREATE TABLE undolog( - undo_index INTEGER PRIMARY KEY AUTOINCREMENT, - sql TEXT); -INSERT INTO undolog VALUES(4,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=93000000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(5,'DELETE FROM debits WHERE rowid=1'); -INSERT INTO undolog VALUES(6,'DELETE FROM balances WHERE rowid=2'); -INSERT INTO undolog VALUES(7,'DELETE FROM credits WHERE rowid=2'); -INSERT INTO undolog VALUES(8,'DELETE FROM sends WHERE rowid=1'); -INSERT INTO undolog VALUES(9,'DELETE FROM orders WHERE rowid=1'); -INSERT INTO undolog VALUES(10,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92950000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(11,'DELETE FROM debits WHERE rowid=2'); -INSERT INTO undolog VALUES(12,'DELETE FROM orders WHERE rowid=2'); -INSERT INTO undolog VALUES(13,'UPDATE orders SET tx_index=3,tx_hash=''12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8'',block_index=310002,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''BTC'',give_quantity=50000000,give_remaining=50000000,get_asset=''XCP'',get_quantity=100000000,get_remaining=100000000,expiration=10,expire_index=310012,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=1000000,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(14,'UPDATE orders SET tx_index=4,tx_hash=''792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c'',block_index=310003,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''XCP'',give_quantity=105000000,give_remaining=105000000,get_asset=''BTC'',get_quantity=50000000,get_remaining=50000000,expiration=10,expire_index=310013,fee_required=900000,fee_required_remaining=900000,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(15,'DELETE FROM order_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(16,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92845000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(17,'DELETE FROM credits WHERE rowid=3'); -INSERT INTO undolog VALUES(18,'UPDATE order_matches SET id=''12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8_792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c'',tx0_index=3,tx0_hash=''12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8'',tx0_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx1_index=4,tx1_hash=''792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c'',tx1_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',forward_asset=''BTC'',forward_quantity=50000000,backward_asset=''XCP'',backward_quantity=100000000,tx0_block_index=310002,tx1_block_index=310003,block_index=310003,tx0_expiration=10,tx1_expiration=10,match_expire_index=310023,fee_paid=857142,status=''pending'' WHERE rowid=1'); -INSERT INTO undolog VALUES(19,'DELETE FROM btcpays WHERE rowid=5'); -INSERT INTO undolog VALUES(20,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92945000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(21,'DELETE FROM debits WHERE rowid=3'); -INSERT INTO undolog VALUES(22,'DELETE FROM assets WHERE rowid=3'); -INSERT INTO undolog VALUES(23,'DELETE FROM issuances WHERE rowid=1'); -INSERT INTO undolog VALUES(24,'DELETE FROM balances WHERE rowid=3'); -INSERT INTO undolog VALUES(25,'DELETE FROM credits WHERE rowid=4'); -INSERT INTO undolog VALUES(26,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92895000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(27,'DELETE FROM debits WHERE rowid=4'); -INSERT INTO undolog VALUES(28,'DELETE FROM assets WHERE rowid=4'); -INSERT INTO undolog VALUES(29,'DELETE FROM issuances WHERE rowid=2'); -INSERT INTO undolog VALUES(30,'DELETE FROM balances WHERE rowid=4'); -INSERT INTO undolog VALUES(31,'DELETE FROM credits WHERE rowid=5'); -INSERT INTO undolog VALUES(32,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBB'',quantity=1000000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(33,'DELETE FROM debits WHERE rowid=5'); -INSERT INTO undolog VALUES(34,'DELETE FROM balances WHERE rowid=5'); -INSERT INTO undolog VALUES(35,'DELETE FROM credits WHERE rowid=6'); -INSERT INTO undolog VALUES(36,'DELETE FROM sends WHERE rowid=2'); -INSERT INTO undolog VALUES(37,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBC'',quantity=100000 WHERE rowid=4'); -INSERT INTO undolog VALUES(38,'DELETE FROM debits WHERE rowid=6'); -INSERT INTO undolog VALUES(39,'DELETE FROM balances WHERE rowid=6'); -INSERT INTO undolog VALUES(40,'DELETE FROM credits WHERE rowid=7'); -INSERT INTO undolog VALUES(41,'DELETE FROM sends WHERE rowid=3'); -INSERT INTO undolog VALUES(42,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92845000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(43,'DELETE FROM debits WHERE rowid=7'); -INSERT INTO undolog VALUES(44,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92844999976 WHERE rowid=1'); -INSERT INTO undolog VALUES(45,'DELETE FROM debits WHERE rowid=8'); -INSERT INTO undolog VALUES(46,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3'',asset=''XCP'',quantity=50000000 WHERE rowid=2'); -INSERT INTO undolog VALUES(47,'DELETE FROM credits WHERE rowid=8'); -INSERT INTO undolog VALUES(48,'DELETE FROM dividends WHERE rowid=10'); -INSERT INTO undolog VALUES(49,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92844979976 WHERE rowid=1'); -INSERT INTO undolog VALUES(50,'DELETE FROM debits WHERE rowid=9'); -INSERT INTO undolog VALUES(51,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92844559176 WHERE rowid=1'); -INSERT INTO undolog VALUES(52,'DELETE FROM debits WHERE rowid=10'); -INSERT INTO undolog VALUES(53,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3'',asset=''XCP'',quantity=50000024 WHERE rowid=2'); -INSERT INTO undolog VALUES(54,'DELETE FROM credits WHERE rowid=9'); -INSERT INTO undolog VALUES(55,'DELETE FROM dividends WHERE rowid=11'); -INSERT INTO undolog VALUES(56,'DELETE FROM broadcasts WHERE rowid=12'); -INSERT INTO undolog VALUES(57,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92844539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(58,'DELETE FROM debits WHERE rowid=11'); -INSERT INTO undolog VALUES(59,'DELETE FROM bets WHERE rowid=1'); -INSERT INTO undolog VALUES(60,'UPDATE orders SET tx_index=3,tx_hash=''12b8ef5d36ad332a8700be63c5b6e41f4ac8cad15899e4ba651664e951d384d8'',block_index=310002,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''BTC'',give_quantity=50000000,give_remaining=0,get_asset=''XCP'',get_quantity=100000000,get_remaining=0,expiration=10,expire_index=310012,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=142858,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(61,'DELETE FROM order_expirations WHERE rowid=3'); -INSERT INTO undolog VALUES(62,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92794539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(63,'DELETE FROM debits WHERE rowid=12'); -INSERT INTO undolog VALUES(64,'DELETE FROM bets WHERE rowid=2'); -INSERT INTO undolog VALUES(65,'UPDATE bets SET tx_index=13,tx_hash=''86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243'',block_index=310012,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=0,deadline=1388000100,wager_quantity=50000000,wager_remaining=50000000,counterwager_quantity=25000000,counterwager_remaining=25000000,target_value=0.0,leverage=15120,expiration=10,expire_index=310022,fee_fraction_int=99999999,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(66,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92769539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(67,'DELETE FROM credits WHERE rowid=10'); -INSERT INTO undolog VALUES(68,'UPDATE bets SET tx_index=14,tx_hash=''19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8'',block_index=310013,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=1,deadline=1388000100,wager_quantity=25000000,wager_remaining=25000000,counterwager_quantity=41500000,counterwager_remaining=41500000,target_value=0.0,leverage=15120,expiration=10,expire_index=310023,fee_fraction_int=99999999,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(69,'DELETE FROM bet_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(70,'UPDATE orders SET tx_index=4,tx_hash=''792289d0cc057f06fee7c5cdfa65c770bf30f7bcc9ea85dd83e0dcc9d6cf655c'',block_index=310003,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''XCP'',give_quantity=105000000,give_remaining=5000000,get_asset=''BTC'',get_quantity=50000000,get_remaining=0,expiration=10,expire_index=310013,fee_required=900000,fee_required_remaining=42858,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(71,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92773789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(72,'DELETE FROM credits WHERE rowid=11'); -INSERT INTO undolog VALUES(73,'DELETE FROM order_expirations WHERE rowid=4'); -INSERT INTO undolog VALUES(74,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92778789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(75,'DELETE FROM debits WHERE rowid=13'); -INSERT INTO undolog VALUES(76,'DELETE FROM bets WHERE rowid=3'); -INSERT INTO undolog VALUES(77,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92628789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(78,'DELETE FROM debits WHERE rowid=14'); -INSERT INTO undolog VALUES(79,'DELETE FROM bets WHERE rowid=4'); -INSERT INTO undolog VALUES(80,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(81,'DELETE FROM credits WHERE rowid=12'); -INSERT INTO undolog VALUES(82,'UPDATE bets SET tx_index=15,tx_hash=''cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6'',block_index=310014,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=0,deadline=1388000100,wager_quantity=150000000,wager_remaining=150000000,counterwager_quantity=350000000,counterwager_remaining=350000000,target_value=0.0,leverage=5040,expiration=10,expire_index=310024,fee_fraction_int=99999999,status=''open'' WHERE rowid=3'); -INSERT INTO undolog VALUES(83,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(84,'DELETE FROM credits WHERE rowid=13'); -INSERT INTO undolog VALUES(85,'UPDATE bets SET tx_index=16,tx_hash=''78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3'',block_index=310015,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=1,deadline=1388000100,wager_quantity=350000000,wager_remaining=350000000,counterwager_quantity=150000000,counterwager_remaining=150000000,target_value=0.0,leverage=5040,expiration=10,expire_index=310025,fee_fraction_int=99999999,status=''open'' WHERE rowid=4'); -INSERT INTO undolog VALUES(86,'DELETE FROM bet_matches WHERE rowid=2'); -INSERT INTO undolog VALUES(87,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(88,'DELETE FROM debits WHERE rowid=15'); -INSERT INTO undolog VALUES(89,'DELETE FROM bets WHERE rowid=5'); -INSERT INTO undolog VALUES(90,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=91528789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(91,'DELETE FROM debits WHERE rowid=16'); -INSERT INTO undolog VALUES(92,'DELETE FROM bets WHERE rowid=6'); -INSERT INTO undolog VALUES(93,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(94,'DELETE FROM credits WHERE rowid=14'); -INSERT INTO undolog VALUES(95,'UPDATE bets SET tx_index=17,tx_hash=''170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b'',block_index=310016,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=2,deadline=1388000200,wager_quantity=750000000,wager_remaining=750000000,counterwager_quantity=650000000,counterwager_remaining=650000000,target_value=1.0,leverage=5040,expiration=10,expire_index=310026,fee_fraction_int=99999999,status=''open'' WHERE rowid=5'); -INSERT INTO undolog VALUES(96,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(97,'DELETE FROM credits WHERE rowid=15'); -INSERT INTO undolog VALUES(98,'UPDATE bets SET tx_index=18,tx_hash=''b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679'',block_index=310017,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=3,deadline=1388000200,wager_quantity=650000000,wager_remaining=650000000,counterwager_quantity=750000000,counterwager_remaining=750000000,target_value=1.0,leverage=5040,expiration=10,expire_index=310027,fee_fraction_int=99999999,status=''open'' WHERE rowid=6'); -INSERT INTO undolog VALUES(99,'DELETE FROM bet_matches WHERE rowid=3'); -INSERT INTO undolog VALUES(100,'DELETE FROM broadcasts WHERE rowid=19'); -INSERT INTO undolog VALUES(101,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(102,'DELETE FROM credits WHERE rowid=16'); -INSERT INTO undolog VALUES(103,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90937926676 WHERE rowid=1'); -INSERT INTO undolog VALUES(104,'DELETE FROM credits WHERE rowid=17'); -INSERT INTO undolog VALUES(105,'DELETE FROM bet_match_resolutions WHERE rowid=1'); -INSERT INTO undolog VALUES(106,'UPDATE bet_matches SET id=''86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243_19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8'',tx0_index=13,tx0_hash=''86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243'',tx0_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx1_index=14,tx1_hash=''19e4f4787538366983026745d72265d95c32180e741934be0c0c9a9392640de8'',tx1_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx0_bet_type=0,tx1_bet_type=1,feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',initial_value=100,deadline=1388000100,target_value=0.0,leverage=15120,forward_quantity=41500000,backward_quantity=20750000,tx0_block_index=310012,tx1_block_index=310013,block_index=310013,tx0_expiration=10,tx1_expiration=10,match_expire_index=310022,fee_fraction_int=99999999,status=''pending'' WHERE rowid=1'); -INSERT INTO undolog VALUES(107,'DELETE FROM broadcasts WHERE rowid=20'); -INSERT INTO undolog VALUES(108,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90941039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(109,'DELETE FROM credits WHERE rowid=18'); -INSERT INTO undolog VALUES(110,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=91100339176 WHERE rowid=1'); -INSERT INTO undolog VALUES(111,'DELETE FROM credits WHERE rowid=19'); -INSERT INTO undolog VALUES(112,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=91416039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(113,'DELETE FROM credits WHERE rowid=20'); -INSERT INTO undolog VALUES(114,'DELETE FROM bet_match_resolutions WHERE rowid=2'); -INSERT INTO undolog VALUES(115,'UPDATE bet_matches SET id=''cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6_78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3'',tx0_index=15,tx0_hash=''cb395180f84879bfa8aadbfc3b0a1f9ceb43805f930567451334aad30bab00a6'',tx0_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx1_index=16,tx1_hash=''78739e7f0c87978bb5c8600db150dac4f6b6fc424889562afc7374edee19fac3'',tx1_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx0_bet_type=0,tx1_bet_type=1,feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',initial_value=100,deadline=1388000100,target_value=0.0,leverage=5040,forward_quantity=150000000,backward_quantity=350000000,tx0_block_index=310014,tx1_block_index=310015,block_index=310015,tx0_expiration=10,tx1_expiration=10,match_expire_index=310024,fee_fraction_int=99999999,status=''pending'' WHERE rowid=2'); -INSERT INTO undolog VALUES(116,'DELETE FROM broadcasts WHERE rowid=21'); -INSERT INTO undolog VALUES(117,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=91441039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(118,'DELETE FROM credits WHERE rowid=21'); -INSERT INTO undolog VALUES(119,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92771039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(120,'DELETE FROM credits WHERE rowid=22'); -INSERT INTO undolog VALUES(121,'DELETE FROM bet_match_resolutions WHERE rowid=3'); -INSERT INTO undolog VALUES(122,'UPDATE bet_matches SET id=''170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b_b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679'',tx0_index=17,tx0_hash=''170565b2aa082c64e3cf8f0ccf2bf675372a4f068f698b663eddf916d432e52b'',tx0_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx1_index=18,tx1_hash=''b8b743d7ab870a99b3310a15fe5ae1dfe2a7c13afc5c6fce6a532f1f98c6b679'',tx1_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx0_bet_type=2,tx1_bet_type=3,feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',initial_value=100,deadline=1388000200,target_value=1.0,leverage=5040,forward_quantity=750000000,backward_quantity=650000000,tx0_block_index=310016,tx1_block_index=310017,block_index=310017,tx0_expiration=10,tx1_expiration=10,match_expire_index=310026,fee_fraction_int=99999999,status=''pending'' WHERE rowid=3'); -INSERT INTO undolog VALUES(123,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBB'',quantity=996000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(124,'DELETE FROM debits WHERE rowid=17'); -INSERT INTO undolog VALUES(125,'DELETE FROM orders WHERE rowid=3'); -INSERT INTO undolog VALUES(126,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92841039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(127,'DELETE FROM credits WHERE rowid=23'); -INSERT INTO undolog VALUES(128,'DELETE FROM burns WHERE rowid=23'); -INSERT INTO undolog VALUES(129,'UPDATE bets SET tx_index=13,tx_hash=''86609abcd81835cc472bd8c193d27e1048b5f7cba981414117fbf8cc67f84243'',block_index=310012,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=0,deadline=1388000100,wager_quantity=50000000,wager_remaining=8500000,counterwager_quantity=25000000,counterwager_remaining=4250000,target_value=0.0,leverage=15120,expiration=10,expire_index=310022,fee_fraction_int=99999999,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(130,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=149840926438 WHERE rowid=1'); -INSERT INTO undolog VALUES(131,'DELETE FROM credits WHERE rowid=24'); -INSERT INTO undolog VALUES(132,'DELETE FROM bet_expirations WHERE rowid=13'); -INSERT INTO undolog VALUES(133,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBC'',quantity=99474 WHERE rowid=4'); -INSERT INTO undolog VALUES(134,'DELETE FROM debits WHERE rowid=18'); -INSERT INTO undolog VALUES(135,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3'',asset=''BBBC'',quantity=526 WHERE rowid=6'); -INSERT INTO undolog VALUES(136,'DELETE FROM credits WHERE rowid=25'); -INSERT INTO undolog VALUES(137,'DELETE FROM sends WHERE rowid=4'); -INSERT INTO undolog VALUES(138,'UPDATE orders SET tx_index=22,tx_hash=''cc068ab4b7834ebc0a7742e86691d4f2a82c13baef4ca13662c72d6b51e48d64'',block_index=310021,source=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''BBBB'',give_quantity=50000000,give_remaining=50000000,get_asset=''XCP'',get_quantity=50000000,get_remaining=50000000,expiration=10,expire_index=310031,fee_required=0,fee_required_remaining=0,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=3'); -INSERT INTO undolog VALUES(139,'UPDATE balances SET address=''2_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBB'',quantity=946000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(140,'DELETE FROM credits WHERE rowid=26'); -INSERT INTO undolog VALUES(141,'DELETE FROM order_expirations WHERE rowid=22'); - --- Table undolog_block -DROP TABLE IF EXISTS undolog_block; -CREATE TABLE undolog_block( - block_index INTEGER PRIMARY KEY, - first_undo_index INTEGER); -INSERT INTO undolog_block VALUES(310001,4); -INSERT INTO undolog_block VALUES(310002,9); -INSERT INTO undolog_block VALUES(310003,10); -INSERT INTO undolog_block VALUES(310004,16); -INSERT INTO undolog_block VALUES(310005,20); -INSERT INTO undolog_block VALUES(310006,26); -INSERT INTO undolog_block VALUES(310007,32); -INSERT INTO undolog_block VALUES(310008,37); -INSERT INTO undolog_block VALUES(310009,42); -INSERT INTO undolog_block VALUES(310010,49); -INSERT INTO undolog_block VALUES(310011,56); -INSERT INTO undolog_block VALUES(310012,57); -INSERT INTO undolog_block VALUES(310013,60); -INSERT INTO undolog_block VALUES(310014,70); -INSERT INTO undolog_block VALUES(310015,77); -INSERT INTO undolog_block VALUES(310016,87); -INSERT INTO undolog_block VALUES(310017,90); -INSERT INTO undolog_block VALUES(310018,100); -INSERT INTO undolog_block VALUES(310019,107); -INSERT INTO undolog_block VALUES(310020,116); -INSERT INTO undolog_block VALUES(310021,123); -INSERT INTO undolog_block VALUES(310022,126); -INSERT INTO undolog_block VALUES(310023,129); -INSERT INTO undolog_block VALUES(310024,138); -INSERT INTO undolog_block VALUES(310025,138); -INSERT INTO undolog_block VALUES(310026,138); -INSERT INTO undolog_block VALUES(310027,138); -INSERT INTO undolog_block VALUES(310028,138); -INSERT INTO undolog_block VALUES(310029,138); -INSERT INTO undolog_block VALUES(310030,138); -INSERT INTO undolog_block VALUES(310031,138); -INSERT INTO undolog_block VALUES(310032,138); -INSERT INTO undolog_block VALUES(310033,142); -INSERT INTO undolog_block VALUES(310034,142); -INSERT INTO undolog_block VALUES(310035,142); -INSERT INTO undolog_block VALUES(310036,142); -INSERT INTO undolog_block VALUES(310037,142); -INSERT INTO undolog_block VALUES(310038,142); -INSERT INTO undolog_block VALUES(310039,142); -INSERT INTO undolog_block VALUES(310040,142); -INSERT INTO undolog_block VALUES(310041,142); -INSERT INTO undolog_block VALUES(310042,142); -INSERT INTO undolog_block VALUES(310043,142); -INSERT INTO undolog_block VALUES(310044,142); -INSERT INTO undolog_block VALUES(310045,142); -INSERT INTO undolog_block VALUES(310046,142); -INSERT INTO undolog_block VALUES(310047,142); -INSERT INTO undolog_block VALUES(310048,142); -INSERT INTO undolog_block VALUES(310049,142); -INSERT INTO undolog_block VALUES(310050,142); -INSERT INTO undolog_block VALUES(310051,142); -INSERT INTO undolog_block VALUES(310052,142); -INSERT INTO undolog_block VALUES(310053,142); -INSERT INTO undolog_block VALUES(310054,142); -INSERT INTO undolog_block VALUES(310055,142); -INSERT INTO undolog_block VALUES(310056,142); -INSERT INTO undolog_block VALUES(310057,142); -INSERT INTO undolog_block VALUES(310058,142); -INSERT INTO undolog_block VALUES(310059,142); -INSERT INTO undolog_block VALUES(310060,142); -INSERT INTO undolog_block VALUES(310061,142); -INSERT INTO undolog_block VALUES(310062,142); -INSERT INTO undolog_block VALUES(310063,142); -INSERT INTO undolog_block VALUES(310064,142); -INSERT INTO undolog_block VALUES(310065,142); -INSERT INTO undolog_block VALUES(310066,142); -INSERT INTO undolog_block VALUES(310067,142); -INSERT INTO undolog_block VALUES(310068,142); -INSERT INTO undolog_block VALUES(310069,142); -INSERT INTO undolog_block VALUES(310070,142); -INSERT INTO undolog_block VALUES(310071,142); -INSERT INTO undolog_block VALUES(310072,142); -INSERT INTO undolog_block VALUES(310073,142); -INSERT INTO undolog_block VALUES(310074,142); -INSERT INTO undolog_block VALUES(310075,142); -INSERT INTO undolog_block VALUES(310076,142); -INSERT INTO undolog_block VALUES(310077,142); -INSERT INTO undolog_block VALUES(310078,142); -INSERT INTO undolog_block VALUES(310079,142); -INSERT INTO undolog_block VALUES(310080,142); -INSERT INTO undolog_block VALUES(310081,142); -INSERT INTO undolog_block VALUES(310082,142); -INSERT INTO undolog_block VALUES(310083,142); -INSERT INTO undolog_block VALUES(310084,142); -INSERT INTO undolog_block VALUES(310085,142); -INSERT INTO undolog_block VALUES(310086,142); -INSERT INTO undolog_block VALUES(310087,142); -INSERT INTO undolog_block VALUES(310088,142); -INSERT INTO undolog_block VALUES(310089,142); -INSERT INTO undolog_block VALUES(310090,142); -INSERT INTO undolog_block VALUES(310091,142); -INSERT INTO undolog_block VALUES(310092,142); -INSERT INTO undolog_block VALUES(310093,142); -INSERT INTO undolog_block VALUES(310094,142); -INSERT INTO undolog_block VALUES(310095,142); -INSERT INTO undolog_block VALUES(310096,142); -INSERT INTO undolog_block VALUES(310097,142); -INSERT INTO undolog_block VALUES(310098,142); -INSERT INTO undolog_block VALUES(310099,142); -INSERT INTO undolog_block VALUES(310100,142); -INSERT INTO undolog_block VALUES(310101,142); - --- For primary key autoincrements the next id to use is stored in --- sqlite_sequence -DELETE FROM main.sqlite_sequence WHERE name='undolog'; -INSERT INTO main.sqlite_sequence VALUES ('undolog', 141); - -COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.log b/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.log deleted file mode 100644 index 17300afa1d..0000000000 --- a/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.log +++ /dev/null @@ -1,255 +0,0 @@ -Creating connection to `:memory:`. -Checking database integrity. -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 3.00000000; txid: 39091e24e0d0e3aae34250d89d4b7ec8c46778c457c4b2f401ed8b35945a8440; vout: 0; confirmations: 7'] -Fee/KB 0.00025000 -New input: amount: 3.00000000; txid: 39091e24e0d0e3aae34250d89d4b7ec8c46778c457c4b2f401ed8b35945a8440; vout: 0; confirmations: 7 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 2.37994375 BTC -Credit: 930.0 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #burn# -Burn: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 burned 0.62 BTC for 930.0 XCP (c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 2.37994375; txid: c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.37994375; txid: c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 2.37971125 BTC -Debit: 0.5 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #send# <062d5d8a8262f91cc16de8833e429bc92c0a4f63f61c4c8048a41bc254b97fd3> -Credit: 0.5 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #send# <062d5d8a8262f91cc16de8833e429bc92c0a4f63f61c4c8048a41bc254b97fd3> -Send: 0.5 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (062d5d8a8262f91cc16de8833e429bc92c0a4f63f61c4c8048a41bc254b97fd3) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 2.37971125; txid: 062d5d8a8262f91cc16de8833e429bc92c0a4f63f61c4c8048a41bc254b97fd3; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.37971125; txid: 062d5d8a8262f91cc16de8833e429bc92c0a4f63f61c4c8048a41bc254b97fd3; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 1000000 -Size: 272 Fee: 0.01000000 Change quantity: 2.36963325 BTC -Order: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered 0.5 BTC for 1.0 XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71) [open] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 2.36963325; txid: 53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.36963325; txid: 53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 2.36948725 BTC -Debit: 1.05 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #open order# -Order: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered 1.05 XCP for 0.5 BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16) [open] -Considering: 53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71 -Tx0 Price: 2.0; Tx1 Inverse Price: 2.1 -Potential forward quantities: 50000000, 52500000 -Forward Quantity: 50000000 -Backward Quantity: 100000000 -Tx0 fee provided remaining: 0.01; required fee: 0.00857142 -Order Match: 0.5 BTC for 1.0 XCP (53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71_cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16) [pending] -Order match has only -10 confirmation(s). -data_btc_out=15600 (data_value=7800 len(data_array)=2) -Sorted candidate UTXOs: ['amount: 2.36948725; txid: cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 2.36948725; txid: cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 387 final_fee 9675 -Size: 387 Fee: 0.00009675 Change quantity: 1.86923450 BTC -Credit: 1.0 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #btcpay# -Database: set status of order_match 53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71_cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16 to completed. -BTC Payment: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid 0.5 BTC to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 for order match 53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71_cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16 (c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86923450; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 3; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.86923450; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 3; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86908850 BTC -Debit: 0.5 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #issuance fee# -Issuance: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 created 10.0 of divisible asset BBBB (ff48da90dfe51b4aa156b69cbda46269886a76a44613a217f1e8dbf172495e12) [valid] -Credit: 10.0 BBBB to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #issuance# -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86908850; txid: ff48da90dfe51b4aa156b69cbda46269886a76a44613a217f1e8dbf172495e12; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 2'] -Fee/KB 0.00025000 -New input: amount: 1.86908850; txid: ff48da90dfe51b4aa156b69cbda46269886a76a44613a217f1e8dbf172495e12; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86894250 BTC -Debit: 0.5 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #issuance fee# -Issuance: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 created 100000 of indivisible asset BBBC (ce78de24c5c55bbac91a3c08e92f4e817fa0cd73c65a5136aa3ded1c7284a6ad) [valid] -Credit: 100000 BBBC to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #issuance# -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86894250; txid: ce78de24c5c55bbac91a3c08e92f4e817fa0cd73c65a5136aa3ded1c7284a6ad; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 3'] -Fee/KB 0.00025000 -New input: amount: 1.86894250; txid: ce78de24c5c55bbac91a3c08e92f4e817fa0cd73c65a5136aa3ded1c7284a6ad; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86871000 BTC -Debit: 0.04 BBBB from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #send# -Credit: 0.04 BBBB to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #send# -Send: 0.04 BBBB from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (f88727652b1502fabb4c45190bdc56b100a3d384bf5976311c4b41f433420bfc) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86871000; txid: f88727652b1502fabb4c45190bdc56b100a3d384bf5976311c4b41f433420bfc; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 4'] -Fee/KB 0.00025000 -New input: amount: 1.86871000; txid: f88727652b1502fabb4c45190bdc56b100a3d384bf5976311c4b41f433420bfc; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86847750 BTC -Debit: 526 BBBC from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #send# <97e94072d8a73bd1bd2a00a3a48424207dd9ee5c56ba349dfb621d6057870f95> -Credit: 526 BBBC to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #send# <97e94072d8a73bd1bd2a00a3a48424207dd9ee5c56ba349dfb621d6057870f95> -Send: 526 BBBC from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (97e94072d8a73bd1bd2a00a3a48424207dd9ee5c56ba349dfb621d6057870f95) [valid] -Total quantity to be distributed in dividends: 0.00000024 XCP -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86847750; txid: 97e94072d8a73bd1bd2a00a3a48424207dd9ee5c56ba349dfb621d6057870f95; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 5'] -Fee/KB 0.00025000 -New input: amount: 1.86847750; txid: 97e94072d8a73bd1bd2a00a3a48424207dd9ee5c56ba349dfb621d6057870f95; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86833150 BTC -Debit: 0.00000024 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #dividend# -Debit: 0.0002 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #dividend fee# -Credit: 0.00000024 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #dividend# -Dividend: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid 0.000006 XCP per unit of BBBB (a0b04ac9dd798854a39b5905235237a6cbbe2de50ffd49694a3002d1543f5536) [valid] -Total quantity to be distributed in dividends: 0.004208 XCP -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86833150; txid: a0b04ac9dd798854a39b5905235237a6cbbe2de50ffd49694a3002d1543f5536; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 6'] -Fee/KB 0.00025000 -New input: amount: 1.86833150; txid: a0b04ac9dd798854a39b5905235237a6cbbe2de50ffd49694a3002d1543f5536; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86818550 BTC -Debit: 0.004208 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #dividend# -Debit: 0.0002 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #dividend fee# -Credit: 0.004208 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #dividend# -Dividend: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 paid 0.000008 XCP per unit of BBBC (b93ca7e398b5ffe8173673d93ca9b39984ac9b0bb19f1de45c7c0730a8877690) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86818550; txid: b93ca7e398b5ffe8173673d93ca9b39984ac9b0bb19f1de45c7c0730a8877690; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 7'] -Fee/KB 0.00025000 -New input: amount: 1.86818550; txid: b93ca7e398b5ffe8173673d93ca9b39984ac9b0bb19f1de45c7c0730a8877690; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86803950 BTC -Broadcast: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:33:20 with a fee of 99.999999%% (413519ace5af8085631c26776778cfd40f618d5dc631f906d1f52b70264b9f21) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86803950; txid: 413519ace5af8085631c26776778cfd40f618d5dc631f906d1f52b70264b9f21; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 8'] -Fee/KB 0.00025000 -New input: amount: 1.86803950; txid: 413519ace5af8085631c26776778cfd40f618d5dc631f906d1f52b70264b9f21; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86780700 BTC -Debit: 0.5 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# -Bet: 0.5 XCP against 0.25 XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86780700; txid: c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 9'] -Fee/KB 0.00025000 -New input: amount: 1.86780700; txid: c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86757450 BTC -Expired order: 53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71 -Debit: 0.25 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# -Bet: 0.25 XCP against 0.415 XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -Considering: c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662 -Tx0 Inverse Odds: 0.5; Tx1 Odds: 0.6024096385542169 -Potential forward quantities: 50000000, 41500000 -Forward Quantity: 41500000 -Backward Quantity: 20750000 -Credit: 0.0425 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# -Bet Match: BullCFD for 0.415 XCP against BearCFD for 0.2075 XCP on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that 0.0 value, leveraged 3.0x (c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662_b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86757450; txid: b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 10'] -Fee/KB 0.00025000 -New input: amount: 1.86757450; txid: b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86734200 BTC -Credit: 0.05 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #cancel order# -Expired order: cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16 -Debit: 1.5 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# <801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29> -Bet: 1.5 XCP against 3.5 XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86734200; txid: 801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 11'] -Fee/KB 0.00025000 -New input: amount: 1.86734200; txid: 801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86710950 BTC -Debit: 3.5 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# -Bet: 3.5 XCP against 1.5 XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -Considering: c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662 -Skipping: leverages disagree. -Considering: 801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29 -Tx0 Inverse Odds: 2.3333333333333335; Tx1 Odds: 2.3333333333333335 -Potential forward quantities: 150000000, 150000000 -Forward Quantity: 150000000 -Backward Quantity: 350000000 -Credit: 0.0 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# -Credit: 0.0 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# -Bet Match: BullCFD for 1.5 XCP against BearCFD for 3.5 XCP on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:00 that 0.0 value, leveraged 1.0x (801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29_e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86710950; txid: e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 12'] -Fee/KB 0.00025000 -New input: amount: 1.86710950; txid: e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86687700 BTC -Debit: 7.5 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# -Bet: 7.5 XCP against 6.5 XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86687700; txid: c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 13'] -Fee/KB 0.00025000 -New input: amount: 1.86687700; txid: c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.86664450 BTC -Debit: 6.5 XCP from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet# <4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685> -Bet: 6.5 XCP against 7.5 XCP, by 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3, on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 -Considering: c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83 -Tx0 Inverse Odds: 0.8666666666666667; Tx1 Odds: 0.8666666666666667 -Potential forward quantities: 750000000, 750000000 -Forward Quantity: 750000000 -Backward Quantity: 650000000 -Credit: 0.0 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# <4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685> -Credit: 0.0 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #filled# <4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685> -Bet Match: Equal for 7.5 XCP against NotEqual for 6.5 XCP on 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:40 that 1.0 value, leveraged 1.0x (c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83_4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86664450; txid: 4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 14'] -Fee/KB 0.00025000 -New input: amount: 1.86664450; txid: 4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86649850 BTC -Broadcast: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:34:10 with a fee of 5.0%% (56f842d76ab0841e7f5c109c5add9eb46f44c88d14fd68b6f456570813f9e0c6) [valid] -Credit: 0.591375 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet settled: liquidated for bear# <56f842d76ab0841e7f5c109c5add9eb46f44c88d14fd68b6f456570813f9e0c6> -Credit: 0.031125 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #feed fee# <56f842d76ab0841e7f5c109c5add9eb46f44c88d14fd68b6f456570813f9e0c6> -Bet Match Force‐Liquidated: 0.0 XCP credited to the bull, 0.591375 XCP credited to the bear, and 0.031125 XCP credited to the feed address (c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662_b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839) -Database: set status of bet_match c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662_b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839 to settled: liquidated for bear. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86649850; txid: 56f842d76ab0841e7f5c109c5add9eb46f44c88d14fd68b6f456570813f9e0c6; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 15'] -Fee/KB 0.00025000 -New input: amount: 1.86649850; txid: 56f842d76ab0841e7f5c109c5add9eb46f44c88d14fd68b6f456570813f9e0c6; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86635250 BTC -Broadcast: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:35:01 with a fee of 5.0%% (5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45) [valid] -Credit: 1.593 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet settled# <5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45> -Credit: 3.157 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet settled# <5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45> -Credit: 0.25 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #feed fee# <5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45> -Bet Match Settled: 1.593 XCP credited to the bull, 3.157 XCP credited to the bear, and 0.25 XCP credited to the feed address (801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29_e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0) -Database: set status of bet_match 801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29_e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0 to settled. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86635250; txid: 5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 16'] -Fee/KB 0.00025000 -New input: amount: 1.86635250; txid: 5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86620650 BTC -Broadcast: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 at 2013-12-25T19:36:41 with a fee of 5.0%% (c522e7b202315126aff183b3939a3ce5d8ddf33639a876d1e8a6eca93759d576) [valid] -Credit: 13.3 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #bet settled: for notequal# -Credit: 0.7 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #feed fee# -Bet Match Settled: NotEqual won the pot of 13.3 XCP; 0.7 XCP credited to the feed address (c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83_4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685) -Database: set status of bet_match c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83_4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685 to settled: for notequal. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.86620650; txid: c522e7b202315126aff183b3939a3ce5d8ddf33639a876d1e8a6eca93759d576; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 17'] -Fee/KB 0.00025000 -New input: amount: 1.86620650; txid: c522e7b202315126aff183b3939a3ce5d8ddf33639a876d1e8a6eca93759d576; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.86606050 BTC -Debit: 0.5 BBBB from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #open order# -Order: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 ordered 0.5 BBBB for 0.5 XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d) [open] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.86606050; txid: adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 18'] -Fee/KB 0.00025000 -New input: amount: 1.86606050; txid: adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.86600425 BTC -Credit: 569.99887262 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #burn# <3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22> -Burn: 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 burned 0.38 BTC for 569.99887262 XCP (3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86600425; txid: 3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117; vout: 0; confirmations: 19'] -Fee/KB 0.00025000 -New input: amount: 0.86600425; txid: 3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.86577175 BTC -Credit: 0.085 XCP to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #recredit wager remaining# -Expired bet: c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662 -Debit: 10000 BBBC from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #send# -Credit: 10000 BBBC to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 #send# -Send: 10000 BBBC from 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3 (a0e06860c5e6db0aa890002288d961e6dd1a8dda1b030a364325879d1b6b535f) [valid] -Credit: 0.5 BBBB to 3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3 #cancel order# -Expired order: adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d diff --git a/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.sql b/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.sql deleted file mode 100644 index 357e54a688..0000000000 --- a/counterpartylib/test/fixtures/scenarios/multisig_3_of_3.sql +++ /dev/null @@ -1,1400 +0,0 @@ -PRAGMA page_size=4096; --- PRAGMA encoding='UTF-8'; --- PRAGMA auto_vacuum=NONE; --- PRAGMA max_page_count=1073741823; - -BEGIN TRANSACTION; - --- Table addresses -DROP TABLE IF EXISTS addresses; -CREATE TABLE addresses( - address TEXT UNIQUE, - options INTEGER, - block_index INTEGER); --- Triggers and indices on addresses -CREATE TRIGGER _addresses_delete BEFORE DELETE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO addresses(rowid,address,options,block_index) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.options)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _addresses_insert AFTER INSERT ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM addresses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _addresses_update AFTER UPDATE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE addresses SET address='||quote(old.address)||',options='||quote(old.options)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX addresses_idx ON addresses (address); - --- Table assets -DROP TABLE IF EXISTS assets; -CREATE TABLE assets( - asset_id TEXT UNIQUE, - asset_name TEXT UNIQUE, - block_index INTEGER, - asset_longname TEXT); -INSERT INTO assets VALUES('0','BTC',NULL,NULL); -INSERT INTO assets VALUES('1','XCP',NULL,NULL); -INSERT INTO assets VALUES('18279','BBBB',310005,NULL); -INSERT INTO assets VALUES('18280','BBBC',310006,NULL); --- Triggers and indices on assets -CREATE TRIGGER _assets_delete BEFORE DELETE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO assets(rowid,asset_id,asset_name,block_index,asset_longname) VALUES('||old.rowid||','||quote(old.asset_id)||','||quote(old.asset_name)||','||quote(old.block_index)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _assets_insert AFTER INSERT ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM assets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _assets_update AFTER UPDATE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE assets SET asset_id='||quote(old.asset_id)||',asset_name='||quote(old.asset_name)||',block_index='||quote(old.block_index)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE UNIQUE INDEX asset_longname_idx ON assets(asset_longname); -CREATE INDEX id_idx ON assets (asset_id); -CREATE INDEX name_idx ON assets (asset_name); - --- Table balances -DROP TABLE IF EXISTS balances; -CREATE TABLE balances( - address TEXT, - asset TEXT, - quantity INTEGER); -INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',149849426438); -INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50420824); -INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',996000000); -INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',89474); -INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000); -INSERT INTO balances VALUES('3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10526); --- Triggers and indices on balances -CREATE TRIGGER _balances_delete BEFORE DELETE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO balances(rowid,address,asset,quantity) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||')'); - END; -CREATE TRIGGER _balances_insert AFTER INSERT ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM balances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _balances_update AFTER UPDATE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE balances SET address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_asset_idx ON balances (address, asset); - --- Table bet_expirations -DROP TABLE IF EXISTS bet_expirations; -CREATE TABLE bet_expirations( - bet_index INTEGER PRIMARY KEY, - bet_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (bet_index, bet_hash) REFERENCES bets(tx_index, tx_hash)); -INSERT INTO bet_expirations VALUES(13,'c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310023); --- Triggers and indices on bet_expirations -CREATE TRIGGER _bet_expirations_delete BEFORE DELETE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_expirations(rowid,bet_index,bet_hash,source,block_index) VALUES('||old.rowid||','||quote(old.bet_index)||','||quote(old.bet_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_expirations_insert AFTER INSERT ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_expirations_update AFTER UPDATE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_expirations SET bet_index='||quote(old.bet_index)||',bet_hash='||quote(old.bet_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_expirations -DROP TABLE IF EXISTS bet_match_expirations; -CREATE TABLE bet_match_expirations( - bet_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on bet_match_expirations -CREATE TRIGGER _bet_match_expirations_delete BEFORE DELETE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_expirations(rowid,bet_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_match_expirations_insert AFTER INSERT ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_expirations_update AFTER UPDATE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_expirations SET bet_match_id='||quote(old.bet_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_resolutions -DROP TABLE IF EXISTS bet_match_resolutions; -CREATE TABLE bet_match_resolutions( - bet_match_id TEXT PRIMARY KEY, - bet_match_type_id INTEGER, - block_index INTEGER, - winner TEXT, - settled BOOL, - bull_credit INTEGER, - bear_credit INTEGER, - escrow_less_fee INTEGER, - fee INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO bet_match_resolutions VALUES('c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662_b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839',1,310018,'0',0,59137500,NULL,NULL,3112500); -INSERT INTO bet_match_resolutions VALUES('801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29_e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0',1,310019,'1',159300000,315700000,NULL,NULL,25000000); -INSERT INTO bet_match_resolutions VALUES('c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83_4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685',5,310020,NULL,NULL,NULL,'NotEqual',1330000000,70000000); --- Triggers and indices on bet_match_resolutions -CREATE TRIGGER _bet_match_resolutions_delete BEFORE DELETE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_resolutions(rowid,bet_match_id,bet_match_type_id,block_index,winner,settled,bull_credit,bear_credit,escrow_less_fee,fee) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.bet_match_type_id)||','||quote(old.block_index)||','||quote(old.winner)||','||quote(old.settled)||','||quote(old.bull_credit)||','||quote(old.bear_credit)||','||quote(old.escrow_less_fee)||','||quote(old.fee)||')'); - END; -CREATE TRIGGER _bet_match_resolutions_insert AFTER INSERT ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_resolutions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_resolutions_update AFTER UPDATE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_resolutions SET bet_match_id='||quote(old.bet_match_id)||',bet_match_type_id='||quote(old.bet_match_type_id)||',block_index='||quote(old.block_index)||',winner='||quote(old.winner)||',settled='||quote(old.settled)||',bull_credit='||quote(old.bull_credit)||',bear_credit='||quote(old.bear_credit)||',escrow_less_fee='||quote(old.escrow_less_fee)||',fee='||quote(old.fee)||' WHERE rowid='||old.rowid); - END; - --- Table bet_matches -DROP TABLE IF EXISTS bet_matches; -CREATE TABLE bet_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_bet_type INTEGER, - tx1_bet_type INTEGER, - feed_address TEXT, - initial_value INTEGER, - deadline INTEGER, - target_value REAL, - leverage INTEGER, - forward_quantity INTEGER, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO bet_matches VALUES('c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662_b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839',13,'c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',14,'b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310013,10,10,310022,99999999,'settled: liquidated for bear'); -INSERT INTO bet_matches VALUES('801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29_e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0',15,'801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',16,'e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310015,10,10,310024,99999999,'settled'); -INSERT INTO bet_matches VALUES('c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83_4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685',17,'c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',18,'4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,3,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310017,10,10,310026,99999999,'settled: for notequal'); --- Triggers and indices on bet_matches -CREATE TRIGGER _bet_matches_delete BEFORE DELETE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_bet_type,tx1_bet_type,feed_address,initial_value,deadline,target_value,leverage,forward_quantity,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_bet_type)||','||quote(old.tx1_bet_type)||','||quote(old.feed_address)||','||quote(old.initial_value)||','||quote(old.deadline)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.forward_quantity)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bet_matches_insert AFTER INSERT ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_matches_update AFTER UPDATE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_bet_type='||quote(old.tx0_bet_type)||',tx1_bet_type='||quote(old.tx1_bet_type)||',feed_address='||quote(old.feed_address)||',initial_value='||quote(old.initial_value)||',deadline='||quote(old.deadline)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',forward_quantity='||quote(old.forward_quantity)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_feed_idx ON bet_matches (feed_address, status); - --- Table bets -DROP TABLE IF EXISTS bets; -CREATE TABLE bets( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - feed_address TEXT, - bet_type INTEGER, - deadline INTEGER, - wager_quantity INTEGER, - wager_remaining INTEGER, - counterwager_quantity INTEGER, - counterwager_remaining INTEGER, - target_value REAL, - leverage INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO bets VALUES(13,'c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662',310012,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'expired'); -INSERT INTO bets VALUES(14,'b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839',310013,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,25000000,4250000,41500000,0,0.0,15120,10,310023,99999999,'filled'); -INSERT INTO bets VALUES(15,'801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29',310014,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,1388000100,150000000,0,350000000,0,0.0,5040,10,310024,99999999,'filled'); -INSERT INTO bets VALUES(16,'e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0',310015,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1,1388000100,350000000,0,150000000,0,0.0,5040,10,310025,99999999,'filled'); -INSERT INTO bets VALUES(17,'c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83',310016,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',2,1388000200,750000000,0,650000000,0,1.0,5040,10,310026,99999999,'filled'); -INSERT INTO bets VALUES(18,'4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685',310017,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',3,1388000200,650000000,0,750000000,0,1.0,5040,10,310027,99999999,'filled'); --- Triggers and indices on bets -CREATE TRIGGER _bets_delete BEFORE DELETE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bets(rowid,tx_index,tx_hash,block_index,source,feed_address,bet_type,deadline,wager_quantity,wager_remaining,counterwager_quantity,counterwager_remaining,target_value,leverage,expiration,expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.feed_address)||','||quote(old.bet_type)||','||quote(old.deadline)||','||quote(old.wager_quantity)||','||quote(old.wager_remaining)||','||quote(old.counterwager_quantity)||','||quote(old.counterwager_remaining)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bets_insert AFTER INSERT ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bets_update AFTER UPDATE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bets SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',feed_address='||quote(old.feed_address)||',bet_type='||quote(old.bet_type)||',deadline='||quote(old.deadline)||',wager_quantity='||quote(old.wager_quantity)||',wager_remaining='||quote(old.wager_remaining)||',counterwager_quantity='||quote(old.counterwager_quantity)||',counterwager_remaining='||quote(old.counterwager_remaining)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX feed_valid_bettype_idx ON bets (feed_address, status, bet_type); - --- Table blocks -DROP TABLE IF EXISTS blocks; -CREATE TABLE blocks( - block_index INTEGER UNIQUE, - block_hash TEXT UNIQUE, - block_time INTEGER, - previous_block_hash TEXT UNIQUE, - difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, - PRIMARY KEY (block_index, block_hash)); -INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); -INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'09fa44ed277cd9e448baf3d4a2accc520d57c77fed0d97379ba9bb804e3dda71','7d9cd23062d78e9eb1a892f69b154410935e9675ede8e05fe9c1269cd3c54b12','2942e4a213def5730ad4f05847480fb4c988afe9905a8e923d73d1f7b93b8b8e'); -INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'b2237a0b0b29b2198355f47d38cb995e013c0e074c29dcbf1b99ed4c0f459c8d','955bb12ee95c328b789112ccb2c765ed2d5396243af340f1d21bac682bd5152b','f7409f091134744b5c6607e98a051578417d414b2b1ce3b6e65bd2dfcd4d2b5e'); -INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'a3c393a285361d2981551f0a903d45847e7a0142779692d384bc77bac420db18','d8bb96ce066c9f3ab1e3180addeb44ad4c03fbbdc0fc13c7ba48173fcd61e3ee','4da901cfec76f803d41654cc8396b2e6f11fd17b80c2c47651de45d83843bee9'); -INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'f96ba90a471ab5524a574cc4ff72a228a8dc7019824482a664569dcb41c126c7','56de16a16dec905993be87e59d6927f0e6a9e4be87807680822d05246af3ebce','80762d98feeb351dbfedccc65ee9c102880e77edce579123cd3d8bb80dc10e8f'); -INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'943a23e317f71981b24d636cae98f495b2bb00c949b1603a778eb7500894c844','34ba97623580233bd7bf79b5e666a30e93748d338a5b06a3445d5555fe5dc64f','340d12f372095a7bf50ec2b9157b1f5d88232a779bea5452fa368eb7025492d0'); -INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'0c5f3dd2d439a571eec03583442fb051bedf5bc0b0ede92012922b27847af2a1','681bfcaa9e9ee89062a24adef9b382fb8f29d09264d110e9b65be4d90a8a556d','0fbbf716554ea29b632fbd6a4e7dc3c33cddc03cf38f2a42f011cc6e229a9799'); -INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'377fe894d79d60b011958ed747908b6009c5e0261fa177caefc664cb8db4c74b','97a6303294a5d9185c14b54b3008e6c34e3f9512c138e7ec715d7a6694582a30','e0164654c8167fb11da6226a5983ed9ce5f19d2ae131d3913021cc66d36a1668'); -INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'4be55eb54e78e829306dfa31248b3073d311f49da420d9844f9aedabfbd296e3','06fb9d0e2cff567898f80ca35f0bc4abb494cc434aba89706f692de5e825d8b6','1d4bbcf0caf5bd5322382ecfddd223a9f64b2531d1ffcfab5bf8eb4eec4bcf61'); -INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'1248da848479b90f9dada38eaa02b9fe1226859e6ed1e3c4a121172786178dea','ccb0bed40631d947fb98a3e70b913716ac5a568628b292bf69a9a2567593770d','ff8f6f3d9d596643d6ba3337581b9602811034b73d9a0ea10b6c3d3272cf87b2'); -INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'1e1b07f218127eccdfab98a4bc127ce185cda15314e72328dfe10eb8f2f18726','e71d8e48020f2e9528edbb5c6eed9d1f2db638926cbd140d9d40105d7dded55b','ed4cffe78e9a0ef6b4c00510272ca34e595a9587672f4922227c9f876262989f'); -INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'03be7c3d8dc521277625164e3e828be106672cba205129c014ce7771a3b8730f','c783f48df416cf85a9e52be8425146a7c85976d17818da0161f3dfccd15a203f','fef2b3ceb01af75d35771c7b95c1daa8048970ff42537ccd6ceb86c4ea8cb432'); -INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'db6d49ef7cfb461f9431b2e712f694f0747012ae28f3684e0d41476f77fab667','a4ca3d34480d4496aa376313d16cb31174a3940fdf9f500e5159cae7b59054a0','0a9b72df3e5354dbb57dd3553fe8a0d4c2d5329b3c135f211a53db4c63230e0d'); -INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'ac399d193def488d3457876edef42dd651b30c976025c3d6f810e4d37c88c822','e7be011b55d265669c166b7e941d8528ffeb2e485fb3ed2d814e482b318a5943','c4eafa84f8a0ee8a53875517fdf46cb15a50028081fc24af47236a0ad1ae9507'); -INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'f6fd6f6280b1c580abe8e31de28bfa0f269d453068946733cad69d29f6874936','15f3f50b8f62529cb96d66ab7961b8a455d204d6a3c2e56bbcef0d716ae3009a','25e194e6d22e2072532dbb1916db78d6418f44df1345d16d43a86850b350b422'); -INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'0c52d56c6f7c25da7b757aba30e890e9eff402155b5497a5420e13e69b7cb54b','d54b92091e8bdcc9d14935f671c95c01e2b7e7f6e453f284f1f24d0f8cee7b95','f8f6b6d8aeb930fe25b851ee9d8778e14c6ac3b4eb2531443c2b20a94af89047'); -INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'03cd020f708d5f082f5b63e3c1f58e5f25d564a60699ae0f23471115d9e37d5e','a00cb9431476b647d6d1587de088ec7c4842b8d695bb70fdbf1998572a11386f','cb124ec40f1b9b839c19c09d8b8c1b6622ce62967539887e8763f3cbb0e648c9'); -INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'d95cf7b2af3f578fc64450d484323075e81999a868918d3dbf89160269d68980','40f85859e01ef258d0825782c076a6b87794e93b497c165537e41979cced3730','e650587b50aba6c78a1e200613ece2de0d9d5a414c8bc2f6b1ac9caea3072343'); -INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'725783dab777f54b11be66fdf47280852fd6b4d8a9b9f2fbba9e92056538ce73','f4d57c0688f09749ce6a915ec08119c45d080b370264452b7e387a62d8f71fea','26af267a673f2476c77027fa06a89c45ff181724a94d05f77089289932cb32f1'); -INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'05ad248fa836b50ce72a2f61c7465a455cc48ac92f2c0ff9bb9f94e69081d1e7','adce60e2d537e0c50c239e5708efdb8ae0d1147381bbdc7b4d03e8ab1b7d2f01','93422b52485a72a1545bf4547395fbe57211eb020aad4ec95ff69b3180767ed9'); -INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'0ab8707bce7b77beecc32ad6124482cb561776ed245ce6dce08f5318e2cf396f','fa9f383c249b429621a7a701fb0472df766e8e379832218f7236a1edbc6513e0','0602ed13c5eaf2511207ba674b614c4e017a35e44d937ad01c5b9ac7b14ecd51'); -INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'198edc4bf109549538a2f8f96714536a99a1568fe16fe4254881520474adc68d','8cea8f795e5721293dfcb260278ed3f0239b70aca4a593214acc415692ddc264','08255a05ed7001c4799a65828686872b4b80511ae09cd065222935b7c7c674af'); -INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'52482033c5c11ad24257707137b090606305497618e29050b2fdd3e13bc822ce','6f6e620a6f98d545f2b2f811bcbfc509c306e350637a9da30cf3789cf4d23f04','594d8fa5884ce61bf482c8849a640ba5bc4d65fb8ae653c728e611acd8270a4f'); -INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'85d639cc8147885470da26d3c0470dba0eb8b6870d5941b12bcc4afb8fcd9af1','eb9edd0d064d06a686ac0d13fa205ec00528fac8d5f8015a844c002793d6f0bb','3f8e85d10ce3b4d1c4d707a4d01c7a18bfeb7537777333f3ebfd428f7c5abc09'); -INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'eb62ce47d68491a84b9a29b92db2742021881f0274072f1bc39dfef08cd7a590','832a887f89d3e88f7a160e9964f149b43e2d17b6992056ed891d3016308b0286','ff16197dcde7e2c8416d3fb3ba1e349090eccd927b255808db8b9e2275acc14b'); -INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'45e73afbc34855b5cbd342a6fb77545e01f3ff4601a04c6dd25dff665aeff484','910fb1caf4695a56ff0758460360315de5fa707c7539e6635b2e663b79c1a8d5','46c14db1ad928a410d91ac0b62a56ee6a5393a86c6327bd817a79a187d6f43df'); -INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'714702b25559325c7bacffdf28e0af30c47bf48e6b4fda053c21ea31c7604128','fe92c46ff4c6138e38bf8bbcbf7fce7a96435704ff701bf6813bd578ee658d66','82827087869ed7edbec629c298cd1db0a2d35a013dade554ac6e15069c848a32'); -INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'b305741a1e277ba0ce8436b914784ea0156616ac308282a7f29dbca62a54cc82','9f117411e12c79d8aeff572d38557aba705fba98a582eb7c904547d4b98c849c','1125d0e3c29a060de7c5b17c803cb5f824fc261b6f75d812aca84fd00a08855e'); -INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'1f833f7396917e02b4b65b0a05d19754b6a53b030b659514d0c21cad062d45f9','82717df675ddd18db4e3b31cab7cee046ec2cac9f93115e16b6fed204f578bec','46e3e8f6710668145a25f3fbf3e9b418481f41245371b5011aaf455b0a5280e6'); -INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'47b38906beda7ad735a86b9fd63669b0357b7ae0a0c1a54c9827bc8b90185626','869287b16ecd6d37978415e85ca685664fc654d5c5a2cdc69cee42a25c2c943c','629f9238d8817cdac8ced4046d772de5cadb8b594933b6dc36dc570764ac02e4'); -INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'e69f6c9b649ac04920be70f9b076f7909bcebd8312afa715be3d8922794a72e7','af2b090ab226cb1670a439146f7f5d04cca0a954d0414ad484f0b37f736939fe','719d7ed7dc2411d33379bf413b39b602a7ec39b4d8a40e9a7d20c23227d40fee'); -INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'c51828b04433b000787c92eaa7e5abd5cc0bc31c619cb8479aff675af6e00c55','716d54984cdde7af3ae3f09f6f2a57facc6c7d6d42b376db11b8a6cd5aec69e8','16004853df37628e4e45a483db312351f87dd4c6239e0f21a3321f52b7150c56'); -INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'26d91568af76b5ad4b357693ecb0b9341aabbf5de5d5c83f9998dc2f95d76e5e','fd2fa390881e6c3013b5345676a15c3319dd6a992761f56d619e398ed02ae066','d638b387d26a6e177d6fd5e0955f1f501d355fd3f6b88821949fac193c4b1822'); -INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'21f8da71c386ec1e5e31a35c1190b895f2df52529ea028d5fba25e0d57616952','5bbcc16971f6a3f1f5607929e3f3903d25f25c3e3f750ccd141a347c21205aea','a20c9a03215af5a08cd6bbe3487577941679ecfd7a4a75ac282ed963a4c5b0d9'); -INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'1c844a38fc28e83406c8019615d0c24a1ea84e6ffe4da392d29f353ca676001b','999e6727376634afb0fc096ea67c82d631f8ea15cbf4e97b18053970acf5922d','b312a34d1752a2cedf6b83da9c3bf7b60ef6f718fe3467cc5b36ae72d46f2728'); -INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'0533bc0d3bc008b5d65932c569e9f85e3217ea9efbb8937935be93b7a01ec2a8','4a7e000be29a63bb4690963b2df73a38f734aeebac2427dcaeff30c2b5f2702d','1de7c13955353956ad8570dfc42bc17b9dfc81e20ca50a4d69ff8095bd6d9a46'); -INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'b5f0b7406fe3b6dbcbb5c3b28fb8fb119e237f07532f500b422058ba898e5b22','0c341a553bea7716a404584e7a0654c47f1ba93300b1f4504424731fe96559c7','1b0a73461bf79f4d23c99d0fc740aa94bb3ab590364b3790f64f910320bf48e8'); -INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'7519ac8cdf4c13b25929d913e3858855aca68bcf3fe6d3636e7371894af27f04','a057f9bce56a71447159c678c331d87b756cda7aa7b43b4b611ffb177f88009a','3dae5370d2ea5db2f2849fd2f085dc554f042fe8f7d7ae539dd67927681ba5a4'); -INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'f417da67da0c23d4bc44bbb864de5b94057916e28502641ba70764f44165a1fa','3c30ce8ac0e86c4d6112ff3f5edf3c79caedaa017fc11ed4975513305aafac05','627179575b75861a538d859646c54c104d9bcf39e7e6ab76429397a50cbcba14'); -INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'098eb6f2b0a1c584d969167f50bb55383ab71593ed1f0ca61d83c4513a209107','21459b2eea76ad07d7167d9d8e94926a2c010f013b617293fa45ba0f6b0433f2','4e9ed12f40fff80de86d3c75a6b780a582758380795a28805d41a47cb5820245'); -INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'a4aa60a1320e47c975628f6650d8fdc44b6a729d26a3178031e32fcb48b59491','38e3a2863cea90961b26ccdd09d0d99818ea2b9948535fc4595cf8581650e753','dfa8278ff3e7b8c5763f69d2c64f4527459c771a6fa4fffe395482ec523a1238'); -INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'cc5b2af6948531b635b18a4b6698efa318190762c8e4419aa9ca3634e7ed5d1e','7e051aa05c2bd64088b85c3783036be8c803dbb6509d1a31eb2a6a68d13e31b5','c0f88a7b0c2e64b3d720226125d652234ca6070999d0839734888cb357a95023'); -INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'7ad02b4853bde78025942e9f58c212a76c1828337610347e516d4a359af804b5','c3e9d502c2c5238722bcd873a2dcb1693fd3c24d875251307dc5c5f4120d397c','6ddf554972d28340b89c6f308a04f9079f12bba309070de3d33d36ee6084b4fa'); -INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'64a91735950113c13603e49ca549fae9b30092a9fc02d53a32a20eaef64ab6ce','c976812cc0c7d4bf6ae5eb402951aa7cf6cdee978b6e3f3bb9133d121d7674e6','d742fea45e4658def58614deeef3600403bc8e45694bbfe9e368b81dd7ed9769'); -INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'68107847c7a9dd19612d8b47c1a39cdc446c752f2c05ea8fcd961a42f835d155','af06ecbfda388a9f33ae9c144f13f0e3708707ba1a00e0a23c4692628c253040','d78f1083b6a679bf94ca19ae4d42b552b56d9c2eb280f54dd9ff9ffc07bd0f98'); -INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'64d4d51adb6994360b3dbf04663c4f067ba223e62912fe1c5a96a190225bb54c','3a5e8531b6407d93bd30fe8da27ff7046d98b20ee28919d47cbb07d7d25b9884','3597cd788c0e50e3bfbc569cca403d034c693cc852aff513927945e35311fa69'); -INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'3ba2d7685f63962f576e9fa94e4d6709ace95249a3064804c3822078c982d11d','c7d4c806368397617b24c946b4dfb87ff855f0c25b68e13ff7ea7f441554d4c7','699708a3d4ce9b1603b44d913960289fe4cb53e8eb73b55354fbe59d0aa72538'); -INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'6502f277568bed2705c5f496e278e5d99310ff6705751a3999cb4b2bc7d725bd','bd8d675bf1f7e8894e1f5d3b182ab58dddab06e5ae12cc7e6e2cc04504da75fe','0ad91ed91b36a1fdd35d29ce23d8efd1d5865e97e335b30f3d0be355454f89c6'); -INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'5dae29289f36e64b87d56f9870af0bd5ad77ca45f1093c1a41140ea397945130','639e599a27726f944b038b255ce2911b25961e63e1b6fcb954ee07f646fbc42e','fc33bc2c0b56db9fcc80b477c0520c667a10c0b2075ab651ba0357732c211f50'); -INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'d5dee49d7b78e2ce4dd2a648e345a52bbfa7e0e76de9e970b1dc0b6aea66c130','cecdaa798e47384a7883e4202d61a0fc45adec6d4ca885e09751ead10d8b9595','08a52ca8a0e2f68120857a65d8dd173d0db01af1a83961f999cc5b7bbe47b46b'); -INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'2b4c97a93933b8986ebb061d47f2e8bbb1672206058ae3c3ae388bab36b8cbc8','208f3147f4fdc806bcd269823456ca2df722fa93af780fa55e9ad0e7b2a95dc9','20215f8a8d57924563281285da6b514753f7c0ddd28b13a15280c77614fe595c'); -INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'115913763ca7ef5691512a5c6d47cbd49203aee8a3242928f62640912c935872','78c3fedc2c265520f55db661344ea78dd2d16401d980762199837c772519a8b0','8a4469e4b1ee45e6dde2b28fde6ad6e85ecebaafd7529cc58a02591a8b29c7ce'); -INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'72f24dc53c759a08aeb447d826bf64aad71ca8f4ab9640e30e440e6bc050a0eb','c71d55def75bdb498d6f948caa44fe55d46ba71acc0886651266c6d131cec559','91d48516979ef7495669c096c1ef16d292f005b6eb7d67e1f3811eb05d0917f8'); -INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'07846004f2da033bfd113e13040b0d0d605375370b7437e2ca2ea9467fc80c1a','b2735a2a842a503c89afc1c90304ddd8da7bc692e0eff19b8d86ee55075194d7','8114c941d23cccfe53d2dfbe666fe7b2d959a295c9a6cb4777ee352ac0ee840d'); -INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'7bf9a701337c043a7268cecca5ff765c24600a2056137cd03e3ead9d64ef2348','a02de26a4e8122213b0ab141ae93496f4154b9d1b64568b7156699264ed14fb7','476a296f1ee0eb438be31e0ac62f7ddfc27ac30f75d1ecb738627ab2150a5f2d'); -INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'d544aec17018203fe2f5c9bda52a5da53d41d3364b8026770d1f620aa53e6c36','270fcdc8fee70e7182e3622579517b713de2b60732356e7ba22b9b50ffd754a3','ef724d8981790570757aa09edbe185564b8c919125d0e8ed82f540c706cafd33'); -INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'bd3044c66f7e2c24944a9c938b8f162ac8f566a1338444c219396eadf5179d3e','4f81406db3d7d9723ecb777b8ffb72faec34bb05ffc1e0ee613b423bfe0c8a97','48041a9db80435cccd5fead9ab3c6f7bfd85e226c8774404d482252a74434294'); -INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'b19346f726636aa9da55af6106a471c596a7f7b93289b70d3d33b45334bca9d3','550a4206eadac15513068f3216522d2d024c8e0e0a2c1f3023e32c984dc97f76','7ec7aa164f3ec7e32411f57cceea5694a356e312495505b840a982c431fdcaff'); -INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'35c2ad9ccd3bd68cdb0c4d8fd4e30938521b8559c1cec331a29b1802d649947a','cce1eba738fbb2dddd26de6bdbc4ed4c75615f02675caeec39a82cc285388bd0','dacb3cf0b7a9a695fd213edae466a2cce39cf130135ba074262245ba6ffab33c'); -INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'e9a705d6661f0345ffe0f45ae26c0d6ba6bd5a125eef2f0e9558d0702ee6d63f','13a8005d8cdd9313f93befb454d357e37bee259491546f56b929f3389e715a36','951070dc6b635132b069013ca51b281a2083788ff8899662641b6836d7155300'); -INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'61efe4d33a7f70cae34df86753532aee25fb0b153744acb962142691f6979482','4ad1f8cede498715e722cfd2398df7533106c9af5c5257c11f16317fc31bab0f','cfd5137f685dc70f425deace09186a4f85fdcf1ac285077127dca8a8552c581c'); -INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'59d9785e783c59c12783977087ad439b2dacad9ae1ef2be6384bfc9036da9804','338c218ca64049390e5d08bee6866286b935b4470a484729f03072e787506d31','de2a13b4cdfa3f3e63a3a08a136758ce59fcdf38f6f5aba3705b3171180c5157'); -INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'e257d59ab5dfb01b8396bd12d2fd169f9ac7629365b90bf6e593e627738d3754','46692735a1e9308a4c19d48ac2a2f8923b407e83abbf7336f58bc043c169c83f','10f33fca1f6e6c10f3a0dfde4e174d12988eeccca87527fad439600a39cae6cd'); -INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'0dc0317a88a6fc4ac791cd4d45edcf2a142fb83aa2e8a2f299fcac48a2c2e04d','b8fdb96d207e7f6cc71fcbe05a22a04c302a01241971a3170956aa467d1596f6','d5daec11190dbe5bb5dd20d0f5d099bf258fed6f766f8e4a1d7c3a59c7ab09ad'); -INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'892d6a49aebb262f2a626a35c0806c488c836c04d33122c2d65ecd8904fe3d85','9dd1f980327a809cf8b31ea01286fd855bb1dd85bdc3d475d58111c95d52bd0f','ae1d5acb2a78e6f5eafcf654f1bb24dddfb8e63eb7a799527a3f228f148f9afa'); -INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'e345abbf8dc42737a9f2dd038534409200d63a9ebf5d1cbf3344ea9413c388c0','1a7435f93f3cb56a2ae83ce2dc78b55779225378b1a36c4b97b1d008f6963d67','8ae8970730da54936c74b882d91f9f2e254ebb1952108bdddcc078fedbb2da2d'); -INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'84ec781d054c0602ed97384cd32cd060b938627ea490a7635fa3ac0babba94cc','109780242a89ae614be1c96ce4391aad7f242b3c0d370f517478633630f2a96c','1509c75817e6c1512d1ccd95b4d08e02e4ec412581cd3ce778c4222d5a092665'); -INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'3478612a8bb95c2966891fb4d1b35493a1342364a6f08404b83ac9fdda763aa2','46a88b80d3770a38d510b1a7ee9d8028ce0798d1b2975b4fbbe0e1eccfa12dba','0f371a0ef51c5998ac4168743902c60658f267a8265c3aca4b6ce3fb89339c77'); -INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'c532c4c5f5e2ae1026ec2582645d9aef06afee46cb9781427a1f40667378ed67','7aeddfe04577eeaf61b7c71e4b63c8b009fd2227e679aa27bc22e4066ac27811','b1327341f8c1256b2952aaf4562df80600540f859ae6a25f0e4706dbb957f235'); -INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'5508189396fa6dfe63a7d06fe97a3073e986eb305bcb49430157f99e3848cd69','4cfd1087a4789373836fbd1a31f6873185f0304bf64ce5f3895ee988fcc0338d','8c7df8ca16ce0f9b665a2791d44cace6513845d0e47b71a7d54e2e1bf0a1d3a0'); -INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'9b0b5d09dc7aaffaf5a3603fa2b914c54b04755a5ddbf83476320149f802292a','81fd7ce211b11f652339f11a1b1e95cbcb304741e97e29112f405cc487a29075','9168c0d40d5317a32084df690026527a41113735a61c464f522ff141f9fd0525'); -INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'2e40d398c2eb131e195a667f1b2b5e8de29e80423a2d0dd3935fad6dd7cc919c','85d7eddd14da0974911b3e947a0dd78f99f0d3f938265a0dab768cac9aa1a82c','382572a7fc4b8312dcd5b9e36526dedb2fc2394f7be88036f2de8ee6799507d9'); -INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'763d3d949dc16a797f5b8a2f5a27fd34b4636fa3dbf33eabed5db048e1a848b4','ba9dc690ec2c3d5855411602b832f749f2157aaf0c34927c0e30f581d7cde88d','241a6ea7b3f1e342807039f52c0a238875e1b93c7696530b1f4f2224769550a5'); -INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'d9b9d6a52f757604a5652aac64c343a47a928160790963521ce33d125486cb0b','ae2cd7b218ae29459eaa5c37591d03548064a9abfb798edd460d537b5bad955e','f7772266440afe5f6658577edb9bf55871c72c322aba774c085d005572d1c083'); -INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'9c1a650b6029cc982e9e617b619da6d88878453ccea68ff82047581d5cc74e9c','49fc1c95438bea571ac3792f957d120a043052c84bef527944a71f72c0c648e8','42ef438ffea4b2d6ee168d709d4fd2e87879de26196fc3f6e6199b9b64772bac'); -INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'32d648a0d0b99f6826376e8badb278c06f95a0ab781cd873e2f7f55219953b01','c4db03f3ce5413dbd93cf50626abf6f3e071dcffd64fd1bfb17e504c721648ca','ec06d2b3b0c5785fd4097550ab2715be18dc8a8739598949ae3873d93ee45dde'); -INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'67cd615e67e397cae8195fc8753403563e9100ecd623b2796a46b137ca553be2','4a9e549e876dc7184994079a3516016dd2d43df9a8b5eeccec63ed749fc5a0fa','1f43e44ad6e29ffad7b7899f9557f906635bcd495b763721e0eeb21359dc87dc'); -INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'d636f3831cd35437271557e6299024d70c4be6b9a685a4fed61e7d67e61540dd','9451d69ee4aa1a5cde6da6aeacbe83a322827f00a84d4f24b09bd8d4e0029fc2','54ebd35e049888f5a7becf27d57bb31ee2ff99d4622f9550624bff9caff908ca'); -INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'abf96247f6b99a24e518d89162c23cffc821d5cae5703f5b7c7c4587e34cdf98','37789688998b00890b8c913d3d511160c1c84459030bc84d1d52be5fcee98c05','fe47cf1f994361f3d21fe05005b727a83a1a0570c0f230de592d769be858e461'); -INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'06aeace2e79321c6776dd1098982e71bfc0baadc55470721022db67a03bd4478','98f1c721841f2231a10f0681d6bcd3d9f9c96615a9048e5fb627da7ae7b29b76','d99a3cda8b6f3c32894179c7c6870783103812e006ab965a5ce93f8ad3a6c9c7'); -INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'ba2c7078ee940b14e584459985a5a4785156762135541d40a138c31ff9bfe4fb','423a2ec04b007dc399577b9770c0ea4550ddd80a248dedef943c8aa037d32e15','c1687dcbcfc85b1d871986196684ed783e69a629b618ee782bb8b389583180ed'); -INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'af327b161ed9fa8022f3efd81b695d25ad9ae8f250a6d08739a40b0883262045','9752bf5b9fad613ed3644fdebeaef13b1f08cc5c4e706f673880b38fe4e9fe4b','01581ea2bb44e44ee07b4a906d8eaf1c1f2d49bcc737565744999db0c298affb'); -INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'2c4d6568a9c77737c5942fab33613a1ef055ce21b9f0a9b4a42fcdf6e9536a59','3ba24d5fa327209bd5c2f76e3dae67123ea8e56b0156865f8bd696069b36bb74','8107d400a5c924139e601a04c1313245d2c2e758367d45f120220efd7b8c056d'); -INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'0b8dcdff637e5e60ae045d4c7646bd47e6047fc992860c99dd422477b9a90d74','146cf7a8a96c630713623b12781ec472098c68ab094963f9e3f917a06517be78','042e96a8433592925fb372125b2ccc11ebb665708d363ed78e64889d0361cf73'); -INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'eec6578a8bc1f5766427f4753ded18cb97c53e710f5fff8918bbdadb59678f64','6b1f9ee4a780db18f16515169ba5054bc954c9244cc26aed115bd8ac954a7111','68d665713669f6f7f6741377373571856a1fea2129d7eaf21d0bc250e4809fe6'); -INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'a2b2ed6a61f1c9a3d322a050178c6be119b89d1a0795fa9c9d7484ad8edfcecd','07e3cf78ea2c636d0483e81130af4653b480516af6ed23f3df7c8049b53e2b81','838e6e2f95f5f33f2a6e994902eff25b3ba4fe0f93f53f142a2617a258ae4eef'); -INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'02828eaf91883ad16beb5563f9c84cb226269c655a886857b31e5e150a1053ec','d5cfba201a7f7a2e0ec544e5fcc319881f3b55040aa2b294903323d930726a2a','cd5407c328bd7351ff05c159dbd9f5b7144f00bfdf4fd0b4bf92fa46b3f226ea'); -INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'5427b45ed778796c26d0d2ddf73e975856cc9ae081c36762e78d046f6cfc376c','aa42f8942f1a719588727f55af6e83e0aa2afcf9b3de1e6d4c9b993225ae1fe2','24572af86c16373e50ccb1fc6d896c1a450b7dd6dea8fa534252a7b96cc5fab9'); -INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'34c2664f81b1bbb53c728636097bc4b7cede67bb318ddcc5e5e6b5735bcc55a7','ef8fd1cb67ee3bcdc6516611aca6c0550978e937d0b564047520185dcbac3927','d124f833995efab602cc5fe03615f9fc5960f582ea84cb6eb2a82f525dd356f5'); -INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'14615dfa6194665d43cf2f495b8f65fb9efa04c2e90885172d229ad4a9dd2358','c542217765036a1e9dd3f5b797380aa873d07d80ccbc6aa58450f00c5aa27722','648cab026a903fe5419835a3fbd1d9ce799b8153eefdb8e53acc7ce385b32308'); -INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'fc0f077548225d481384a1aba2d91ed4ec8b2df0f0a57ab603305c615672b25f','7d97c0240bc1225c7de8e83f2d62c52815f63565764d2834fbfa7948c722df6a','72198bd48762bed9823f3d4f8463d27ddbb60302a19527bc791276bf1b03a1d6'); -INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'5749263295014a597071acf2293fcd185d02a6a7b3a96df859aae3bf146b276e','0ada5941389f1e488689a1e207ed65addacfa38924b85b67c70dfff7a9753f63','67428a1d395da8564049e3bce395c430cc1da2f93d5e3452310ad144eeff8a93'); -INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'ae369a1ec3e4f2aea602eab8c7ab1181cacd6b8d01582c96c4771fdd7b3de771','a4f1d449de498654d26a8e5b935983dc49fa4ec70f7664fc50d3602313a1b3ab','63569eb1bd2bd1800815e16a00c27b5967cb5bc249ba9748b9682141610cde8f'); -INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'06a2ac591c418d2b01c74edf2524100afd1140c3933f32120c4cc3180c1de3f0','575e00bf030417f5ac76a3ed727583493f8a2cc28f9e79c0714c7ea5a76075a9','130a2082842a63456d0fcd5b7e1723505264b18b293015b2f7b3f834f049baf7'); -INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'cdf0ae4d5d06b8735e3e62f5a76a902fee40742fc760578dae98b43635f2e57a','432afd7d4e814fbaaa20e68b2b2c662a880df4764e361e54cc318b8472716b64','f1ef1f5ab2c26a2b515365f82dd783c91a1259b60adc51c65190f6cfbb79f300'); -INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'77d836433add0cf3f7691884ec1607dde9a3996df00128703644527fb096bab5','16ec9aa7e21e365a9d2fc6398f6e4d6890c630a2726aec3b5847b7e559e6df4e','4561a4167f49daccb6c1bba59eb022eab6313df17e2b4a8d624c4604a7efdc17'); -INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'770a0187b5c98725dc32e15a414b9323030f407749fcb0652b1e1f2e4e762e7e','c6b37ce3c996f28d687cd9c5101fac7b2e7ae69cdc63cd9374b17372024070ac','dacdcbd6fe404f84234228ee54adef018770b985f8a8616493040e87a7debe31'); -INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'567e91f9456ecd020fbd2fe940d796ac976981485f870db8cb0bc41d77a0fd0f','fce454ad4a8b0a2c8f92e17c1463eb9aef99208f760b337a6bf35777ea34e3c1','06d2efee7ff3cda985e7a0b0b3b7c0216e39f57eeb9a7c4097667db760c30ec5'); -INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'447ceafb93aeb346eb98d87db46f07f4d1f51ffde3d44adc6056a624bea3b0c3','e5070e9e92b3dbc7f23816cf886bf8613c2d7b5cee173e550e2444933a9555de','ca03ed191a0b8313f65b3122477c0f7e99094dc564b93494ca135e1f6d59c540'); -INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'f510ec6201f4eb850d4f62b399d0d360d0d8cca7e3d955f849ad59a22fba1677','799942a652cf2c43577024c3919d94de5304970b635724681b36a3e159f74583','c65468958bfa35d9b7d0a33c0459f468b1d266cb50bace1ea6f6c9282adc0359'); -INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'1f956e2c07defac832b7c90982c1e7a1192988c4d1e622b54b40b78065deafef','022b330e16bad0cb30cefda8eb3d4f3ee254c74aac45b8bd2e4e69b109f27bb1','054b052a25c0490b7c788d8505ea923294f11876a70b07a7697e5ec672ecbdc3'); -INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'ac4cc3e01feb10ba2211afdff4ec43a4ce13a12e1a90dc6f675c390e6395b1e3','bca8bf67cf6c1acc9b372f7dc42d24ebe9e8105fc6f60531266d87f302133bf8','0c82cafc468018df1e526dbea1c335557df2ce24e7b445fae730d7d5037aa489'); -INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'0a4bb35bf922a8175ef5559e74084d32caa16f599df84adb5e255de26b92c1c4','b40ba71782bf73afcff1a24d6237aa5e9347a0dac5d4adac62199000855b7124','ba6aa20abb3070fb76ffbe81bbbb1f762aed7c4e507cf5e02efbd2115dfc81c5'); --- Triggers and indices on blocks -CREATE INDEX block_index_idx ON blocks (block_index); -CREATE INDEX index_hash_idx ON blocks (block_index, block_hash); - --- Table broadcasts -DROP TABLE IF EXISTS broadcasts; -CREATE TABLE broadcasts( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - timestamp INTEGER, - value REAL, - fee_fraction_int INTEGER, - text TEXT, - locked BOOL, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO broadcasts VALUES(12,'413519ace5af8085631c26776778cfd40f618d5dc631f906d1f52b70264b9f21',310011,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000000,100.0,99999999,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(19,'56f842d76ab0841e7f5c109c5add9eb46f44c88d14fd68b6f456570813f9e0c6',310018,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000050,99.86166,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(20,'5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45',310019,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000101,100.343,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(21,'c522e7b202315126aff183b3939a3ce5d8ddf33639a876d1e8a6eca93759d576',310020,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',1388000201,2.0,5000000,'Unit Test',0,'valid'); --- Triggers and indices on broadcasts -CREATE TRIGGER _broadcasts_delete BEFORE DELETE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO broadcasts(rowid,tx_index,tx_hash,block_index,source,timestamp,value,fee_fraction_int,text,locked,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.timestamp)||','||quote(old.value)||','||quote(old.fee_fraction_int)||','||quote(old.text)||','||quote(old.locked)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _broadcasts_insert AFTER INSERT ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM broadcasts WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _broadcasts_update AFTER UPDATE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE broadcasts SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',timestamp='||quote(old.timestamp)||',value='||quote(old.value)||',fee_fraction_int='||quote(old.fee_fraction_int)||',text='||quote(old.text)||',locked='||quote(old.locked)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_source_idx ON broadcasts (status, source); -CREATE INDEX status_source_index_idx ON broadcasts (status, source, tx_index); -CREATE INDEX timestamp_idx ON broadcasts (timestamp); - --- Table btcpays -DROP TABLE IF EXISTS btcpays; -CREATE TABLE btcpays( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - order_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO btcpays VALUES(5,'c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117',310004,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',50000000,'53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71_cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16','valid'); --- Triggers and indices on btcpays -CREATE TRIGGER _btcpays_delete BEFORE DELETE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO btcpays(rowid,tx_index,tx_hash,block_index,source,destination,btc_amount,order_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.btc_amount)||','||quote(old.order_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _btcpays_insert AFTER INSERT ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM btcpays WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _btcpays_update AFTER UPDATE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE btcpays SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',btc_amount='||quote(old.btc_amount)||',order_match_id='||quote(old.order_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table burns -DROP TABLE IF EXISTS burns; -CREATE TABLE burns( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - burned INTEGER, - earned INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO burns VALUES(1,'c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5',310000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',62000000,93000000000,'valid'); -INSERT INTO burns VALUES(23,'3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22',310022,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',38000000,56999887262,'valid'); --- Triggers and indices on burns -CREATE TRIGGER _burns_delete BEFORE DELETE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO burns(rowid,tx_index,tx_hash,block_index,source,burned,earned,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.burned)||','||quote(old.earned)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _burns_insert AFTER INSERT ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM burns WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _burns_update AFTER UPDATE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE burns SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',burned='||quote(old.burned)||',earned='||quote(old.earned)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table cancels -DROP TABLE IF EXISTS cancels; -CREATE TABLE cancels( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - offer_hash TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on cancels -CREATE TRIGGER _cancels_delete BEFORE DELETE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO cancels(rowid,tx_index,tx_hash,block_index,source,offer_hash,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.offer_hash)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _cancels_insert AFTER INSERT ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM cancels WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _cancels_update AFTER UPDATE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE cancels SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',offer_hash='||quote(old.offer_hash)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX cancels_block_index_idx ON cancels (block_index); - --- Table credits -DROP TABLE IF EXISTS credits; -CREATE TABLE credits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - calling_function TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO credits VALUES(310000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',93000000000,'burn','c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5'); -INSERT INTO credits VALUES(310001,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,'send','062d5d8a8262f91cc16de8833e429bc92c0a4f63f61c4c8048a41bc254b97fd3'); -INSERT INTO credits VALUES(310004,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',100000000,'btcpay','c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117'); -INSERT INTO credits VALUES(310005,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',1000000000,'issuance','ff48da90dfe51b4aa156b69cbda46269886a76a44613a217f1e8dbf172495e12'); -INSERT INTO credits VALUES(310006,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',100000,'issuance','ce78de24c5c55bbac91a3c08e92f4e817fa0cd73c65a5136aa3ded1c7284a6ad'); -INSERT INTO credits VALUES(310007,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,'send','f88727652b1502fabb4c45190bdc56b100a3d384bf5976311c4b41f433420bfc'); -INSERT INTO credits VALUES(310008,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,'send','97e94072d8a73bd1bd2a00a3a48424207dd9ee5c56ba349dfb621d6057870f95'); -INSERT INTO credits VALUES(310009,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',24,'dividend','a0b04ac9dd798854a39b5905235237a6cbbe2de50ffd49694a3002d1543f5536'); -INSERT INTO credits VALUES(310010,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',420800,'dividend','b93ca7e398b5ffe8173673d93ca9b39984ac9b0bb19f1de45c7c0730a8877690'); -INSERT INTO credits VALUES(310013,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',4250000,'filled','b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839'); -INSERT INTO credits VALUES(310014,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',5000000,'cancel order','cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16'); -INSERT INTO credits VALUES(310015,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0'); -INSERT INTO credits VALUES(310015,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0'); -INSERT INTO credits VALUES(310017,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685'); -INSERT INTO credits VALUES(310017,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',0,'filled','4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685'); -INSERT INTO credits VALUES(310018,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',59137500,'bet settled: liquidated for bear','56f842d76ab0841e7f5c109c5add9eb46f44c88d14fd68b6f456570813f9e0c6'); -INSERT INTO credits VALUES(310018,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',3112500,'feed fee','56f842d76ab0841e7f5c109c5add9eb46f44c88d14fd68b6f456570813f9e0c6'); -INSERT INTO credits VALUES(310019,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',159300000,'bet settled','5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45'); -INSERT INTO credits VALUES(310019,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',315700000,'bet settled','5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45'); -INSERT INTO credits VALUES(310019,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',25000000,'feed fee','5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45'); -INSERT INTO credits VALUES(310020,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',1330000000,'bet settled: for notequal','c522e7b202315126aff183b3939a3ce5d8ddf33639a876d1e8a6eca93759d576'); -INSERT INTO credits VALUES(310020,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',70000000,'feed fee','c522e7b202315126aff183b3939a3ce5d8ddf33639a876d1e8a6eca93759d576'); -INSERT INTO credits VALUES(310022,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',56999887262,'burn','3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22'); -INSERT INTO credits VALUES(310023,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',8500000,'recredit wager remaining','c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662'); -INSERT INTO credits VALUES(310023,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10000,'send','a0e06860c5e6db0aa890002288d961e6dd1a8dda1b030a364325879d1b6b535f'); -INSERT INTO credits VALUES(310032,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,'cancel order','adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d'); --- Triggers and indices on credits -CREATE TRIGGER _credits_delete BEFORE DELETE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO credits(rowid,block_index,address,asset,quantity,calling_function,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.calling_function)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _credits_insert AFTER INSERT ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM credits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _credits_update AFTER UPDATE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE credits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',calling_function='||quote(old.calling_function)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; - --- Table debits -DROP TABLE IF EXISTS debits; -CREATE TABLE debits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - action TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO debits VALUES(310001,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'send','062d5d8a8262f91cc16de8833e429bc92c0a4f63f61c4c8048a41bc254b97fd3'); -INSERT INTO debits VALUES(310003,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,'open order','cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16'); -INSERT INTO debits VALUES(310005,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'issuance fee','ff48da90dfe51b4aa156b69cbda46269886a76a44613a217f1e8dbf172495e12'); -INSERT INTO debits VALUES(310006,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'issuance fee','ce78de24c5c55bbac91a3c08e92f4e817fa0cd73c65a5136aa3ded1c7284a6ad'); -INSERT INTO debits VALUES(310007,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',4000000,'send','f88727652b1502fabb4c45190bdc56b100a3d384bf5976311c4b41f433420bfc'); -INSERT INTO debits VALUES(310008,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',526,'send','97e94072d8a73bd1bd2a00a3a48424207dd9ee5c56ba349dfb621d6057870f95'); -INSERT INTO debits VALUES(310009,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',24,'dividend','a0b04ac9dd798854a39b5905235237a6cbbe2de50ffd49694a3002d1543f5536'); -INSERT INTO debits VALUES(310009,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',20000,'dividend fee','a0b04ac9dd798854a39b5905235237a6cbbe2de50ffd49694a3002d1543f5536'); -INSERT INTO debits VALUES(310010,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',420800,'dividend','b93ca7e398b5ffe8173673d93ca9b39984ac9b0bb19f1de45c7c0730a8877690'); -INSERT INTO debits VALUES(310010,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',20000,'dividend fee','b93ca7e398b5ffe8173673d93ca9b39984ac9b0bb19f1de45c7c0730a8877690'); -INSERT INTO debits VALUES(310012,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',50000000,'bet','c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662'); -INSERT INTO debits VALUES(310013,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',25000000,'bet','b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839'); -INSERT INTO debits VALUES(310014,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',150000000,'bet','801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29'); -INSERT INTO debits VALUES(310015,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',350000000,'bet','e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0'); -INSERT INTO debits VALUES(310016,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',750000000,'bet','c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83'); -INSERT INTO debits VALUES(310017,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',650000000,'bet','4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685'); -INSERT INTO debits VALUES(310021,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,'open order','adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d'); -INSERT INTO debits VALUES(310023,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC',10000,'send','a0e06860c5e6db0aa890002288d961e6dd1a8dda1b030a364325879d1b6b535f'); --- Triggers and indices on debits -CREATE TRIGGER _debits_delete BEFORE DELETE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO debits(rowid,block_index,address,asset,quantity,action,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.action)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _debits_insert AFTER INSERT ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM debits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _debits_update AFTER UPDATE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE debits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',action='||quote(old.action)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_idx ON debits (address); -CREATE INDEX asset_idx ON debits (asset); - --- Table destructions -DROP TABLE IF EXISTS destructions; -CREATE TABLE destructions( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset INTEGER, - quantity INTEGER, - tag TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on destructions -CREATE TRIGGER _destructions_delete BEFORE DELETE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO destructions(rowid,tx_index,tx_hash,block_index,source,asset,quantity,tag,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.tag)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _destructions_insert AFTER INSERT ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM destructions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _destructions_update AFTER UPDATE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE destructions SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',tag='||quote(old.tag)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_idx ON destructions (status); - --- Table dispensers -DROP TABLE IF EXISTS dispensers; -CREATE TABLE dispensers( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - give_quantity INTEGER, - escrow_quantity INTEGER, - satoshirate INTEGER, - status INTEGER, - give_remaining INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispensers -CREATE TRIGGER _dispensers_delete BEFORE DELETE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispensers(rowid,tx_index,tx_hash,block_index,source,asset,give_quantity,escrow_quantity,satoshirate,status,give_remaining) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.give_quantity)||','||quote(old.escrow_quantity)||','||quote(old.satoshirate)||','||quote(old.status)||','||quote(old.give_remaining)||')'); - END; -CREATE TRIGGER _dispensers_insert AFTER INSERT ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispensers WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispensers_update AFTER UPDATE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispensers SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',give_quantity='||quote(old.give_quantity)||',escrow_quantity='||quote(old.escrow_quantity)||',satoshirate='||quote(old.satoshirate)||',status='||quote(old.status)||',give_remaining='||quote(old.give_remaining)||' WHERE rowid='||old.rowid); - END; - --- Table dispenses -DROP TABLE IF EXISTS dispenses; -CREATE TABLE dispenses( - tx_index INTEGER, - dispense_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - dispense_quantity INTEGER, - dispenser_tx_hash TEXT, - PRIMARY KEY (tx_index, dispense_index, source, destination), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispenses -CREATE TRIGGER _dispenses_delete BEFORE DELETE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispenses(rowid,tx_index,dispense_index,tx_hash,block_index,source,destination,asset,dispense_quantity,dispenser_tx_hash) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.dispense_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.dispense_quantity)||','||quote(old.dispenser_tx_hash)||')'); - END; -CREATE TRIGGER _dispenses_insert AFTER INSERT ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispenses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispenses_update AFTER UPDATE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispenses SET tx_index='||quote(old.tx_index)||',dispense_index='||quote(old.dispense_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',dispense_quantity='||quote(old.dispense_quantity)||',dispenser_tx_hash='||quote(old.dispenser_tx_hash)||' WHERE rowid='||old.rowid); - END; - --- Table dividends -DROP TABLE IF EXISTS dividends; -CREATE TABLE dividends( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - dividend_asset TEXT, - quantity_per_unit INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO dividends VALUES(10,'a0b04ac9dd798854a39b5905235237a6cbbe2de50ffd49694a3002d1543f5536',310009,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB','XCP',600,20000,'valid'); -INSERT INTO dividends VALUES(11,'b93ca7e398b5ffe8173673d93ca9b39984ac9b0bb19f1de45c7c0730a8877690',310010,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBC','XCP',800,20000,'valid'); --- Triggers and indices on dividends -CREATE TRIGGER _dividends_delete BEFORE DELETE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dividends(rowid,tx_index,tx_hash,block_index,source,asset,dividend_asset,quantity_per_unit,fee_paid,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.dividend_asset)||','||quote(old.quantity_per_unit)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _dividends_insert AFTER INSERT ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dividends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dividends_update AFTER UPDATE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dividends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',dividend_asset='||quote(old.dividend_asset)||',quantity_per_unit='||quote(old.quantity_per_unit)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table issuances -DROP TABLE IF EXISTS issuances; -CREATE TABLE "issuances"( - tx_index INTEGER, - tx_hash TEXT, - msg_index INTEGER DEFAULT 0, - block_index INTEGER, - asset TEXT, - quantity INTEGER, - divisible BOOL, - source TEXT, - issuer TEXT, - transfer BOOL, - callable BOOL, - call_date INTEGER, - call_price REAL, - description TEXT, - fee_paid INTEGER, - locked BOOL, - status TEXT, - asset_longname TEXT, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index)); -INSERT INTO issuances VALUES(6,'ff48da90dfe51b4aa156b69cbda46269886a76a44613a217f1e8dbf172495e12',0,310005,'BBBB',1000000000,1,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,0,0,0.0,'',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(7,'ce78de24c5c55bbac91a3c08e92f4e817fa0cd73c65a5136aa3ded1c7284a6ad',0,310006,'BBBC',100000,0,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',0,0,0,0.0,'foobar',50000000,0,'valid',NULL); --- Triggers and indices on issuances -CREATE TRIGGER _issuances_delete BEFORE DELETE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO issuances(rowid,tx_index,tx_hash,msg_index,block_index,asset,quantity,divisible,source,issuer,transfer,callable,call_date,call_price,description,fee_paid,locked,status,asset_longname) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.msg_index)||','||quote(old.block_index)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.divisible)||','||quote(old.source)||','||quote(old.issuer)||','||quote(old.transfer)||','||quote(old.callable)||','||quote(old.call_date)||','||quote(old.call_price)||','||quote(old.description)||','||quote(old.fee_paid)||','||quote(old.locked)||','||quote(old.status)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _issuances_insert AFTER INSERT ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM issuances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _issuances_update AFTER UPDATE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE issuances SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',msg_index='||quote(old.msg_index)||',block_index='||quote(old.block_index)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',divisible='||quote(old.divisible)||',source='||quote(old.source)||',issuer='||quote(old.issuer)||',transfer='||quote(old.transfer)||',callable='||quote(old.callable)||',call_date='||quote(old.call_date)||',call_price='||quote(old.call_price)||',description='||quote(old.description)||',fee_paid='||quote(old.fee_paid)||',locked='||quote(old.locked)||',status='||quote(old.status)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_asset_idx ON issuances (asset, status); - --- Table mempool -DROP TABLE IF EXISTS mempool; -CREATE TABLE mempool( - tx_hash TEXT, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); - --- Table messages -DROP TABLE IF EXISTS messages; -CREATE TABLE messages( - message_index INTEGER PRIMARY KEY, - block_index INTEGER, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); -INSERT INTO messages VALUES(0,310000,'insert','credits','{"action": "burn", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310000, "event": "c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5", "quantity": 93000000000}',0); -INSERT INTO messages VALUES(1,310000,'insert','burns','{"block_index": 310000, "burned": 62000000, "earned": 93000000000, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5", "tx_index": 1}',0); -INSERT INTO messages VALUES(2,310001,'insert','debits','{"action": "send", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310001, "event": "062d5d8a8262f91cc16de8833e429bc92c0a4f63f61c4c8048a41bc254b97fd3", "quantity": 50000000}',0); -INSERT INTO messages VALUES(3,310001,'insert','credits','{"action": "send", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "XCP", "block_index": 310001, "event": "062d5d8a8262f91cc16de8833e429bc92c0a4f63f61c4c8048a41bc254b97fd3", "quantity": 50000000}',0); -INSERT INTO messages VALUES(4,310001,'insert','sends','{"asset": "XCP", "block_index": 310001, "destination": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "quantity": 50000000, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "062d5d8a8262f91cc16de8833e429bc92c0a4f63f61c4c8048a41bc254b97fd3", "tx_index": 2}',0); -INSERT INTO messages VALUES(5,310002,'insert','orders','{"block_index": 310002, "expiration": 10, "expire_index": 310012, "fee_provided": 1000000, "fee_provided_remaining": 1000000, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "BTC", "give_quantity": 50000000, "give_remaining": 50000000, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "tx_hash": "53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71", "tx_index": 3}',0); -INSERT INTO messages VALUES(6,310003,'insert','debits','{"action": "open order", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310003, "event": "cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16", "quantity": 105000000}',0); -INSERT INTO messages VALUES(7,310003,'insert','orders','{"block_index": 310003, "expiration": 10, "expire_index": 310013, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 900000, "fee_required_remaining": 900000, "get_asset": "BTC", "get_quantity": 50000000, "get_remaining": 50000000, "give_asset": "XCP", "give_quantity": 105000000, "give_remaining": 105000000, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "tx_hash": "cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16", "tx_index": 4}',0); -INSERT INTO messages VALUES(8,310003,'update','orders','{"fee_provided_remaining": 142858, "fee_required_remaining": 0, "get_remaining": 0, "give_remaining": 0, "status": "open", "tx_hash": "53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71"}',0); -INSERT INTO messages VALUES(9,310003,'update','orders','{"fee_provided_remaining": 6800, "fee_required_remaining": 42858, "get_remaining": 0, "give_remaining": 5000000, "status": "open", "tx_hash": "cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16"}',0); -INSERT INTO messages VALUES(10,310003,'insert','order_matches','{"backward_asset": "XCP", "backward_quantity": 100000000, "block_index": 310003, "fee_paid": 857142, "forward_asset": "BTC", "forward_quantity": 50000000, "id": "53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71_cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16", "match_expire_index": 310023, "status": "pending", "tx0_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx0_block_index": 310002, "tx0_expiration": 10, "tx0_hash": "53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71", "tx0_index": 3, "tx1_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx1_block_index": 310003, "tx1_expiration": 10, "tx1_hash": "cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16", "tx1_index": 4}',0); -INSERT INTO messages VALUES(11,310004,'insert','credits','{"action": "btcpay", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310004, "event": "c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117", "quantity": 100000000}',0); -INSERT INTO messages VALUES(12,310004,'update','order_matches','{"order_match_id": "53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71_cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16", "status": "completed"}',0); -INSERT INTO messages VALUES(13,310004,'insert','btcpays','{"block_index": 310004, "btc_amount": 50000000, "destination": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "order_match_id": "53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71_cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16", "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117", "tx_index": 5}',0); -INSERT INTO messages VALUES(14,310005,'insert','debits','{"action": "issuance fee", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310005, "event": "ff48da90dfe51b4aa156b69cbda46269886a76a44613a217f1e8dbf172495e12", "quantity": 50000000}',0); -INSERT INTO messages VALUES(15,310005,'insert','issuances','{"asset": "BBBB", "asset_longname": null, "block_index": 310005, "call_date": 0, "call_price": 0.0, "callable": false, "description": "", "divisible": true, "fee_paid": 50000000, "issuer": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "locked": false, "quantity": 1000000000, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "transfer": false, "tx_hash": "ff48da90dfe51b4aa156b69cbda46269886a76a44613a217f1e8dbf172495e12", "tx_index": 6}',0); -INSERT INTO messages VALUES(16,310005,'insert','credits','{"action": "issuance", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBB", "block_index": 310005, "event": "ff48da90dfe51b4aa156b69cbda46269886a76a44613a217f1e8dbf172495e12", "quantity": 1000000000}',0); -INSERT INTO messages VALUES(17,310006,'insert','debits','{"action": "issuance fee", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310006, "event": "ce78de24c5c55bbac91a3c08e92f4e817fa0cd73c65a5136aa3ded1c7284a6ad", "quantity": 50000000}',0); -INSERT INTO messages VALUES(18,310006,'insert','issuances','{"asset": "BBBC", "asset_longname": null, "block_index": 310006, "call_date": 0, "call_price": 0.0, "callable": false, "description": "foobar", "divisible": false, "fee_paid": 50000000, "issuer": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "locked": false, "quantity": 100000, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "transfer": false, "tx_hash": "ce78de24c5c55bbac91a3c08e92f4e817fa0cd73c65a5136aa3ded1c7284a6ad", "tx_index": 7}',0); -INSERT INTO messages VALUES(19,310006,'insert','credits','{"action": "issuance", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBC", "block_index": 310006, "event": "ce78de24c5c55bbac91a3c08e92f4e817fa0cd73c65a5136aa3ded1c7284a6ad", "quantity": 100000}',0); -INSERT INTO messages VALUES(20,310007,'insert','debits','{"action": "send", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBB", "block_index": 310007, "event": "f88727652b1502fabb4c45190bdc56b100a3d384bf5976311c4b41f433420bfc", "quantity": 4000000}',0); -INSERT INTO messages VALUES(21,310007,'insert','credits','{"action": "send", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "BBBB", "block_index": 310007, "event": "f88727652b1502fabb4c45190bdc56b100a3d384bf5976311c4b41f433420bfc", "quantity": 4000000}',0); -INSERT INTO messages VALUES(22,310007,'insert','sends','{"asset": "BBBB", "block_index": 310007, "destination": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "quantity": 4000000, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "f88727652b1502fabb4c45190bdc56b100a3d384bf5976311c4b41f433420bfc", "tx_index": 8}',0); -INSERT INTO messages VALUES(23,310008,'insert','debits','{"action": "send", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBC", "block_index": 310008, "event": "97e94072d8a73bd1bd2a00a3a48424207dd9ee5c56ba349dfb621d6057870f95", "quantity": 526}',0); -INSERT INTO messages VALUES(24,310008,'insert','credits','{"action": "send", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "BBBC", "block_index": 310008, "event": "97e94072d8a73bd1bd2a00a3a48424207dd9ee5c56ba349dfb621d6057870f95", "quantity": 526}',0); -INSERT INTO messages VALUES(25,310008,'insert','sends','{"asset": "BBBC", "block_index": 310008, "destination": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "quantity": 526, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "97e94072d8a73bd1bd2a00a3a48424207dd9ee5c56ba349dfb621d6057870f95", "tx_index": 9}',0); -INSERT INTO messages VALUES(26,310009,'insert','debits','{"action": "dividend", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310009, "event": "a0b04ac9dd798854a39b5905235237a6cbbe2de50ffd49694a3002d1543f5536", "quantity": 24}',0); -INSERT INTO messages VALUES(27,310009,'insert','debits','{"action": "dividend fee", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310009, "event": "a0b04ac9dd798854a39b5905235237a6cbbe2de50ffd49694a3002d1543f5536", "quantity": 20000}',0); -INSERT INTO messages VALUES(28,310009,'insert','credits','{"action": "dividend", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "XCP", "block_index": 310009, "event": "a0b04ac9dd798854a39b5905235237a6cbbe2de50ffd49694a3002d1543f5536", "quantity": 24}',0); -INSERT INTO messages VALUES(29,310009,'insert','dividends','{"asset": "BBBB", "block_index": 310009, "dividend_asset": "XCP", "fee_paid": 20000, "quantity_per_unit": 600, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "a0b04ac9dd798854a39b5905235237a6cbbe2de50ffd49694a3002d1543f5536", "tx_index": 10}',0); -INSERT INTO messages VALUES(30,310010,'insert','debits','{"action": "dividend", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310010, "event": "b93ca7e398b5ffe8173673d93ca9b39984ac9b0bb19f1de45c7c0730a8877690", "quantity": 420800}',0); -INSERT INTO messages VALUES(31,310010,'insert','debits','{"action": "dividend fee", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310010, "event": "b93ca7e398b5ffe8173673d93ca9b39984ac9b0bb19f1de45c7c0730a8877690", "quantity": 20000}',0); -INSERT INTO messages VALUES(32,310010,'insert','credits','{"action": "dividend", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "XCP", "block_index": 310010, "event": "b93ca7e398b5ffe8173673d93ca9b39984ac9b0bb19f1de45c7c0730a8877690", "quantity": 420800}',0); -INSERT INTO messages VALUES(33,310010,'insert','dividends','{"asset": "BBBC", "block_index": 310010, "dividend_asset": "XCP", "fee_paid": 20000, "quantity_per_unit": 800, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "b93ca7e398b5ffe8173673d93ca9b39984ac9b0bb19f1de45c7c0730a8877690", "tx_index": 11}',0); -INSERT INTO messages VALUES(34,310011,'insert','broadcasts','{"block_index": 310011, "fee_fraction_int": 99999999, "locked": false, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "text": "Unit Test", "timestamp": 1388000000, "tx_hash": "413519ace5af8085631c26776778cfd40f618d5dc631f906d1f52b70264b9f21", "tx_index": 12, "value": 100.0}',0); -INSERT INTO messages VALUES(35,310012,'insert','debits','{"action": "bet", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310012, "event": "c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662", "quantity": 50000000}',0); -INSERT INTO messages VALUES(36,310012,'insert','bets','{"bet_type": 0, "block_index": 310012, "counterwager_quantity": 25000000, "counterwager_remaining": 25000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310022, "fee_fraction_int": 99999999.0, "feed_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 15120, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 0.0, "tx_hash": "c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662", "tx_index": 13, "wager_quantity": 50000000, "wager_remaining": 50000000}',0); -INSERT INTO messages VALUES(37,310013,'update','orders','{"status": "expired", "tx_hash": "53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71"}',0); -INSERT INTO messages VALUES(38,310013,'insert','order_expirations','{"block_index": 310013, "order_hash": "53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71", "order_index": 3, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3"}',0); -INSERT INTO messages VALUES(39,310013,'insert','debits','{"action": "bet", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310013, "event": "b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839", "quantity": 25000000}',0); -INSERT INTO messages VALUES(40,310013,'insert','bets','{"bet_type": 1, "block_index": 310013, "counterwager_quantity": 41500000, "counterwager_remaining": 41500000, "deadline": 1388000100, "expiration": 10, "expire_index": 310023, "fee_fraction_int": 99999999.0, "feed_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 15120, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 0.0, "tx_hash": "b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839", "tx_index": 14, "wager_quantity": 25000000, "wager_remaining": 25000000}',0); -INSERT INTO messages VALUES(41,310013,'update','bets','{"counterwager_remaining": 4250000, "status": "open", "tx_hash": "c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662", "wager_remaining": 8500000}',0); -INSERT INTO messages VALUES(42,310013,'insert','credits','{"action": "filled", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310013, "event": "b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839", "quantity": 4250000}',0); -INSERT INTO messages VALUES(43,310013,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839", "wager_remaining": 4250000}',0); -INSERT INTO messages VALUES(44,310013,'insert','bet_matches','{"backward_quantity": 20750000, "block_index": 310013, "deadline": 1388000100, "fee_fraction_int": 99999999, "feed_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "forward_quantity": 41500000, "id": "c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662_b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839", "initial_value": 100.0, "leverage": 15120, "match_expire_index": 310022, "status": "pending", "target_value": 0.0, "tx0_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx0_bet_type": 0, "tx0_block_index": 310012, "tx0_expiration": 10, "tx0_hash": "c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662", "tx0_index": 13, "tx1_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx1_bet_type": 1, "tx1_block_index": 310013, "tx1_expiration": 10, "tx1_hash": "b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839", "tx1_index": 14}',0); -INSERT INTO messages VALUES(45,310014,'update','orders','{"status": "expired", "tx_hash": "cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16"}',0); -INSERT INTO messages VALUES(46,310014,'insert','credits','{"action": "cancel order", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310014, "event": "cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16", "quantity": 5000000}',0); -INSERT INTO messages VALUES(47,310014,'insert','order_expirations','{"block_index": 310014, "order_hash": "cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16", "order_index": 4, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3"}',0); -INSERT INTO messages VALUES(48,310014,'insert','debits','{"action": "bet", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310014, "event": "801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29", "quantity": 150000000}',0); -INSERT INTO messages VALUES(49,310014,'insert','bets','{"bet_type": 0, "block_index": 310014, "counterwager_quantity": 350000000, "counterwager_remaining": 350000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310024, "fee_fraction_int": 99999999.0, "feed_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 5040, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 0.0, "tx_hash": "801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29", "tx_index": 15, "wager_quantity": 150000000, "wager_remaining": 150000000}',0); -INSERT INTO messages VALUES(50,310015,'insert','debits','{"action": "bet", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310015, "event": "e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0", "quantity": 350000000}',0); -INSERT INTO messages VALUES(51,310015,'insert','bets','{"bet_type": 1, "block_index": 310015, "counterwager_quantity": 150000000, "counterwager_remaining": 150000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310025, "fee_fraction_int": 99999999.0, "feed_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 5040, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 0.0, "tx_hash": "e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0", "tx_index": 16, "wager_quantity": 350000000, "wager_remaining": 350000000}',0); -INSERT INTO messages VALUES(52,310015,'insert','credits','{"action": "filled", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310015, "event": "e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0", "quantity": 0}',0); -INSERT INTO messages VALUES(53,310015,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(54,310015,'insert','credits','{"action": "filled", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310015, "event": "e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0", "quantity": 0}',0); -INSERT INTO messages VALUES(55,310015,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(56,310015,'insert','bet_matches','{"backward_quantity": 350000000, "block_index": 310015, "deadline": 1388000100, "fee_fraction_int": 99999999, "feed_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "forward_quantity": 150000000, "id": "801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29_e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0", "initial_value": 100.0, "leverage": 5040, "match_expire_index": 310024, "status": "pending", "target_value": 0.0, "tx0_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx0_bet_type": 0, "tx0_block_index": 310014, "tx0_expiration": 10, "tx0_hash": "801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29", "tx0_index": 15, "tx1_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx1_bet_type": 1, "tx1_block_index": 310015, "tx1_expiration": 10, "tx1_hash": "e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0", "tx1_index": 16}',0); -INSERT INTO messages VALUES(57,310016,'insert','debits','{"action": "bet", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310016, "event": "c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83", "quantity": 750000000}',0); -INSERT INTO messages VALUES(58,310016,'insert','bets','{"bet_type": 2, "block_index": 310016, "counterwager_quantity": 650000000, "counterwager_remaining": 650000000, "deadline": 1388000200, "expiration": 10, "expire_index": 310026, "fee_fraction_int": 99999999.0, "feed_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 5040, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 1.0, "tx_hash": "c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83", "tx_index": 17, "wager_quantity": 750000000, "wager_remaining": 750000000}',0); -INSERT INTO messages VALUES(59,310017,'insert','debits','{"action": "bet", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310017, "event": "4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685", "quantity": 650000000}',0); -INSERT INTO messages VALUES(60,310017,'insert','bets','{"bet_type": 3, "block_index": 310017, "counterwager_quantity": 750000000, "counterwager_remaining": 750000000, "deadline": 1388000200, "expiration": 10, "expire_index": 310027, "fee_fraction_int": 99999999.0, "feed_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "leverage": 5040, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "target_value": 1.0, "tx_hash": "4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685", "tx_index": 18, "wager_quantity": 650000000, "wager_remaining": 650000000}',0); -INSERT INTO messages VALUES(61,310017,'insert','credits','{"action": "filled", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310017, "event": "4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685", "quantity": 0}',0); -INSERT INTO messages VALUES(62,310017,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(63,310017,'insert','credits','{"action": "filled", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310017, "event": "4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685", "quantity": 0}',0); -INSERT INTO messages VALUES(64,310017,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(65,310017,'insert','bet_matches','{"backward_quantity": 650000000, "block_index": 310017, "deadline": 1388000200, "fee_fraction_int": 99999999, "feed_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "forward_quantity": 750000000, "id": "c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83_4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685", "initial_value": 100.0, "leverage": 5040, "match_expire_index": 310026, "status": "pending", "target_value": 1.0, "tx0_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx0_bet_type": 2, "tx0_block_index": 310016, "tx0_expiration": 10, "tx0_hash": "c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83", "tx0_index": 17, "tx1_address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "tx1_bet_type": 3, "tx1_block_index": 310017, "tx1_expiration": 10, "tx1_hash": "4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685", "tx1_index": 18}',0); -INSERT INTO messages VALUES(66,310018,'insert','broadcasts','{"block_index": 310018, "fee_fraction_int": 5000000, "locked": false, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "text": "Unit Test", "timestamp": 1388000050, "tx_hash": "56f842d76ab0841e7f5c109c5add9eb46f44c88d14fd68b6f456570813f9e0c6", "tx_index": 19, "value": 99.86166}',0); -INSERT INTO messages VALUES(67,310018,'insert','credits','{"action": "bet settled: liquidated for bear", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310018, "event": "56f842d76ab0841e7f5c109c5add9eb46f44c88d14fd68b6f456570813f9e0c6", "quantity": 59137500}',0); -INSERT INTO messages VALUES(68,310018,'insert','credits','{"action": "feed fee", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310018, "event": "56f842d76ab0841e7f5c109c5add9eb46f44c88d14fd68b6f456570813f9e0c6", "quantity": 3112500}',0); -INSERT INTO messages VALUES(69,310018,'insert','bet_match_resolutions','{"bear_credit": 59137500, "bet_match_id": "c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662_b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839", "bet_match_type_id": 1, "block_index": 310018, "bull_credit": 0, "escrow_less_fee": null, "fee": 3112500, "settled": false, "winner": null}',0); -INSERT INTO messages VALUES(70,310018,'update','bet_matches','{"bet_match_id": "c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662_b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839", "status": "settled: liquidated for bear"}',0); -INSERT INTO messages VALUES(71,310019,'insert','broadcasts','{"block_index": 310019, "fee_fraction_int": 5000000, "locked": false, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "text": "Unit Test", "timestamp": 1388000101, "tx_hash": "5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45", "tx_index": 20, "value": 100.343}',0); -INSERT INTO messages VALUES(72,310019,'insert','credits','{"action": "bet settled", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310019, "event": "5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45", "quantity": 159300000}',0); -INSERT INTO messages VALUES(73,310019,'insert','credits','{"action": "bet settled", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310019, "event": "5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45", "quantity": 315700000}',0); -INSERT INTO messages VALUES(74,310019,'insert','credits','{"action": "feed fee", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310019, "event": "5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45", "quantity": 25000000}',0); -INSERT INTO messages VALUES(75,310019,'insert','bet_match_resolutions','{"bear_credit": 315700000, "bet_match_id": "801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29_e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0", "bet_match_type_id": 1, "block_index": 310019, "bull_credit": 159300000, "escrow_less_fee": null, "fee": 25000000, "settled": true, "winner": null}',0); -INSERT INTO messages VALUES(76,310019,'update','bet_matches','{"bet_match_id": "801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29_e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0", "status": "settled"}',0); -INSERT INTO messages VALUES(77,310020,'insert','broadcasts','{"block_index": 310020, "fee_fraction_int": 5000000, "locked": false, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "text": "Unit Test", "timestamp": 1388000201, "tx_hash": "c522e7b202315126aff183b3939a3ce5d8ddf33639a876d1e8a6eca93759d576", "tx_index": 21, "value": 2.0}',0); -INSERT INTO messages VALUES(78,310020,'insert','credits','{"action": "bet settled: for notequal", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310020, "event": "c522e7b202315126aff183b3939a3ce5d8ddf33639a876d1e8a6eca93759d576", "quantity": 1330000000}',0); -INSERT INTO messages VALUES(79,310020,'insert','credits','{"action": "feed fee", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310020, "event": "c522e7b202315126aff183b3939a3ce5d8ddf33639a876d1e8a6eca93759d576", "quantity": 70000000}',0); -INSERT INTO messages VALUES(80,310020,'insert','bet_match_resolutions','{"bear_credit": null, "bet_match_id": "c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83_4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685", "bet_match_type_id": 5, "block_index": 310020, "bull_credit": null, "escrow_less_fee": 1330000000, "fee": 70000000, "settled": null, "winner": "NotEqual"}',0); -INSERT INTO messages VALUES(81,310020,'update','bet_matches','{"bet_match_id": "c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83_4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685", "status": "settled: for notequal"}',0); -INSERT INTO messages VALUES(82,310021,'insert','debits','{"action": "open order", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBB", "block_index": 310021, "event": "adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d", "quantity": 50000000}',0); -INSERT INTO messages VALUES(83,310021,'insert','orders','{"block_index": 310021, "expiration": 10, "expire_index": 310031, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 50000000, "get_remaining": 50000000, "give_asset": "BBBB", "give_quantity": 50000000, "give_remaining": 50000000, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "open", "tx_hash": "adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d", "tx_index": 22}',0); -INSERT INTO messages VALUES(84,310022,'insert','credits','{"action": "burn", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310022, "event": "3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22", "quantity": 56999887262}',0); -INSERT INTO messages VALUES(85,310022,'insert','burns','{"block_index": 310022, "burned": 38000000, "earned": 56999887262, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22", "tx_index": 23}',0); -INSERT INTO messages VALUES(86,310023,'update','bets','{"status": "expired", "tx_hash": "c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662"}',0); -INSERT INTO messages VALUES(87,310023,'insert','credits','{"action": "recredit wager remaining", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "XCP", "block_index": 310023, "event": "c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662", "quantity": 8500000}',0); -INSERT INTO messages VALUES(88,310023,'insert','bet_expirations','{"bet_hash": "c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662", "bet_index": 13, "block_index": 310023, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3"}',0); -INSERT INTO messages VALUES(89,310023,'insert','debits','{"action": "send", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBC", "block_index": 310023, "event": "a0e06860c5e6db0aa890002288d961e6dd1a8dda1b030a364325879d1b6b535f", "quantity": 10000}',0); -INSERT INTO messages VALUES(90,310023,'insert','credits','{"action": "send", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "asset": "BBBC", "block_index": 310023, "event": "a0e06860c5e6db0aa890002288d961e6dd1a8dda1b030a364325879d1b6b535f", "quantity": 10000}',0); -INSERT INTO messages VALUES(91,310023,'insert','sends','{"asset": "BBBC", "block_index": 310023, "destination": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3", "quantity": 10000, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "status": "valid", "tx_hash": "a0e06860c5e6db0aa890002288d961e6dd1a8dda1b030a364325879d1b6b535f", "tx_index": 24}',0); -INSERT INTO messages VALUES(92,310032,'update','orders','{"status": "expired", "tx_hash": "adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d"}',0); -INSERT INTO messages VALUES(93,310032,'insert','credits','{"action": "cancel order", "address": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3", "asset": "BBBB", "block_index": 310032, "event": "adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d", "quantity": 50000000}',0); -INSERT INTO messages VALUES(94,310032,'insert','order_expirations','{"block_index": 310032, "order_hash": "adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d", "order_index": 22, "source": "3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3"}',0); --- Triggers and indices on messages -CREATE INDEX block_index_message_index_idx ON messages (block_index, message_index); - --- Table order_expirations -DROP TABLE IF EXISTS order_expirations; -CREATE TABLE order_expirations( - order_index INTEGER PRIMARY KEY, - order_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (order_index, order_hash) REFERENCES orders(tx_index, tx_hash)); -INSERT INTO order_expirations VALUES(3,'53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310013); -INSERT INTO order_expirations VALUES(4,'cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310014); -INSERT INTO order_expirations VALUES(22,'adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',310032); --- Triggers and indices on order_expirations -CREATE TRIGGER _order_expirations_delete BEFORE DELETE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_expirations(rowid,order_index,order_hash,source,block_index) VALUES('||old.rowid||','||quote(old.order_index)||','||quote(old.order_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_expirations_insert AFTER INSERT ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_expirations_update AFTER UPDATE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_expirations SET order_index='||quote(old.order_index)||',order_hash='||quote(old.order_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_match_expirations -DROP TABLE IF EXISTS order_match_expirations; -CREATE TABLE order_match_expirations( - order_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (order_match_id) REFERENCES order_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on order_match_expirations -CREATE TRIGGER _order_match_expirations_delete BEFORE DELETE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_match_expirations(rowid,order_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.order_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_match_expirations_insert AFTER INSERT ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_match_expirations_update AFTER UPDATE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_match_expirations SET order_match_id='||quote(old.order_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_matches -DROP TABLE IF EXISTS order_matches; -CREATE TABLE order_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - forward_asset TEXT, - forward_quantity INTEGER, - backward_asset TEXT, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO order_matches VALUES('53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71_cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16',3,'53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',4,'cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,'XCP',100000000,310002,310003,310003,10,10,310023,857142,'completed'); --- Triggers and indices on order_matches -CREATE TRIGGER _order_matches_delete BEFORE DELETE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,forward_asset,forward_quantity,backward_asset,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_paid,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.forward_asset)||','||quote(old.forward_quantity)||','||quote(old.backward_asset)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _order_matches_insert AFTER INSERT ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_matches_update AFTER UPDATE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',forward_asset='||quote(old.forward_asset)||',forward_quantity='||quote(old.forward_quantity)||',backward_asset='||quote(old.backward_asset)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX backward_status_idx ON order_matches (backward_asset, status); -CREATE INDEX forward_status_idx ON order_matches (forward_asset, status); -CREATE INDEX match_expire_idx ON order_matches (status, match_expire_index); -CREATE INDEX tx0_address_idx ON order_matches (tx0_address); -CREATE INDEX tx1_address_idx ON order_matches (tx1_address); - --- Table orders -DROP TABLE IF EXISTS orders; -CREATE TABLE orders( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - give_asset TEXT, - give_quantity INTEGER, - give_remaining INTEGER, - get_asset TEXT, - get_quantity INTEGER, - get_remaining INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_required INTEGER, - fee_required_remaining INTEGER, - fee_provided INTEGER, - fee_provided_remaining INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO orders VALUES(3,'53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71',310002,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'expired'); -INSERT INTO orders VALUES(4,'cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16',310003,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'expired'); -INSERT INTO orders VALUES(22,'adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d',310021,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'expired'); --- Triggers and indices on orders -CREATE TRIGGER _orders_delete BEFORE DELETE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO orders(rowid,tx_index,tx_hash,block_index,source,give_asset,give_quantity,give_remaining,get_asset,get_quantity,get_remaining,expiration,expire_index,fee_required,fee_required_remaining,fee_provided,fee_provided_remaining,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.give_asset)||','||quote(old.give_quantity)||','||quote(old.give_remaining)||','||quote(old.get_asset)||','||quote(old.get_quantity)||','||quote(old.get_remaining)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_required)||','||quote(old.fee_required_remaining)||','||quote(old.fee_provided)||','||quote(old.fee_provided_remaining)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _orders_insert AFTER INSERT ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM orders WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _orders_update AFTER UPDATE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE orders SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',give_asset='||quote(old.give_asset)||',give_quantity='||quote(old.give_quantity)||',give_remaining='||quote(old.give_remaining)||',get_asset='||quote(old.get_asset)||',get_quantity='||quote(old.get_quantity)||',get_remaining='||quote(old.get_remaining)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_required='||quote(old.fee_required)||',fee_required_remaining='||quote(old.fee_required_remaining)||',fee_provided='||quote(old.fee_provided)||',fee_provided_remaining='||quote(old.fee_provided_remaining)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX expire_idx ON orders (expire_index, status); -CREATE INDEX give_asset_idx ON orders (give_asset); -CREATE INDEX give_get_status_idx ON orders (get_asset, give_asset, status); -CREATE INDEX give_status_idx ON orders (give_asset, status); -CREATE INDEX source_give_status_idx ON orders (source, give_asset, status); - --- Table rps -DROP TABLE IF EXISTS rps; -CREATE TABLE rps( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - possible_moves INTEGER, - wager INTEGER, - move_random_hash TEXT, - expiration INTEGER, - expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); --- Triggers and indices on rps -CREATE TRIGGER _rps_delete BEFORE DELETE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps(rowid,tx_index,tx_hash,block_index,source,possible_moves,wager,move_random_hash,expiration,expire_index,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.possible_moves)||','||quote(old.wager)||','||quote(old.move_random_hash)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_insert AFTER INSERT ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_update AFTER UPDATE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',possible_moves='||quote(old.possible_moves)||',wager='||quote(old.wager)||',move_random_hash='||quote(old.move_random_hash)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX matching_idx ON rps (wager, possible_moves); - --- Table rps_expirations -DROP TABLE IF EXISTS rps_expirations; -CREATE TABLE rps_expirations( - rps_index INTEGER PRIMARY KEY, - rps_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (rps_index, rps_hash) REFERENCES rps(tx_index, tx_hash)); --- Triggers and indices on rps_expirations -CREATE TRIGGER _rps_expirations_delete BEFORE DELETE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_expirations(rowid,rps_index,rps_hash,source,block_index) VALUES('||old.rowid||','||quote(old.rps_index)||','||quote(old.rps_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_expirations_insert AFTER INSERT ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_expirations_update AFTER UPDATE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_expirations SET rps_index='||quote(old.rps_index)||',rps_hash='||quote(old.rps_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_match_expirations -DROP TABLE IF EXISTS rps_match_expirations; -CREATE TABLE rps_match_expirations( - rps_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (rps_match_id) REFERENCES rps_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on rps_match_expirations -CREATE TRIGGER _rps_match_expirations_delete BEFORE DELETE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_match_expirations(rowid,rps_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.rps_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_match_expirations_insert AFTER INSERT ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_match_expirations_update AFTER UPDATE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_match_expirations SET rps_match_id='||quote(old.rps_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_matches -DROP TABLE IF EXISTS rps_matches; -CREATE TABLE rps_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_move_random_hash TEXT, - tx1_move_random_hash TEXT, - wager INTEGER, - possible_moves INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rps_matches -CREATE TRIGGER _rps_matches_delete BEFORE DELETE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_move_random_hash,tx1_move_random_hash,wager,possible_moves,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_move_random_hash)||','||quote(old.tx1_move_random_hash)||','||quote(old.wager)||','||quote(old.possible_moves)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_matches_insert AFTER INSERT ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_matches_update AFTER UPDATE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_move_random_hash='||quote(old.tx0_move_random_hash)||',tx1_move_random_hash='||quote(old.tx1_move_random_hash)||',wager='||quote(old.wager)||',possible_moves='||quote(old.possible_moves)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_expire_idx ON rps_matches (status, match_expire_index); -CREATE INDEX rps_tx0_address_idx ON rps_matches (tx0_address); -CREATE INDEX rps_tx1_address_idx ON rps_matches (tx1_address); - --- Table rpsresolves -DROP TABLE IF EXISTS rpsresolves; -CREATE TABLE rpsresolves( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - move INTEGER, - random TEXT, - rps_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rpsresolves -CREATE TRIGGER _rpsresolves_delete BEFORE DELETE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rpsresolves(rowid,tx_index,tx_hash,block_index,source,move,random,rps_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.move)||','||quote(old.random)||','||quote(old.rps_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rpsresolves_insert AFTER INSERT ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rpsresolves WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rpsresolves_update AFTER UPDATE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rpsresolves SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',move='||quote(old.move)||',random='||quote(old.random)||',rps_match_id='||quote(old.rps_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_id_idx ON rpsresolves (rps_match_id); - --- Table sends -DROP TABLE IF EXISTS sends; -CREATE TABLE "sends"( - tx_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - quantity INTEGER, - status TEXT, - msg_index INTEGER DEFAULT 0, memo BLOB, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); -INSERT INTO sends VALUES(2,'062d5d8a8262f91cc16de8833e429bc92c0a4f63f61c4c8048a41bc254b97fd3',310001,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','XCP',50000000,'valid',0,NULL); -INSERT INTO sends VALUES(8,'f88727652b1502fabb4c45190bdc56b100a3d384bf5976311c4b41f433420bfc',310007,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBB',4000000,'valid',0,NULL); -INSERT INTO sends VALUES(9,'97e94072d8a73bd1bd2a00a3a48424207dd9ee5c56ba349dfb621d6057870f95',310008,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',526,'valid',0,NULL); -INSERT INTO sends VALUES(24,'a0e06860c5e6db0aa890002288d961e6dd1a8dda1b030a364325879d1b6b535f',310023,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3','BBBC',10000,'valid',0,NULL); --- Triggers and indices on sends -CREATE TRIGGER _sends_delete BEFORE DELETE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sends(rowid,tx_index,tx_hash,block_index,source,destination,asset,quantity,status,msg_index,memo) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.status)||','||quote(old.msg_index)||','||quote(old.memo)||')'); - END; -CREATE TRIGGER _sends_insert AFTER INSERT ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sends_update AFTER UPDATE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',status='||quote(old.status)||',msg_index='||quote(old.msg_index)||',memo='||quote(old.memo)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX destination_idx ON sends (destination); -CREATE INDEX memo_idx ON sends (memo); -CREATE INDEX source_idx ON sends (source); - --- Table sweeps -DROP TABLE IF EXISTS sweeps; -CREATE TABLE sweeps( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - flags INTEGER, - status TEXT, - memo BLOB, - fee_paid INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on sweeps -CREATE TRIGGER _sweeps_delete BEFORE DELETE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sweeps(rowid,tx_index,tx_hash,block_index,source,destination,flags,status,memo,fee_paid) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.flags)||','||quote(old.status)||','||quote(old.memo)||','||quote(old.fee_paid)||')'); - END; -CREATE TRIGGER _sweeps_insert AFTER INSERT ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sweeps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sweeps_update AFTER UPDATE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sweeps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',flags='||quote(old.flags)||',status='||quote(old.status)||',memo='||quote(old.memo)||',fee_paid='||quote(old.fee_paid)||' WHERE rowid='||old.rowid); - END; - --- Table transactions -DROP TABLE IF EXISTS transactions; -CREATE TABLE transactions( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - block_hash TEXT, - block_time INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - fee INTEGER, - data BLOB, - supported BOOL DEFAULT 1, - FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), - PRIMARY KEY (tx_index, tx_hash, block_index)); -INSERT INTO transactions VALUES(1,'c9ff1be2579378fad6d83ca87e6c91428b1eb8cfd1b0f341b3c7e452764404f5',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); -INSERT INTO transactions VALUES(2,'062d5d8a8262f91cc16de8833e429bc92c0a4f63f61c4c8048a41bc254b97fd3',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',7800,7650,X'0000000000000000000000010000000002FAF080',1); -INSERT INTO transactions VALUES(3,'53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,1000000,X'0000000A00000000000000000000000002FAF08000000000000000010000000005F5E100000A0000000000000000',1); -INSERT INTO transactions VALUES(4,'cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000000A00000000000000010000000006422C4000000000000000000000000002FAF080000A00000000000DBBA0',1); -INSERT INTO transactions VALUES(5,'c8d628a3107bf36f4576fff6a7237019146d06f9ebb99b53a89783ff766d5117',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',50000000,9675,X'0000000B53EBB2ED5C051ACC4F7FBDF6988847795B05C96F2C90066D1967135502B80D71CF2BF59916ADAD3C4C08F9DBA3C8B7252222281E03150892EE23BF6BC050CF16',1); -INSERT INTO transactions VALUES(6,'ff48da90dfe51b4aa156b69cbda46269886a76a44613a217f1e8dbf172495e12',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'000000140000000000004767000000003B9ACA000100000000000000000000',1); -INSERT INTO transactions VALUES(7,'ce78de24c5c55bbac91a3c08e92f4e817fa0cd73c65a5136aa3ded1c7284a6ad',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000014000000000000476800000000000186A00000000000000000000006666F6F626172',1); -INSERT INTO transactions VALUES(8,'f88727652b1502fabb4c45190bdc56b100a3d384bf5976311c4b41f433420bfc',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',7800,7650,X'00000000000000000000476700000000003D0900',1); -INSERT INTO transactions VALUES(9,'97e94072d8a73bd1bd2a00a3a48424207dd9ee5c56ba349dfb621d6057870f95',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',7800,7650,X'000000000000000000004768000000000000020E',1); -INSERT INTO transactions VALUES(10,'a0b04ac9dd798854a39b5905235237a6cbbe2de50ffd49694a3002d1543f5536',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000032000000000000025800000000000047670000000000000001',1); -INSERT INTO transactions VALUES(11,'b93ca7e398b5ffe8173673d93ca9b39984ac9b0bb19f1de45c7c0730a8877690',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'00000032000000000000032000000000000047680000000000000001',1); -INSERT INTO transactions VALUES(12,'413519ace5af8085631c26776778cfd40f618d5dc631f906d1f52b70264b9f21',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB3300405900000000000005F5E0FF09556E69742054657374',1); -INSERT INTO transactions VALUES(13,'c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000052BB33640000000002FAF08000000000017D7840000000000000000000003B100000000A',1); -INSERT INTO transactions VALUES(14,'b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000152BB336400000000017D78400000000002793D60000000000000000000003B100000000A',1); -INSERT INTO transactions VALUES(15,'801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000052BB33640000000008F0D1800000000014DC93800000000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(16,'e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000152BB33640000000014DC93800000000008F0D1800000000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(17,'c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000252BB33C8000000002CB417800000000026BE36803FF0000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(18,'4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3',7800,7650,X'00000028000352BB33C80000000026BE3680000000002CB417803FF0000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(19,'56f842d76ab0841e7f5c109c5add9eb46f44c88d14fd68b6f456570813f9e0c6',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB33324058F7256FFC115E004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(20,'5435a2ee4341f69c06b11da5f5474135b552e8d1fdfa1c590dda4bc5fb534f45',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB3365405915F3B645A1CB004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(21,'c522e7b202315126aff183b3939a3ce5d8ddf33639a876d1e8a6eca93759d576',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000001E52BB33C94000000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(22,'adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d',310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','',0,6800,X'0000000A00000000000047670000000002FAF08000000000000000010000000002FAF080000A0000000000000000',1); -INSERT INTO transactions VALUES(23,'3739350ed4c86474468cb1fed825b1ef141304d638b298867d0b2ae58c509c22',310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','mvCounterpartyXXXXXXXXXXXXXXW24Hef',100000000,5625,X'',1); -INSERT INTO transactions VALUES(24,'a0e06860c5e6db0aa890002288d961e6dd1a8dda1b030a364325879d1b6b535f',310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,'3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3','3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3',7800,7650,X'0000000000000000000047680000000000002710',1); --- Triggers and indices on transactions -CREATE INDEX index_hash_index_idx ON transactions (tx_index, tx_hash, block_index); -CREATE INDEX index_index_idx ON transactions (block_index, tx_index); -CREATE INDEX tx_hash_idx ON transactions (tx_hash); -CREATE INDEX tx_index_idx ON transactions (tx_index); - --- Table undolog -DROP TABLE IF EXISTS undolog; -CREATE TABLE undolog( - undo_index INTEGER PRIMARY KEY AUTOINCREMENT, - sql TEXT); -INSERT INTO undolog VALUES(4,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=93000000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(5,'DELETE FROM debits WHERE rowid=1'); -INSERT INTO undolog VALUES(6,'DELETE FROM balances WHERE rowid=2'); -INSERT INTO undolog VALUES(7,'DELETE FROM credits WHERE rowid=2'); -INSERT INTO undolog VALUES(8,'DELETE FROM sends WHERE rowid=1'); -INSERT INTO undolog VALUES(9,'DELETE FROM orders WHERE rowid=1'); -INSERT INTO undolog VALUES(10,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92950000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(11,'DELETE FROM debits WHERE rowid=2'); -INSERT INTO undolog VALUES(12,'DELETE FROM orders WHERE rowid=2'); -INSERT INTO undolog VALUES(13,'UPDATE orders SET tx_index=3,tx_hash=''53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71'',block_index=310002,source=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''BTC'',give_quantity=50000000,give_remaining=50000000,get_asset=''XCP'',get_quantity=100000000,get_remaining=100000000,expiration=10,expire_index=310012,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=1000000,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(14,'UPDATE orders SET tx_index=4,tx_hash=''cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16'',block_index=310003,source=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''XCP'',give_quantity=105000000,give_remaining=105000000,get_asset=''BTC'',get_quantity=50000000,get_remaining=50000000,expiration=10,expire_index=310013,fee_required=900000,fee_required_remaining=900000,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(15,'DELETE FROM order_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(16,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92845000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(17,'DELETE FROM credits WHERE rowid=3'); -INSERT INTO undolog VALUES(18,'UPDATE order_matches SET id=''53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71_cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16'',tx0_index=3,tx0_hash=''53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71'',tx0_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx1_index=4,tx1_hash=''cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16'',tx1_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',forward_asset=''BTC'',forward_quantity=50000000,backward_asset=''XCP'',backward_quantity=100000000,tx0_block_index=310002,tx1_block_index=310003,block_index=310003,tx0_expiration=10,tx1_expiration=10,match_expire_index=310023,fee_paid=857142,status=''pending'' WHERE rowid=1'); -INSERT INTO undolog VALUES(19,'DELETE FROM btcpays WHERE rowid=5'); -INSERT INTO undolog VALUES(20,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92945000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(21,'DELETE FROM debits WHERE rowid=3'); -INSERT INTO undolog VALUES(22,'DELETE FROM assets WHERE rowid=3'); -INSERT INTO undolog VALUES(23,'DELETE FROM issuances WHERE rowid=1'); -INSERT INTO undolog VALUES(24,'DELETE FROM balances WHERE rowid=3'); -INSERT INTO undolog VALUES(25,'DELETE FROM credits WHERE rowid=4'); -INSERT INTO undolog VALUES(26,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92895000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(27,'DELETE FROM debits WHERE rowid=4'); -INSERT INTO undolog VALUES(28,'DELETE FROM assets WHERE rowid=4'); -INSERT INTO undolog VALUES(29,'DELETE FROM issuances WHERE rowid=2'); -INSERT INTO undolog VALUES(30,'DELETE FROM balances WHERE rowid=4'); -INSERT INTO undolog VALUES(31,'DELETE FROM credits WHERE rowid=5'); -INSERT INTO undolog VALUES(32,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBB'',quantity=1000000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(33,'DELETE FROM debits WHERE rowid=5'); -INSERT INTO undolog VALUES(34,'DELETE FROM balances WHERE rowid=5'); -INSERT INTO undolog VALUES(35,'DELETE FROM credits WHERE rowid=6'); -INSERT INTO undolog VALUES(36,'DELETE FROM sends WHERE rowid=2'); -INSERT INTO undolog VALUES(37,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBC'',quantity=100000 WHERE rowid=4'); -INSERT INTO undolog VALUES(38,'DELETE FROM debits WHERE rowid=6'); -INSERT INTO undolog VALUES(39,'DELETE FROM balances WHERE rowid=6'); -INSERT INTO undolog VALUES(40,'DELETE FROM credits WHERE rowid=7'); -INSERT INTO undolog VALUES(41,'DELETE FROM sends WHERE rowid=3'); -INSERT INTO undolog VALUES(42,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92845000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(43,'DELETE FROM debits WHERE rowid=7'); -INSERT INTO undolog VALUES(44,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92844999976 WHERE rowid=1'); -INSERT INTO undolog VALUES(45,'DELETE FROM debits WHERE rowid=8'); -INSERT INTO undolog VALUES(46,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3'',asset=''XCP'',quantity=50000000 WHERE rowid=2'); -INSERT INTO undolog VALUES(47,'DELETE FROM credits WHERE rowid=8'); -INSERT INTO undolog VALUES(48,'DELETE FROM dividends WHERE rowid=10'); -INSERT INTO undolog VALUES(49,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92844979976 WHERE rowid=1'); -INSERT INTO undolog VALUES(50,'DELETE FROM debits WHERE rowid=9'); -INSERT INTO undolog VALUES(51,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92844559176 WHERE rowid=1'); -INSERT INTO undolog VALUES(52,'DELETE FROM debits WHERE rowid=10'); -INSERT INTO undolog VALUES(53,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3'',asset=''XCP'',quantity=50000024 WHERE rowid=2'); -INSERT INTO undolog VALUES(54,'DELETE FROM credits WHERE rowid=9'); -INSERT INTO undolog VALUES(55,'DELETE FROM dividends WHERE rowid=11'); -INSERT INTO undolog VALUES(56,'DELETE FROM broadcasts WHERE rowid=12'); -INSERT INTO undolog VALUES(57,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92844539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(58,'DELETE FROM debits WHERE rowid=11'); -INSERT INTO undolog VALUES(59,'DELETE FROM bets WHERE rowid=1'); -INSERT INTO undolog VALUES(60,'UPDATE orders SET tx_index=3,tx_hash=''53ebb2ed5c051acc4f7fbdf6988847795b05c96f2c90066d1967135502b80d71'',block_index=310002,source=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''BTC'',give_quantity=50000000,give_remaining=0,get_asset=''XCP'',get_quantity=100000000,get_remaining=0,expiration=10,expire_index=310012,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=142858,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(61,'DELETE FROM order_expirations WHERE rowid=3'); -INSERT INTO undolog VALUES(62,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92794539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(63,'DELETE FROM debits WHERE rowid=12'); -INSERT INTO undolog VALUES(64,'DELETE FROM bets WHERE rowid=2'); -INSERT INTO undolog VALUES(65,'UPDATE bets SET tx_index=13,tx_hash=''c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662'',block_index=310012,source=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=0,deadline=1388000100,wager_quantity=50000000,wager_remaining=50000000,counterwager_quantity=25000000,counterwager_remaining=25000000,target_value=0.0,leverage=15120,expiration=10,expire_index=310022,fee_fraction_int=99999999,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(66,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92769539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(67,'DELETE FROM credits WHERE rowid=10'); -INSERT INTO undolog VALUES(68,'UPDATE bets SET tx_index=14,tx_hash=''b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839'',block_index=310013,source=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=1,deadline=1388000100,wager_quantity=25000000,wager_remaining=25000000,counterwager_quantity=41500000,counterwager_remaining=41500000,target_value=0.0,leverage=15120,expiration=10,expire_index=310023,fee_fraction_int=99999999,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(69,'DELETE FROM bet_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(70,'UPDATE orders SET tx_index=4,tx_hash=''cf2bf59916adad3c4c08f9dba3c8b7252222281e03150892ee23bf6bc050cf16'',block_index=310003,source=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''XCP'',give_quantity=105000000,give_remaining=5000000,get_asset=''BTC'',get_quantity=50000000,get_remaining=0,expiration=10,expire_index=310013,fee_required=900000,fee_required_remaining=42858,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(71,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92773789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(72,'DELETE FROM credits WHERE rowid=11'); -INSERT INTO undolog VALUES(73,'DELETE FROM order_expirations WHERE rowid=4'); -INSERT INTO undolog VALUES(74,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92778789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(75,'DELETE FROM debits WHERE rowid=13'); -INSERT INTO undolog VALUES(76,'DELETE FROM bets WHERE rowid=3'); -INSERT INTO undolog VALUES(77,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92628789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(78,'DELETE FROM debits WHERE rowid=14'); -INSERT INTO undolog VALUES(79,'DELETE FROM bets WHERE rowid=4'); -INSERT INTO undolog VALUES(80,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(81,'DELETE FROM credits WHERE rowid=12'); -INSERT INTO undolog VALUES(82,'UPDATE bets SET tx_index=15,tx_hash=''801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29'',block_index=310014,source=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=0,deadline=1388000100,wager_quantity=150000000,wager_remaining=150000000,counterwager_quantity=350000000,counterwager_remaining=350000000,target_value=0.0,leverage=5040,expiration=10,expire_index=310024,fee_fraction_int=99999999,status=''open'' WHERE rowid=3'); -INSERT INTO undolog VALUES(83,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(84,'DELETE FROM credits WHERE rowid=13'); -INSERT INTO undolog VALUES(85,'UPDATE bets SET tx_index=16,tx_hash=''e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0'',block_index=310015,source=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=1,deadline=1388000100,wager_quantity=350000000,wager_remaining=350000000,counterwager_quantity=150000000,counterwager_remaining=150000000,target_value=0.0,leverage=5040,expiration=10,expire_index=310025,fee_fraction_int=99999999,status=''open'' WHERE rowid=4'); -INSERT INTO undolog VALUES(86,'DELETE FROM bet_matches WHERE rowid=2'); -INSERT INTO undolog VALUES(87,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(88,'DELETE FROM debits WHERE rowid=15'); -INSERT INTO undolog VALUES(89,'DELETE FROM bets WHERE rowid=5'); -INSERT INTO undolog VALUES(90,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=91528789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(91,'DELETE FROM debits WHERE rowid=16'); -INSERT INTO undolog VALUES(92,'DELETE FROM bets WHERE rowid=6'); -INSERT INTO undolog VALUES(93,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(94,'DELETE FROM credits WHERE rowid=14'); -INSERT INTO undolog VALUES(95,'UPDATE bets SET tx_index=17,tx_hash=''c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83'',block_index=310016,source=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=2,deadline=1388000200,wager_quantity=750000000,wager_remaining=750000000,counterwager_quantity=650000000,counterwager_remaining=650000000,target_value=1.0,leverage=5040,expiration=10,expire_index=310026,fee_fraction_int=99999999,status=''open'' WHERE rowid=5'); -INSERT INTO undolog VALUES(96,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(97,'DELETE FROM credits WHERE rowid=15'); -INSERT INTO undolog VALUES(98,'UPDATE bets SET tx_index=18,tx_hash=''4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685'',block_index=310017,source=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=3,deadline=1388000200,wager_quantity=650000000,wager_remaining=650000000,counterwager_quantity=750000000,counterwager_remaining=750000000,target_value=1.0,leverage=5040,expiration=10,expire_index=310027,fee_fraction_int=99999999,status=''open'' WHERE rowid=6'); -INSERT INTO undolog VALUES(99,'DELETE FROM bet_matches WHERE rowid=3'); -INSERT INTO undolog VALUES(100,'DELETE FROM broadcasts WHERE rowid=19'); -INSERT INTO undolog VALUES(101,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(102,'DELETE FROM credits WHERE rowid=16'); -INSERT INTO undolog VALUES(103,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90937926676 WHERE rowid=1'); -INSERT INTO undolog VALUES(104,'DELETE FROM credits WHERE rowid=17'); -INSERT INTO undolog VALUES(105,'DELETE FROM bet_match_resolutions WHERE rowid=1'); -INSERT INTO undolog VALUES(106,'UPDATE bet_matches SET id=''c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662_b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839'',tx0_index=13,tx0_hash=''c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662'',tx0_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx1_index=14,tx1_hash=''b96f2d38e2dfd09addcd61a9ddb18fa7faa72b526a1ec0a4dad8cfbc77d0a839'',tx1_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx0_bet_type=0,tx1_bet_type=1,feed_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',initial_value=100,deadline=1388000100,target_value=0.0,leverage=15120,forward_quantity=41500000,backward_quantity=20750000,tx0_block_index=310012,tx1_block_index=310013,block_index=310013,tx0_expiration=10,tx1_expiration=10,match_expire_index=310022,fee_fraction_int=99999999,status=''pending'' WHERE rowid=1'); -INSERT INTO undolog VALUES(107,'DELETE FROM broadcasts WHERE rowid=20'); -INSERT INTO undolog VALUES(108,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=90941039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(109,'DELETE FROM credits WHERE rowid=18'); -INSERT INTO undolog VALUES(110,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=91100339176 WHERE rowid=1'); -INSERT INTO undolog VALUES(111,'DELETE FROM credits WHERE rowid=19'); -INSERT INTO undolog VALUES(112,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=91416039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(113,'DELETE FROM credits WHERE rowid=20'); -INSERT INTO undolog VALUES(114,'DELETE FROM bet_match_resolutions WHERE rowid=2'); -INSERT INTO undolog VALUES(115,'UPDATE bet_matches SET id=''801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29_e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0'',tx0_index=15,tx0_hash=''801527b9dba145637cb07e12906651f53ffd55f5501d24535bc7a43fb2100c29'',tx0_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx1_index=16,tx1_hash=''e6f0f001573cc115d7e0631e93f0c19072b38344663d720d2d4b6d53a8a062c0'',tx1_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx0_bet_type=0,tx1_bet_type=1,feed_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',initial_value=100,deadline=1388000100,target_value=0.0,leverage=5040,forward_quantity=150000000,backward_quantity=350000000,tx0_block_index=310014,tx1_block_index=310015,block_index=310015,tx0_expiration=10,tx1_expiration=10,match_expire_index=310024,fee_fraction_int=99999999,status=''pending'' WHERE rowid=2'); -INSERT INTO undolog VALUES(116,'DELETE FROM broadcasts WHERE rowid=21'); -INSERT INTO undolog VALUES(117,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=91441039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(118,'DELETE FROM credits WHERE rowid=21'); -INSERT INTO undolog VALUES(119,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92771039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(120,'DELETE FROM credits WHERE rowid=22'); -INSERT INTO undolog VALUES(121,'DELETE FROM bet_match_resolutions WHERE rowid=3'); -INSERT INTO undolog VALUES(122,'UPDATE bet_matches SET id=''c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83_4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685'',tx0_index=17,tx0_hash=''c551d52dd756f4fce025dda64bc12ef845746c40c2db544f37a9bc81c1d2bd83'',tx0_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx1_index=18,tx1_hash=''4140920350272088d7e18a9a8df7335156c924efd13941a04af08aff76e70685'',tx1_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',tx0_bet_type=2,tx1_bet_type=3,feed_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',initial_value=100,deadline=1388000200,target_value=1.0,leverage=5040,forward_quantity=750000000,backward_quantity=650000000,tx0_block_index=310016,tx1_block_index=310017,block_index=310017,tx0_expiration=10,tx1_expiration=10,match_expire_index=310026,fee_fraction_int=99999999,status=''pending'' WHERE rowid=3'); -INSERT INTO undolog VALUES(123,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBB'',quantity=996000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(124,'DELETE FROM debits WHERE rowid=17'); -INSERT INTO undolog VALUES(125,'DELETE FROM orders WHERE rowid=3'); -INSERT INTO undolog VALUES(126,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=92841039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(127,'DELETE FROM credits WHERE rowid=23'); -INSERT INTO undolog VALUES(128,'DELETE FROM burns WHERE rowid=23'); -INSERT INTO undolog VALUES(129,'UPDATE bets SET tx_index=13,tx_hash=''c2c200de0b8c985d958357a809af0fed20ed3c7dd5515fd3566e4021087de662'',block_index=310012,source=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',feed_address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',bet_type=0,deadline=1388000100,wager_quantity=50000000,wager_remaining=8500000,counterwager_quantity=25000000,counterwager_remaining=4250000,target_value=0.0,leverage=15120,expiration=10,expire_index=310022,fee_fraction_int=99999999,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(130,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''XCP'',quantity=149840926438 WHERE rowid=1'); -INSERT INTO undolog VALUES(131,'DELETE FROM credits WHERE rowid=24'); -INSERT INTO undolog VALUES(132,'DELETE FROM bet_expirations WHERE rowid=13'); -INSERT INTO undolog VALUES(133,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBC'',quantity=99474 WHERE rowid=4'); -INSERT INTO undolog VALUES(134,'DELETE FROM debits WHERE rowid=18'); -INSERT INTO undolog VALUES(135,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj_3'',asset=''BBBC'',quantity=526 WHERE rowid=6'); -INSERT INTO undolog VALUES(136,'DELETE FROM credits WHERE rowid=25'); -INSERT INTO undolog VALUES(137,'DELETE FROM sends WHERE rowid=4'); -INSERT INTO undolog VALUES(138,'UPDATE orders SET tx_index=22,tx_hash=''adbc8051e249732266e5988fb0f3abd38dc2fee11fa97da87912a913e0a16d4d'',block_index=310021,source=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',give_asset=''BBBB'',give_quantity=50000000,give_remaining=50000000,get_asset=''XCP'',get_quantity=50000000,get_remaining=50000000,expiration=10,expire_index=310031,fee_required=0,fee_required_remaining=0,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=3'); -INSERT INTO undolog VALUES(139,'UPDATE balances SET address=''3_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_3'',asset=''BBBB'',quantity=946000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(140,'DELETE FROM credits WHERE rowid=26'); -INSERT INTO undolog VALUES(141,'DELETE FROM order_expirations WHERE rowid=22'); - --- Table undolog_block -DROP TABLE IF EXISTS undolog_block; -CREATE TABLE undolog_block( - block_index INTEGER PRIMARY KEY, - first_undo_index INTEGER); -INSERT INTO undolog_block VALUES(310001,4); -INSERT INTO undolog_block VALUES(310002,9); -INSERT INTO undolog_block VALUES(310003,10); -INSERT INTO undolog_block VALUES(310004,16); -INSERT INTO undolog_block VALUES(310005,20); -INSERT INTO undolog_block VALUES(310006,26); -INSERT INTO undolog_block VALUES(310007,32); -INSERT INTO undolog_block VALUES(310008,37); -INSERT INTO undolog_block VALUES(310009,42); -INSERT INTO undolog_block VALUES(310010,49); -INSERT INTO undolog_block VALUES(310011,56); -INSERT INTO undolog_block VALUES(310012,57); -INSERT INTO undolog_block VALUES(310013,60); -INSERT INTO undolog_block VALUES(310014,70); -INSERT INTO undolog_block VALUES(310015,77); -INSERT INTO undolog_block VALUES(310016,87); -INSERT INTO undolog_block VALUES(310017,90); -INSERT INTO undolog_block VALUES(310018,100); -INSERT INTO undolog_block VALUES(310019,107); -INSERT INTO undolog_block VALUES(310020,116); -INSERT INTO undolog_block VALUES(310021,123); -INSERT INTO undolog_block VALUES(310022,126); -INSERT INTO undolog_block VALUES(310023,129); -INSERT INTO undolog_block VALUES(310024,138); -INSERT INTO undolog_block VALUES(310025,138); -INSERT INTO undolog_block VALUES(310026,138); -INSERT INTO undolog_block VALUES(310027,138); -INSERT INTO undolog_block VALUES(310028,138); -INSERT INTO undolog_block VALUES(310029,138); -INSERT INTO undolog_block VALUES(310030,138); -INSERT INTO undolog_block VALUES(310031,138); -INSERT INTO undolog_block VALUES(310032,138); -INSERT INTO undolog_block VALUES(310033,142); -INSERT INTO undolog_block VALUES(310034,142); -INSERT INTO undolog_block VALUES(310035,142); -INSERT INTO undolog_block VALUES(310036,142); -INSERT INTO undolog_block VALUES(310037,142); -INSERT INTO undolog_block VALUES(310038,142); -INSERT INTO undolog_block VALUES(310039,142); -INSERT INTO undolog_block VALUES(310040,142); -INSERT INTO undolog_block VALUES(310041,142); -INSERT INTO undolog_block VALUES(310042,142); -INSERT INTO undolog_block VALUES(310043,142); -INSERT INTO undolog_block VALUES(310044,142); -INSERT INTO undolog_block VALUES(310045,142); -INSERT INTO undolog_block VALUES(310046,142); -INSERT INTO undolog_block VALUES(310047,142); -INSERT INTO undolog_block VALUES(310048,142); -INSERT INTO undolog_block VALUES(310049,142); -INSERT INTO undolog_block VALUES(310050,142); -INSERT INTO undolog_block VALUES(310051,142); -INSERT INTO undolog_block VALUES(310052,142); -INSERT INTO undolog_block VALUES(310053,142); -INSERT INTO undolog_block VALUES(310054,142); -INSERT INTO undolog_block VALUES(310055,142); -INSERT INTO undolog_block VALUES(310056,142); -INSERT INTO undolog_block VALUES(310057,142); -INSERT INTO undolog_block VALUES(310058,142); -INSERT INTO undolog_block VALUES(310059,142); -INSERT INTO undolog_block VALUES(310060,142); -INSERT INTO undolog_block VALUES(310061,142); -INSERT INTO undolog_block VALUES(310062,142); -INSERT INTO undolog_block VALUES(310063,142); -INSERT INTO undolog_block VALUES(310064,142); -INSERT INTO undolog_block VALUES(310065,142); -INSERT INTO undolog_block VALUES(310066,142); -INSERT INTO undolog_block VALUES(310067,142); -INSERT INTO undolog_block VALUES(310068,142); -INSERT INTO undolog_block VALUES(310069,142); -INSERT INTO undolog_block VALUES(310070,142); -INSERT INTO undolog_block VALUES(310071,142); -INSERT INTO undolog_block VALUES(310072,142); -INSERT INTO undolog_block VALUES(310073,142); -INSERT INTO undolog_block VALUES(310074,142); -INSERT INTO undolog_block VALUES(310075,142); -INSERT INTO undolog_block VALUES(310076,142); -INSERT INTO undolog_block VALUES(310077,142); -INSERT INTO undolog_block VALUES(310078,142); -INSERT INTO undolog_block VALUES(310079,142); -INSERT INTO undolog_block VALUES(310080,142); -INSERT INTO undolog_block VALUES(310081,142); -INSERT INTO undolog_block VALUES(310082,142); -INSERT INTO undolog_block VALUES(310083,142); -INSERT INTO undolog_block VALUES(310084,142); -INSERT INTO undolog_block VALUES(310085,142); -INSERT INTO undolog_block VALUES(310086,142); -INSERT INTO undolog_block VALUES(310087,142); -INSERT INTO undolog_block VALUES(310088,142); -INSERT INTO undolog_block VALUES(310089,142); -INSERT INTO undolog_block VALUES(310090,142); -INSERT INTO undolog_block VALUES(310091,142); -INSERT INTO undolog_block VALUES(310092,142); -INSERT INTO undolog_block VALUES(310093,142); -INSERT INTO undolog_block VALUES(310094,142); -INSERT INTO undolog_block VALUES(310095,142); -INSERT INTO undolog_block VALUES(310096,142); -INSERT INTO undolog_block VALUES(310097,142); -INSERT INTO undolog_block VALUES(310098,142); -INSERT INTO undolog_block VALUES(310099,142); -INSERT INTO undolog_block VALUES(310100,142); -INSERT INTO undolog_block VALUES(310101,142); - --- For primary key autoincrements the next id to use is stored in --- sqlite_sequence -DELETE FROM main.sqlite_sequence WHERE name='undolog'; -INSERT INTO main.sqlite_sequence VALUES ('undolog', 141); - -COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.log b/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.log deleted file mode 100644 index 4236266856..0000000000 --- a/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.log +++ /dev/null @@ -1,458 +0,0 @@ -Creating connection to `:memory:`. -Checking database integrity. -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.99909140; txid: ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1; vout: 0; confirmations: 75'] -Fee/KB 0.00025000 -New input: amount: 1.99909140; txid: ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1; vout: 0; confirmations: 75 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 1.37903515 BTC -Credit: 930.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #burn# <6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597> -Burn: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc burned 0.62 BTC for 930.0 XCP (6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37903515; txid: 6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37903515; txid: 6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37888915 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1000.0 of divisible asset DIVISIBLE (9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e) [valid] -Credit: 1000.0 DIVISIBLE to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37888915; txid: 9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37888915; txid: 9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37874315 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1000 of indivisible asset NODIVISIBLE (2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73) [valid] -Credit: 1000 NODIVISIBLE to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37874315; txid: 2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37874315; txid: 2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37859715 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 0.00001 of divisible asset CALLABLE (4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb) [valid] -Credit: 0.00001 CALLABLE to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37859715; txid: 4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37859715; txid: 4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37845115 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 0.00001 of divisible asset LOCKED (e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1) [valid] -Credit: 0.00001 LOCKED to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37845115; txid: e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37845115; txid: e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37830515 BTC -Debit: 0.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc locked asset LOCKED (1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37830515; txid: 1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37830515; txid: 1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37815915 BTC -Debit: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #open order# -Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered 1.0 XCP for 1.0 DIVISIBLE in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3) [open] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37815915; txid: b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37815915; txid: b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.37795035 BTC -Debit: 1.0 DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef> -Credit: 1.0 DIVISIBLE to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# <95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef> -Send: 1.0 DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37795035; txid: 95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37795035; txid: 95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.37774155 BTC -Debit: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc> -Credit: 1.0 XCP to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# <8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc> -Send: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37774155; txid: 8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37774155; txid: 8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37759555 BTC -BUMP TXID b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3 -Debit: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #open order# -Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered 1.0 XCP for 1.0 DIVISIBLE in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391) [open] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37759555; txid: d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37759555; txid: d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37744955 BTC -Debit: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #open order# -Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered 1.0 XCP for 0.01 BTC in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145) [open] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37744955; txid: c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37744955; txid: c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 1000000 -Size: 272 Fee: 0.01000000 Change quantity: 1.36737155 BTC -Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered 0.00666667 BTC for 1.0 XCP in 2000 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e) [open] -Considering: c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145 -Tx0 Price: 0.01; Tx1 Inverse Price: 0.00666667 -Skipping: price mismatch. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36737155; txid: 601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36737155; txid: 601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.36713905 BTC -Debit: 3.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568> -Credit: 3.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568> -Send: 3.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36713905; txid: 1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36713905; txid: 1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.36690655 BTC -Debit: 10.0 DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd> -Credit: 10.0 DIVISIBLE to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd> -Send: 10.0 DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36690655; txid: 62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36690655; txid: 62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.36669775 BTC -Debit: 5 NODIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba> -Credit: 5 NODIVISIBLE to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# <9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba> -Send: 5 NODIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36669775; txid: 9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36669775; txid: 9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.36646525 BTC -Debit: 10 NODIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4> -Credit: 10 NODIVISIBLE to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4> -Send: 10 NODIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36646525; txid: 62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36646525; txid: 62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.36631925 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 92233720368.54775807 of divisible asset MAXI (19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93) [valid] -Credit: 92233720368.54775807 MAXI to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36631925; txid: 19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36631925; txid: 19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.36617325 BTC -Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:20 with a fee of 5.0%% (3330c302fd75cb6b9e4d08ccc8821fee8f6f88c8a42123386941193813653c7a) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.93427600; txid: dc4f91c42eb79898b266ee237eed0d501b8b1a843f69aed847ad740e1933f85e; vout: 1; confirmations: 25'] -Fee/KB 0.00025000 -New input: amount: 1.93427600; txid: dc4f91c42eb79898b266ee237eed0d501b8b1a843f69aed847ad740e1933f85e; vout: 1; confirmations: 25 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.93413000 BTC -Broadcast: mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH locked his feed (a9d599c0f1669b071bf107f7e90f88fe692d56ca00b81e57c71a56530590e7ee) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36617325; txid: 3330c302fd75cb6b9e4d08ccc8821fee8f6f88c8a42123386941193813653c7a; vout: 1; confirmations: 2'] -Fee/KB 0.00025000 -New input: amount: 1.36617325; txid: 3330c302fd75cb6b9e4d08ccc8821fee8f6f88c8a42123386941193813653c7a; vout: 1; confirmations: 2 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.36596445 BTC -Debit: 0.00000009 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet# -Bet: 0.00000009 XCP against 0.00000009 XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.00000000; txid: e43c357b78baf473fd21cbc1481ac450746b60cf1d2702ce3a73a8811811e3eb; vout: 0; confirmations: 23', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 95'] -Fee/KB 0.00025000 -New input: amount: 1.00000000; txid: e43c357b78baf473fd21cbc1481ac450746b60cf1d2702ce3a73a8811811e3eb; vout: 0; confirmations: 23 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.99979120 BTC -Debit: 0.00000009 XCP from mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #bet# -Bet: 0.00000009 XCP against 0.00000009 XCP, by mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc -Considering: c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d -Tx0 Inverse Odds: 1.0; Tx1 Odds: 1.0 -Potential forward quantities: 9, 9 -Forward Quantity: 9 -Backward Quantity: 9 -Credit: 0.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #filled# -Credit: 0.0 XCP to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #filled# -Bet Match: BearCFD for 0.00000009 XCP against BullCFD for 0.00000009 XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:21 that 0.0 value, leveraged 1.0x (c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.99979120; txid: acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0; vout: 2; confirmations: 81', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 176'] -Fee/KB 0.00025000 -New input: amount: 0.99979120; txid: acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0; vout: 2; confirmations: 81 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.99958240 BTC -Debit: 0.0000001 XCP from mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #bet# -Bet: 0.0000001 XCP against 0.0000001 XCP, by mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36596445; txid: c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d; vout: 2; confirmations: 83'] -Fee/KB 0.00025000 -New input: amount: 1.36596445; txid: c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d; vout: 2; confirmations: 83 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.36581845 BTC -Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:22 with a fee of 5.0%% (8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8) [valid] -Credit: 0.00000009 XCP to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #bet settled# <8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8> -Credit: 0.00000009 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet settled# <8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8> -Credit: 0.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #feed fee# <8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8> -Bet Match Settled: 0.00000009 XCP credited to the bull, 0.00000009 XCP credited to the bear, and 0.0 XCP credited to the feed address (c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0) -Database: set status of bet_match c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0 to settled. -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.07824570; txid: c018d940b7d338e57e121cbbb1880fdd8f4444d950ea041cdca17016fd320be8; vout: 0; confirmations: 247'] -Fee/KB 0.00025000 -New input: amount: 1.07824570; txid: c018d940b7d338e57e121cbbb1880fdd8f4444d950ea041cdca17016fd320be8; vout: 0; confirmations: 247 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.45818945 BTC -Credit: 929.99138821 XCP to myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM #burn# <65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b> -Burn: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM burned 0.62 BTC for 929.99138821 XCP (65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b) [valid] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.07824570; txid: 1befa135e687812ab8a60678ac17f982daf008cd7094dc95fc65a0b8e4bd955e; vout: 0; confirmations: 248'] -Fee/KB 0.00025000 -New input: amount: 1.07824570; txid: 1befa135e687812ab8a60678ac17f982daf008cd7094dc95fc65a0b8e4bd955e; vout: 0; confirmations: 248 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.45818945 BTC -Credit: 929.9913046 XCP to munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b #burn# <95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff> -Burn: munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b burned 0.62 BTC for 929.9913046 XCP (95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff) [valid] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.07824570; txid: fea12706ef63c7ce57df3e1197b8b33e6a93ef2df07964ff654c14f1b900e17f; vout: 0; confirmations: 249'] -Fee/KB 0.00025000 -New input: amount: 1.07824570; txid: fea12706ef63c7ce57df3e1197b8b33e6a93ef2df07964ff654c14f1b900e17f; vout: 0; confirmations: 249 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.45818945 BTC -Credit: 929.99122099 XCP to mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 #burn# -Burn: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 burned 0.62 BTC for 929.99122099 XCP (e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa) [valid] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 0.05608646; txid: eac206b369d8130892c8be2d52f7bd9e3e0324870262daf3a19264246068ed2b; vout: 0; confirmations: 113'] -Fee/KB 0.00025000 -New input: amount: 0.05608646; txid: eac206b369d8130892c8be2d52f7bd9e3e0324870262daf3a19264246068ed2b; vout: 0; confirmations: 113 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.05593021 BTC -Credit: 0.14999857 XCP to mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK #burn# -Burn: mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK burned 0.0001 BTC for 0.14999857 XCP (bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3) [valid] -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45818945; txid: 95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff; vout: 1; confirmations: 3'] -Fee/KB 0.00025000 -New input: amount: 0.45818945; txid: 95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff; vout: 1; confirmations: 3 -final_fee inputs: 1 size: 246 final_fee 6150 -Size: 246 Fee: 0.00006150 Change quantity: 0.45812795 BTC -Debit: 0.000001 XCP from munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b #open dispenser# <9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec> -Dispenser: munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b opened a dispenser for asset XCP with 100 balance, giving 100 XCP for each 100 BTC -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.00000000; txid: 20ffe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 115'] -Fee/KB 0.00025000 -New input: amount: 1.00000000; txid: 20ffe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 115 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.68994375 BTC -Credit: 464.99548508 XCP to 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy #burn# <93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73> -Burn: 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy burned 0.31 BTC for 464.99548508 XCP (93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.68994375; txid: 93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.68994375; txid: 93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.68979775 BTC -Debit: 0.5 XCP from 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy #issuance fee# -Issuance: 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy created 1000 of indivisible asset PAYTOSCRIPT (ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e) [valid] -Credit: 1000 PAYTOSCRIPT to 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy #issuance# -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36581845; txid: 8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8; vout: 1; confirmations: 8'] -Fee/KB 0.00025000 -New input: amount: 1.36581845; txid: 8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8; vout: 1; confirmations: 8 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.36560965 BTC -Debit: 1.0 DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# -Credit: 1.0 DIVISIBLE to 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy #send# -Send: 1.0 DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy (f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481) [valid] -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.68979775; txid: ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e; vout: 1; confirmations: 2'] -Fee/KB 0.00025000 -New input: amount: 0.68979775; txid: ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e; vout: 1; confirmations: 2 -final_fee inputs: 1 size: 239 final_fee 5975 -Size: 239 Fee: 0.00005975 Change quantity: 0.68973800 BTC -Broadcast: 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy at 2013-12-25T19:33:22 with a fee of 5.0%% (510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186) [valid] -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.68973800; txid: 510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.68973800; txid: 510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 285 final_fee 7124 -Size: 285 Fee: 0.00007124 Change quantity: 0.68961246 BTC -Debit: 0.0000001 XCP from 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy #bet# -Bet: 0.0000001 XCP against 0.0000001 XCP, by 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy, on 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45818945; txid: e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa; vout: 1; confirmations: 8'] -Fee/KB 0.00025000 -New input: amount: 0.45818945; txid: e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa; vout: 1; confirmations: 8 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45804345 BTC -Debit: 0.5 XCP from mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 #issuance fee# <5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9> -Issuance: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 created 0.00001 of divisible asset LOCKEDPREV (5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9) [valid] -Credit: 0.00001 LOCKEDPREV to mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 #issuance# <5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45804345; txid: 5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.45804345; txid: 5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45789745 BTC -Debit: 0.0 XCP from mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 #issuance fee# <74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe> -Issuance: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 locked asset LOCKEDPREV (74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45789745; txid: 74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.45789745; txid: 74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45775145 BTC -Debit: 0.0 XCP from mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 #issuance fee# <214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d> -Issuance: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 created 0.0 of divisible asset LOCKEDPREV (214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d) [valid] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.00000000; txid: 20efe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 123'] -Fee/KB 0.00025000 -New input: amount: 1.00000000; txid: 20efe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 123 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.37994375 BTC -Credit: 929.99030129 XCP to tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx #burn# <27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9> -Burn: tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx burned 0.62 BTC for 929.99030129 XCP (27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9) [valid] -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36560965; txid: f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481; vout: 2; confirmations: 371'] -Fee/KB 0.00025000 -New input: amount: 1.36560965; txid: f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481; vout: 2; confirmations: 371 -final_fee inputs: 1 size: 255 final_fee 6375 -Size: 255 Fee: 0.00006375 Change quantity: 1.36554590 BTC -Debit: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# -Credit: 1.0 XCP to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# -Send: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5) [valid] -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.99958240; txid: aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305; vout: 2; confirmations: 381', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 557'] -Fee/KB 0.00025000 -New input: amount: 0.99958240; txid: aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305; vout: 2; confirmations: 381 -final_fee inputs: 1 size: 254 final_fee 6350 -Size: 254 Fee: 0.00006350 Change quantity: 0.99951890 BTC -Debit: 1.0 XCP from mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# -Credit: 1.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# -Send: 1.0 XCP from mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc (c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45818945; txid: 65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b; vout: 1; confirmations: 383'] -Fee/KB 0.00025000 -New input: amount: 0.45818945; txid: 65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b; vout: 1; confirmations: 383 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45804345 BTC -Broadcast: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM at 2013-12-25T19:33:20 with a fee of 5.0%% (096883e142a87377d3a4103f4702556e25824f1e23667aceb1690f66e1417062) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45804345; txid: 096883e142a87377d3a4103f4702556e25824f1e23667aceb1690f66e1417062; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.45804345; txid: 096883e142a87377d3a4103f4702556e25824f1e23667aceb1690f66e1417062; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.45783465 BTC -Debit: 0.00000009 XCP from myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM #bet# <2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275> -Bet: 0.00000009 XCP against 0.00000009 XCP, by myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM, on myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45783465; txid: 2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.45783465; txid: 2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45768865 BTC -Broadcast: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM at 2013-12-25T19:33:22 with a fee of 0.0%% (9b1cad827c97c463c2b39cc9d550693c438010ef85a10ee04d3db8699193e906) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45768865; txid: 9b1cad827c97c463c2b39cc9d550693c438010ef85a10ee04d3db8699193e906; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.45768865; txid: 9b1cad827c97c463c2b39cc9d550693c438010ef85a10ee04d3db8699193e906; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45754265 BTC -Broadcast: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM locked his feed (9a39bade308462ec65be3c8420a0f2189b1d4e947d4c7950a37176de71de4f87) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45775145; txid: 214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d; vout: 1; confirmations: 375'] -Fee/KB 0.00025000 -New input: amount: 0.45775145; txid: 214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d; vout: 1; confirmations: 375 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45760545 BTC -Broadcast: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 at 2013-12-25T19:33:24 with a fee of 0.0%% (4b233a74b9db14a8619ee8ec5558149e53ab033be31e803257f760aa9ef2f3b9) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36554590; txid: b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5; vout: 1; confirmations: 10'] -Fee/KB 0.00025000 -New input: amount: 1.36554590; txid: b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5; vout: 1; confirmations: 10 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.36539990 BTC -Debit: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #open order# <9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09> -Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered 1.0 XCP for 0.008 BTC in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09) [open] -Considering: 601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e -Tx0 Price: 149.9999250000375; Tx1 Inverse Price: 125.0 -Skipping: price mismatch. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.99951890; txid: c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34; vout: 1; confirmations: 10', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 567'] -Fee/KB 0.00025000 -New input: amount: 0.99951890; txid: c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34; vout: 1; confirmations: 10 -final_fee inputs: 1 size: 272 final_fee 1000000 -Size: 272 Fee: 0.01000000 Change quantity: 0.98944090 BTC -Order: mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns ordered 0.008 BTC for 1.0 XCP in 2000 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4) [open] -Considering: 9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09 -Tx0 Price: 0.008; Tx1 Inverse Price: 0.008 -Potential forward quantities: 100000000, 100000000 -Forward Quantity: 100000000 -Backward Quantity: 800000 -Tx1 fee provided remaining: 0.01; required fee: 7.2e-05 -Order Match: 1.0 XCP for 0.008 BTC (9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09_2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4) [pending] -Considering: c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145 -Skipping: negative give quantity remaining -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.93413000; txid: a9d599c0f1669b071bf107f7e90f88fe692d56ca00b81e57c71a56530590e7ee; vout: 1; confirmations: 475'] -Fee/KB 0.00025000 -New input: amount: 1.93413000; txid: a9d599c0f1669b071bf107f7e90f88fe692d56ca00b81e57c71a56530590e7ee; vout: 1; confirmations: 475 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 1.31407375 BTC -Credit: 929.95878046 XCP to mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH #burn# -Burn: mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH burned 0.62 BTC for 929.95878046 XCP (c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.31407375; txid: c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.31407375; txid: c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.31392775 BTC -Debit: 0.5 XCP from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH #issuance fee# <4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5> -Issuance: mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH created 0.000001 of divisible asset DIVIDEND (4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5) [valid] -Credit: 0.000001 DIVIDEND to mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH #issuance# <4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.31392775; txid: 4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.31392775; txid: 4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.31371895 BTC -Debit: 0.0000001 DIVIDEND from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH #send# <129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc> -Credit: 0.0000001 DIVIDEND to mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj #send# <129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc> -Send: 0.0000001 DIVIDEND from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH to mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj (129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.31371895; txid: 129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.31371895; txid: 129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.31351015 BTC -Debit: 929.45878046 XCP from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH #send# <1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6> -Credit: 929.45878046 XCP to mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj #send# <1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6> -Send: 929.45878046 XCP from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH to mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj (1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6) [valid] -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36539990; txid: 9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09; vout: 1; confirmations: 6'] -Fee/KB 0.00025000 -New input: amount: 1.36539990; txid: 9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09; vout: 1; confirmations: 6 -final_fee inputs: 1 size: 252 final_fee 6300 -Size: 252 Fee: 0.00006300 Change quantity: 1.36533690 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1.0 of divisible asset PARENT (076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f) [valid] -Credit: 1.0 PARENT to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f> -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36533690; txid: 076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36533690; txid: 076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 262 final_fee 6550 -Size: 262 Fee: 0.00006550 Change quantity: 1.36527140 BTC -Debit: 0.25 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf> -Subasset Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1.0 of divisible subasset PARENT.already.issued as numeric asset A95428956661682277 (0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf) [valid] -Credit: 1.0 A95428956661682277 to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf> diff --git a/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.sql b/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.sql deleted file mode 100644 index 1f6c53de07..0000000000 --- a/counterpartylib/test/fixtures/scenarios/parseblock_unittest_fixture.sql +++ /dev/null @@ -1,1857 +0,0 @@ -PRAGMA page_size=4096; --- PRAGMA encoding='UTF-8'; --- PRAGMA auto_vacuum=NONE; --- PRAGMA max_page_count=1073741823; - -BEGIN TRANSACTION; - --- Table addresses -DROP TABLE IF EXISTS addresses; -CREATE TABLE addresses( - address TEXT UNIQUE, - options INTEGER, - block_index INTEGER); -INSERT INTO addresses VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',0,310488); -INSERT INTO addresses VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',1,310490); --- Triggers and indices on addresses -CREATE TRIGGER _addresses_delete BEFORE DELETE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO addresses(rowid,address,options,block_index) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.options)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _addresses_insert AFTER INSERT ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM addresses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _addresses_update AFTER UPDATE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE addresses SET address='||quote(old.address)||',options='||quote(old.options)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX addresses_idx ON addresses (address); - --- Table assets -DROP TABLE IF EXISTS assets; -CREATE TABLE assets( - asset_id TEXT UNIQUE, - asset_name TEXT UNIQUE, - block_index INTEGER, - asset_longname TEXT); -INSERT INTO assets VALUES('0','BTC',NULL,NULL); -INSERT INTO assets VALUES('1','XCP',NULL,NULL); -INSERT INTO assets VALUES('697326324582','DIVISIBLE',310001,NULL); -INSERT INTO assets VALUES('1911882621324134','NODIVISIBLE',310002,NULL); -INSERT INTO assets VALUES('16199343190','CALLABLE',310003,NULL); -INSERT INTO assets VALUES('137134819','LOCKED',310004,NULL); -INSERT INTO assets VALUES('211518','MAXI',310016,NULL); -INSERT INTO assets VALUES('2122675428648001','PAYTOSCRIPT',310109,NULL); -INSERT INTO assets VALUES('62667321322601','LOCKEDPREV',310113,NULL); -INSERT INTO assets VALUES('26819977213','DIVIDEND',310494,NULL); -INSERT INTO assets VALUES('178522493','PARENT',310497,NULL); -INSERT INTO assets VALUES('95428956661682277','A95428956661682277',310498,'PARENT.already.issued'); --- Triggers and indices on assets -CREATE TRIGGER _assets_delete BEFORE DELETE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO assets(rowid,asset_id,asset_name,block_index,asset_longname) VALUES('||old.rowid||','||quote(old.asset_id)||','||quote(old.asset_name)||','||quote(old.block_index)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _assets_insert AFTER INSERT ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM assets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _assets_update AFTER UPDATE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE assets SET asset_id='||quote(old.asset_id)||',asset_name='||quote(old.asset_name)||',block_index='||quote(old.block_index)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE UNIQUE INDEX asset_longname_idx ON assets(asset_longname); -CREATE INDEX id_idx ON assets (asset_id); -CREATE INDEX name_idx ON assets (asset_name); - --- Table balances -DROP TABLE IF EXISTS balances; -CREATE TABLE balances( - address TEXT, - asset TEXT, - quantity INTEGER); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91875000000); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',98800000000); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',985); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','CALLABLE',1000); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','LOCKED',1000); -INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000); -INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999990); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000); -INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','MAXI',9223372036854775807); -INSERT INTO balances VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138812); -INSERT INTO balances VALUES('munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130360); -INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099); -INSERT INTO balances VALUES('mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','XCP',14999857); -INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46449548498); -INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','PAYTOSCRIPT',1000); -INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000); -INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','LOCKEDPREV',1000); -INSERT INTO balances VALUES('tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','XCP',92999030129); -INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',0); -INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',90); -INSERT INTO balances VALUES('mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10); -INSERT INTO balances VALUES('mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','PARENT',100000000); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','A95428956661682277',100000000); --- Triggers and indices on balances -CREATE TRIGGER _balances_delete BEFORE DELETE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO balances(rowid,address,asset,quantity) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||')'); - END; -CREATE TRIGGER _balances_insert AFTER INSERT ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM balances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _balances_update AFTER UPDATE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE balances SET address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_asset_idx ON balances (address, asset); - --- Table bet_expirations -DROP TABLE IF EXISTS bet_expirations; -CREATE TABLE bet_expirations( - bet_index INTEGER PRIMARY KEY, - bet_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (bet_index, bet_hash) REFERENCES bets(tx_index, tx_hash)); --- Triggers and indices on bet_expirations -CREATE TRIGGER _bet_expirations_delete BEFORE DELETE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_expirations(rowid,bet_index,bet_hash,source,block_index) VALUES('||old.rowid||','||quote(old.bet_index)||','||quote(old.bet_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_expirations_insert AFTER INSERT ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_expirations_update AFTER UPDATE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_expirations SET bet_index='||quote(old.bet_index)||',bet_hash='||quote(old.bet_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_expirations -DROP TABLE IF EXISTS bet_match_expirations; -CREATE TABLE bet_match_expirations( - bet_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on bet_match_expirations -CREATE TRIGGER _bet_match_expirations_delete BEFORE DELETE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_expirations(rowid,bet_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_match_expirations_insert AFTER INSERT ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_expirations_update AFTER UPDATE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_expirations SET bet_match_id='||quote(old.bet_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_resolutions -DROP TABLE IF EXISTS bet_match_resolutions; -CREATE TABLE bet_match_resolutions( - bet_match_id TEXT PRIMARY KEY, - bet_match_type_id INTEGER, - block_index INTEGER, - winner TEXT, - settled BOOL, - bull_credit INTEGER, - bear_credit INTEGER, - escrow_less_fee INTEGER, - fee INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO bet_match_resolutions VALUES('c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0',1,310102,'1',9,9,NULL,NULL,0); --- Triggers and indices on bet_match_resolutions -CREATE TRIGGER _bet_match_resolutions_delete BEFORE DELETE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_resolutions(rowid,bet_match_id,bet_match_type_id,block_index,winner,settled,bull_credit,bear_credit,escrow_less_fee,fee) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.bet_match_type_id)||','||quote(old.block_index)||','||quote(old.winner)||','||quote(old.settled)||','||quote(old.bull_credit)||','||quote(old.bear_credit)||','||quote(old.escrow_less_fee)||','||quote(old.fee)||')'); - END; -CREATE TRIGGER _bet_match_resolutions_insert AFTER INSERT ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_resolutions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_resolutions_update AFTER UPDATE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_resolutions SET bet_match_id='||quote(old.bet_match_id)||',bet_match_type_id='||quote(old.bet_match_type_id)||',block_index='||quote(old.block_index)||',winner='||quote(old.winner)||',settled='||quote(old.settled)||',bull_credit='||quote(old.bull_credit)||',bear_credit='||quote(old.bear_credit)||',escrow_less_fee='||quote(old.escrow_less_fee)||',fee='||quote(old.fee)||' WHERE rowid='||old.rowid); - END; - --- Table bet_matches -DROP TABLE IF EXISTS bet_matches; -CREATE TABLE bet_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_bet_type INTEGER, - tx1_bet_type INTEGER, - feed_address TEXT, - initial_value INTEGER, - deadline INTEGER, - target_value REAL, - leverage INTEGER, - forward_quantity INTEGER, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO bet_matches VALUES('c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0',20,'c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',21,'acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',1,0,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000001,0.0,5040,9,9,310019,310020,310020,100,100,310119,5000000,'settled'); --- Triggers and indices on bet_matches -CREATE TRIGGER _bet_matches_delete BEFORE DELETE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_bet_type,tx1_bet_type,feed_address,initial_value,deadline,target_value,leverage,forward_quantity,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_bet_type)||','||quote(old.tx1_bet_type)||','||quote(old.feed_address)||','||quote(old.initial_value)||','||quote(old.deadline)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.forward_quantity)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bet_matches_insert AFTER INSERT ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_matches_update AFTER UPDATE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_bet_type='||quote(old.tx0_bet_type)||',tx1_bet_type='||quote(old.tx1_bet_type)||',feed_address='||quote(old.feed_address)||',initial_value='||quote(old.initial_value)||',deadline='||quote(old.deadline)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',forward_quantity='||quote(old.forward_quantity)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_feed_idx ON bet_matches (feed_address, status); - --- Table bets -DROP TABLE IF EXISTS bets; -CREATE TABLE bets( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - feed_address TEXT, - bet_type INTEGER, - deadline INTEGER, - wager_quantity INTEGER, - wager_remaining INTEGER, - counterwager_quantity INTEGER, - counterwager_remaining INTEGER, - target_value REAL, - leverage INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO bets VALUES(20,'c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d',310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000001,9,0,9,0,0.0,5040,100,310119,5000000,'filled'); -INSERT INTO bets VALUES(21,'acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0',310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1388000001,9,0,9,0,0.0,5040,100,310120,5000000,'filled'); -INSERT INTO bets VALUES(102,'aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305',310101,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',3,1388000200,10,10,10,10,0.0,5040,1000,311101,5000000,'open'); -INSERT INTO bets VALUES(113,'d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048',310112,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',3,1388000200,10,10,10,10,0.0,5040,1000,311112,5000000,'open'); -INSERT INTO bets VALUES(488,'2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275',310487,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',1,1388000001,9,9,9,9,0.0,5040,100,310587,5000000,'open'); --- Triggers and indices on bets -CREATE TRIGGER _bets_delete BEFORE DELETE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bets(rowid,tx_index,tx_hash,block_index,source,feed_address,bet_type,deadline,wager_quantity,wager_remaining,counterwager_quantity,counterwager_remaining,target_value,leverage,expiration,expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.feed_address)||','||quote(old.bet_type)||','||quote(old.deadline)||','||quote(old.wager_quantity)||','||quote(old.wager_remaining)||','||quote(old.counterwager_quantity)||','||quote(old.counterwager_remaining)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bets_insert AFTER INSERT ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bets_update AFTER UPDATE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bets SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',feed_address='||quote(old.feed_address)||',bet_type='||quote(old.bet_type)||',deadline='||quote(old.deadline)||',wager_quantity='||quote(old.wager_quantity)||',wager_remaining='||quote(old.wager_remaining)||',counterwager_quantity='||quote(old.counterwager_quantity)||',counterwager_remaining='||quote(old.counterwager_remaining)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX feed_valid_bettype_idx ON bets (feed_address, status, bet_type); - --- Table blocks -DROP TABLE IF EXISTS blocks; -CREATE TABLE blocks( - block_index INTEGER UNIQUE, - block_hash TEXT UNIQUE, - block_time INTEGER, - previous_block_hash TEXT UNIQUE, - difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, - PRIMARY KEY (block_index, block_hash)); -INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); -INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'cf0ea1d313e22ba5f413075b88e07dffc5c00e59f95eeb6d6dec935bd77f5ae4','f06c23e6040a063ed59693baa0d63492dce64e1debc7455b22f5535c9dfbdc67','935966a4190449faefd40145735a17c5733fcd4f80d81fb1b0368cf8c2507bb1'); -INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'11461f972c4cd85c87b5abfedb3cee589d09e945570d34564dcde6f4df9d2b57','76dd4e40ce9c89dbe5aaf5f48bb577a6e8ba12530bd770922a697ed0907b8cf4','c59552705d5ce3236c1c6e9562da91a1e7839b67346ba4e446eb6eb937353fb3'); -INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'355d92f841de89a1d97c3b2ea7623959ea4494bb62ea7e67ad359beb68caca8c','34c42a025c5c0592e008ca41de09334728d31822dd2e89e50eb755a0ea6678d6','c4fef0d06ebbf594ba68fed7ae3df3281c064a6a2357a936f4aa7a63e4acec0a'); -INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'edcd7e344fb5cca16999f025594890b8b54543555e61eb3807406bb4204677f2','79fd856561f83ac9b0105c2622817ee95b76b9fe514d43d80bd25eefdeb1f236','7e3ebeec3193d587a99ee4fbe526fa327dc19d1e018eb1be8b8fbec68e20a0e9'); -INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'abd71a31bc1f8a072761b23a5bc2976731ebdf305d1d7d33922e93573f308129','0b4bbfc9c39b628898f8da6fa12859f453583d291a96d5d166c695ca182d54fe','74cf19ce94d2864dcc1596a87ddcfc02c91814411d540bd491af7d6b443ebed0'); -INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'0c3914f9676e506a96e6db793f15200ef33087cd47de4d27628849013a391daa','624bdd0a3d08e2d864df3bce2d7d2c75f9f55ad4c5a7202e7192e0a2297f33fd','d6b54527ae9ffd7171f775fd4711cef29b04f9aa9da2726a41a7582e45003577'); -INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'57ff5f34a9e418b179db9003414c5f3bdfa7feeb538f24071b23d024a3d05df0','2959426283694c4e4154c13cca75e1a6e557b1162213e9af9627564dc7fdd9f1','c5869cefda8d499ce849735b0d61b0276ecf23a0d971eb5907a1122155c4952d'); -INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'bfed530458339aab02ff75ad76738569dc6997c7a35d4452351678b04e022f68','4e5b992fc87b86d8da3f3c106e6020a6882af6a08bdc1e4469c11572e00160bb','b32a3d519494225c43431e6289697f2c1a863f0cf1ae9d231898837ceaf22aba'); -INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'d4feec997754d11a1502e5351ed62fcfbfcafb770e19a37da41d1d88b7b45ed4','adb9877ec3a9377c7c1e66c0d46c09b9beab264cfdfa2eb4c4e43ee3129d7373','f62f60e2657dce8db5f4dc88149fc465feae533b323afbf4ca0fc36d0b7c258e'); -INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'4ab5ff9e71bbc83956557fb5abec98372fa38e5580838fb258b2d831bfc4d9ea','200b2326988ed3928f2a24b416b76065c5bd828df664827fc61b671ba89daec4','5d01ba241632d978e4b949255afe2ea4edc7f294dd36e68a958b0e39cf064b97'); -INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'1909ef40a24263776cb9e0d52a690048b50728855a0fe4b0e1ba3834a9e401c1','a4f430f1766aa11bd3174d89ee2c519aa6dca5c894f647573097db8ae1d88ed4','06bca8e8d7ac50c394a12c1f4d71715c4be37c2082242db4ea97e4946560bf42'); -INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'c3d51a5f2df90c089844ba4de7d5541f6051490aa1389e5945a7bb91d49e3589','bfde60e00f17f996da019002e01e5b20b6611a8c0997b7d777cccfbcf90b9138','966e5c9bf0b4e30a851e99f26bb85db5dcda716dc1ba7b618a42636206fba859'); -INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'a9dc31556d38b118eeb0bcbb3a374a0ed79adec4eb23e00c80c0599ba97c9a7a','e23e7a068bdd41d3b4c8153ac572962a51395f845605266f1a7b876edfcc58a3','d5d206218f993d2109e0ebc7f69e9449ed8a3f978faf339bb4259d069e2c27c1'); -INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'e72be5070d0a5853631d902d334e8b88eddf6e79616373311babc4a0a27dd3d8','70d6d2cc76d6eafd60b108dc08733c70d6b4a018441360ecf006491a98319f2f','f7de539d29aa189b3cbc00a62e0cc816aff925d09d3044bb158e60643be05d7e'); -INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'cb0962222af917dbac2a11465c22cd80770c0b3cdb8bdc0870c99a8116745c9e','682831136b79ae77a003fa69f995aed4e55c2b81c8a61caee22a927d96c92000','60885a44a3931bfa8328147bbf7f0f090185fe6e2002d1bb65d0fbc8c8fbbb34'); -INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'6ff899433f22546c41a15f20b4c66913c747931500fee10d58c4a17b9e2f0c88','e7cc744b750a7fc841644233b9351727ebe529014b7f529c6f5f675d50eac547','043d2845f2668596de7d0468ac41b0a4aec28ab5139df764f4b45da27dc8f6f0'); -INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'ec66a06cde401b66917c6d1d4e1ee8893405cfbf0474560d9997d6960c8af710','837340ff1e2674e4b1b2ad78aa81958d2f9adabeb7565477e5ab006b574530d4','5dcbbf7ba7224408b51e2462090f9e0bd8703565df00ef71ae27ec869153d4d2'); -INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'b2053109bff06dae1705fc32ab0712f38bf9d206fa3517fbf0a938d1b5f33bad','0a580bdbf224df576376785ba419db92b19f3d9ea10996c50fba737e7b1e85eb','30d886f234b03e7e4df9378740cea29e9507bceae5730112c479e936f787f304'); -INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'d7051de4d03fb31bfedf215b407b1edc12789c1f2748abb5a72257ad8f5113ce','a9a1d9f080b85033e8bdc990c66a13242c01c38817febcea4f9ef28b7f44230e','3790cb52ececbd3117b15dc6d951dde4a08b1579e69aa5d9233d5b27d6550f37'); -INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'35c95a70193ded2f9ee18254a91ce5d4834bb162fc3cca85dd432339257539b8','4989f663b6e5c498e616f97e975359c4e45342667491a5698225ddd48805ee95','cf5897204718613f86ec95321eb629f4227cfb867db469f9caa213b204b4a4e8'); -INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'8315de64ee1051c333687ba9fae6244287b85bcc1e3a4b67f3fe7d51b931378b','f055dfbeedebcf6005e7c33acbc1f2597b6cfddceaeb109a4cb90672bcd27c8f','c63295328586975fa42c1e18e7f2238df5706fe4eba3b403197be7fe40221c59'); -INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'c2d646bd3f54eec73cd9da6f5da4bc159d0c64e8fb9ad4095dfa58850e65c7b1','b7479a4262c2e37420071d33b88d1133572c551c71d9a555e348b66a650bb1be','ba736bae5e34608e0e1669a912babf7c5169cbfbc149a799779599d8a13b70f8'); -INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'619367fb7657e0fb4800acd385eb5593d085ce5cbfbfb098dafa98612d9fd445','8e7180854beea8bbf3719d9cde94c87c0ce4a9435c19c0ca7b92c64ec3c0986b','ecc28315714c3c7af038418963a75a2298cc644c6c06cf31354f53e95a642886'); -INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'ba865dbc8263aaf153d7264dfc6a580bebe9391ca0551f15a1c822c6cbe2b8de','cdf5302da97635c682b957d8deb2ef5d041cfac60a859caf0dcec39b8441aad8','1a47d24d871ba2323c3932e70317520b80e2eee6bcb5155ce8187c6e5e2e96d9'); -INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'368e948cbf42de80aca51abe75d09ec78196924453719182ccc86419df5da2db','97366e41be651e4f7e6a2a33d135c77f0081c5ec1c15021e3488b992afe1f653','a6a0c0fce97d8b86e995244255c1dd3bd2c35a863ce61e1d56b29a5246d69cad'); -INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'9f7132c808936f580d4fb1dc5791541a5a3d23532d1093c20d434007f8dde54c','03b528217cc61fb49bc292ecff010dcfb052d980ad65b5eeeb3141cc2c8c7d0c','2d2240f0af2a5dfe951eb5d1f65c093a18438f8b0967280fbb4e8783ee6294e8'); -INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'074ea6f10a5290cff31f7b21483f7b2248723c8d1b5bc060c31219f66f37def7','ca60f54cb588a625675c6c8480597adb052d437d15fe6de8bbab2760f023b8bf','4213f8f50b226a1f7f06dc286479aef9462c1994cb4cc3eb5dc08b973c6db207'); -INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'a3ade2b2e5bc701996f511f3e85d596b60f882a3254fd975769c0f38b3b14cb3','a42c90d7ad48ea17c1aba8698f6be1c657205f312f2d9b555ee23222fc0acd5d','60db353447f25d43682eb032280887a37fe0b9a67f4d07bdbd2a268ec5530d2b'); -INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'3bf124a34825b5c487c94dd79b1ea4f25e657294966879f1c10b56b37a3d29b5','84be0933934932b0cdf75ee976c412234ce556d0fcfec5dd70fcbbfb335bdc2a','d65f7c3e0035b4dbc08b62f454a181ff97aa2f54c3ae476b64694a8082c88dc5'); -INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'e502eb7b282e0bd4940d8f75ef51d677a641f3d55304adcb015bc249c97892bf','b85fd660045c72fda54ac54f7c309485f40ce610b034acb299a7920b1ffa8b0b','97885f54e8606922753c57f79ac0a34b22744f758edd2d8deaf246542586d03c'); -INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'d64b5eb04ddfb5600be40142b1fd27c308387a35942a6e8a6916407bbc1313b1','927215893aaf1873637a1cc1ea26da0103ad2027bd10bbb2cddcbb1b244d8b1b','8599c2ccd9217f6b8ba9e3e5722277173224cbb29ae039919ac83dc94e7cb9aa'); -INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'e9c97dd7adb1b22d4ed0238607faeb2d14c090fbd7d685275ee802ab23b4b740','6685db9a296948ceccae10407621f5a89f08501b6169eb0c3d0008e9258e7396','a71261d97d46314197c72d82129a029f4f82286941b02ec81bc5f1d29a036255'); -INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'2544ffced9af1aabd84ab51fb78c56c9beac03dcb286aebd4202938dfa0754ea','34c99ef430e6e473f4e7848b54551e92251a8ad1279f191c8b3ee155c3d2e225','603895ec674edcd02465957faf31d9d855cbbc1b4907a19e980e3f577748ef82'); -INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'4355d3ebb95187fec36b1847a4c3777d8e1d5541bd1d9ff8461b8ac5b9881261','9c98de1a6fa047e68bd035a876b0556d08b1e188852660f2f6534e286b1a5723','abcb6749af8606f2fa8a1ba15a8ab20b2e98bbf2b7763d795d10a4a09ad95d46'); -INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'c7fcb5134bd8131c035d65b5eeef8a3cd214348822563232a992f3f703c6b0b9','0baa41b3cb2058576f832e7d9f59c40c693b908ee290668cafe23261e7470fd5','7beb702115bea37dd5eabf25aee4247c13d9bf315a6a13793c79ca0fa478ea91'); -INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'c41c280498ce05d6073fc6e89be2684dc68c345c1c43c00b9a3f9041954fce26','efa7928da5996825f879c83134bae659933d2b757ad9627fcf554de1908fb8b2','efc254416fab775f25eae1d9a75399df9dcf247418cc79bcdba0a08fc5848225'); -INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'86c67fd234ca9d2406080018b2677386990fac477db8008c0092d40a398203ed','0563c49b0057ba5ca7eaba1d4617d9209aa3363d1882a3168cb800b423a01e56','e2d2686ddfe710f3796bb20cd792df33765431b0d8a1bd2247526a085b71f79a'); -INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'3ae6272437eb0758a779d68785c41e119d1204dd5421c78e03b9d12eba64804b','a77ffdfdfcbc0c909d943b75e10fb9286c458679ed13e8a8d938ff020935dfab','ede035f778622d4d127babd9025e224693213b216fa416f888885c3b83429af3'); -INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'18f7552567b898f6c2cfe8c829903912445de5dbf05b56a13bf9b402a24fdc11','4b597ae170bb4bcaefcf488c0321856842aacd7a8d1ffb15b99dbcd5794c9f62','4209698c8a5630e7adae2ba1df411601d42ef05c561237263d6cc528b579dc56'); -INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'85f2255f9256a5faf59ddec1c58b1d3bc12c91bc2c62ead61b48e1f94ea2888d','fbfb8286910b3b5ee59a13b1ae371519c3ce18c11c9ffe9d5e13b82b312b3a19','4a614a74eb5941273fcff2ae091ef35df36e97b7b3e85831fe34d84ae92e4846'); -INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'b799477db184351df5503f8d15d5461a0483ea35142c003b7e640429663ad943','2247e92fe98e3ff04854b0931a6ac52667b378adf2473df4f72ed4727e23d7fb','7f127832f2698e6121d13daeecb5c83072357cd6f07ed3d7296a04697f9102e6'); -INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'efa9cd46741b59e74263d6d348584f1a61e8ba32163c09fc3ff2e41a5431a483','3141d1828980a8449ecc563fe1c6fb8b795b16167754c569ab4714b191db285b','e77aa6621b6cf6294bbab2c20067673a20c7404433a0961d72e2cf92a383dfa2'); -INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'f3159919f381d46a3e1341703e55192a02a36519e71fc2675285a3a14c4ee04d','eb5b80d9e47c2d4b233f95c81b1e7ade70b669824c7e88f0dd74bf12da5d98cb','02bebe712a8444c3f8a226b0ce967b2a9d8f1327b8fc6d41ddc1596b16e27522'); -INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'961c79ea2b7dcc2d7489c423b568fb978631e71732d6b998bcc0657aa4d19194','1089375f5640000baba2e41fd650449da2a9fb78cae1ecd2480d66e34cb99113','abd04fe017b05d0c1e4224e34293f020b58850d18c0c88be442b5ca644982d0b'); -INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'d674c39010fd4554efa487d97a3d9cae278ed9b4aff0ce57db33bd881beeb3e3','f749853a13a4556cdf6c6f32df5524fdfed3cbe833a5cff391590a4fee91f85f','6899b6fafca43daa8379ed93175d7cefcdb08d0c904df86632b9ad112211c749'); -INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'9ba70a032ae92672174421689c0845784f0cef7374e88b2f5258260191864bf1','638f8098d799cf20bfebf815f52ad2fe877293589cb5bfe9267f075599cb25c2','5acd33bd7e4da84f58d556cfa42fb43b3d0ea0523f0b739a1be5ef29dd9f3407'); -INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'114a6ab930fbdf8531431620ed219db3756a634c5b99af6ce1ee66d527d277ff','c57389d20d41056859042d395dad71684bcdb797702b5ca1fd086ede15d416be','7bb43adc70dc4621d34c4f7b0153f3351dc2230111717f3ba927911a2c1c38af'); -INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'5356512c94ea2c77623d874a927aae8c3dce287a34dfd27a617abfa57142c7f3','e8de25b5f0d9d8cdff0fe8fd577debf9e03b6d084ad879418daeed1cd3fbaebd','ed273e1eb904e548c4dc1af3e59bb854e8adefa407e65b913f3ee35e57804c3e'); -INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'0902ca0868560d05049c983bca3ab91cdd5eafc46ab0a948d702abcbc4010582','c6429e977bd821d46209f8646005070ae8100793b3ad060a69092defe8b6479a','b32c5d4fe47b5fee90cc2f6376efef3f4509e9216c0b396ec9fbb2846a85a855'); -INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'978794628fc95756032cb7fb4e9d5ed286373d84fafbcfceec9af71d18c4c0be','ee0178d893b2d6cf67e3d3cc931e1adb20a6dad1e60374441f6515ea2a024b7f','641684504f577590958cb8b297053876e58076fdaedf41c3fa3ea0e2632b66cd'); -INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'ff16abeb1d35e0e422f165e206b0d69e0b9ff48b68fc6656c1af74801908b92d','89a9271b8e1769b1c646dccde638e476b5978e6f1febc2d46f27cf547ac5944f','8ff65e0e6a5af46f64770d1c2b22088b05b70731df474443ee656508c65ea0ef'); -INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'556ff900993e70cabefd05ddd5dbe3e8e10bb5c9ada7913b75d84af067004ed5','1efed29a498e9ad2ad5899e1885a75d3cdd905ff35fd413884f1b2314ed09581','e884632fa35556fece3eb4c427100b1f2138d591414ad2bfee691b420b6cbc06'); -INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'15af3a616a2974aa70b7b58f88132051f335af299473db925b619fda8be1afc7','9f8f9ef8d3abda82ec27b7ed4aeaafa25857c763f49ef0efdde8813d396ef0cb','430a31d4d21460ba28c17e13323ad59d6aa7cba3ee457ca7ab7c97272c9b0bdf'); -INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'ed0ed3b480b38929a425c2b61c86582495764624e020cb86b3a95fc7d59c692c','8120b49ec58169764118faf50bf60029b977639b1790be0d57b7192b96c3046a','b14cf47db4743b6f5675ab729ec3d57445a6566321f4903bc6d15644cc3f0d12'); -INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'f012825d2d549910910ad6b7e4ac2373d095b53869f0793709684f0ff05bb108','0d9a6ff9b029b7efbfd21dfacb7473626aab4e46c986412d26c28eeddf34a049','c12c65f4e54efaf55ce641a342687f093c67c3aab15f39ff850590b500b59c51'); -INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'90c08144277fe622573282349edaf9e59289b716b5b4e368d88ac25e67e788d1','cf91778454007a015a01809f226d6a0b603ff4c02c731165c61b150b4016782c','3edf577c3b1874224e12aba021ace1128f19459093442afc256f36e5992fed53'); -INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'c888ae590b64fa4514ed7f94ba785b12e881052185cc4702b598cf6e48cbb3ba','2bf8a7557b0646f2b868dd63707e3421d083ff43d146a30f6cb8d50fbf522d17','52b8cb15c2a8669a772308512548cc5d7977dbdee440803f70aa2702ac6d06f6'); -INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'e68c9a569fda6f1e1e59502953c9735857a0ee158a76397722436466df24708e','44566226444e1c11efea69b48f8b6406e3c0ad004197a2ba1894629368c0ce1c','070c34a2e9324cd88a9139b882cc8eb046e613820963ae4aa849853c2147d3dd'); -INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'9f6607682f4a6274c2a45895f849816aec83ff0820709ba781634b84518eb05d','53d0cad4ea1b47791128e1621d72863f6bf7d9e9c61e5b4b305acf2731076e95','a79e48dd0db1ecbd284c58e6455b42b7c918721272374d9b4e028c6cb8534528'); -INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'49b10a5c390f603e7be0d405bf1fcae95fd15682ef2e41a3b2fcf713d271e541','18fc665a8fcbdd69cf21780e6e1addd3b2e07c6218996a5853f0d7c1d080d38a','be971cdd2254b8dbffdf0d1850558a3a03122bdba27fad64e37f1a6fe32be703'); -INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'1d6cea34d6f7042ced3a5211da80de88fa77c900af5526f3033b715e4f68df17','27389bb1c158cdd83b61484951e0fb5ef1f86c9f48d6fb18ee3c0d2b803ac6d4','81ae70236d60d237b62126f557304eeea372a4998fa674631c07dab285608088'); -INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'0c43668fdc3d6cc6ec84fee99c68f0eff21650a618db35bc20e428550eae9b0c','3ec1ed737d95b213deeaf5801fcce87d967796de0a8d519c84a08b0895a11c34','dbaffe23159315afda374308d5d0ae3112e0048852b8c05b34fb87e9d0267cf3'); -INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'cf03a34b29d3a8f8ea5fadb017426f2843c6ab2e785032b6dec70d7aba7bce4a','801b7dda37bc274991b1f4322af726ee72e098468183be1931175c57ecdc9434','9b2cb332f21ab2b7a98272208b6d24fd799ea38c99c689558c971ad7907eca07'); -INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'e145dfc2c7f053a1ba4c8a41d042b40c0748eefcf9e56c5e906ad4b12f3653eb','2e58a9cc3c5142b6bcd3b6807e1851d5fbdacd80b8a6cd326b7dc70143af7112','5bcd6072ee322ae89f30ce0d42a1082c38d9eaaaaae221f078e638a43e27a6d6'); -INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'ebc34184623da16251782c82098c7fcfda42f95b155eadfacab2a53e3b34333e','1a31f784c683c1eb9e18f92a6cc9e7aa2175543baae0df4809c3469d581d1257','5ec229acd45b02690ab099479fdf53c3d56f77971c080d6ebfa340023c2093e3'); -INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'db746a9e0ad8f37c14ef14180dd1bc562ae757a6d4d042a517bb8953f34c6958','0476c1a4ed7ab080b63f27683208fc2250c0d9d91ffdfaff8cc8b46864cd00fd','f20a5e9050eeaf2e8d4206069a7c28210bacc3f4d6da9e0d6568a81cfbfd91c2'); -INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'cc71a63314b770e4e010bc7c66d8ab808451b6401e6df8558455a2bfc9bb4882','7f31e86f2f2b89f0832f2729d23e321b25db963acad6c4cb898432a2815bd924','a0cec8d0e4c3d0d23911acd69f247367cf9e8b716b43410ca87f9d0d2b9ed636'); -INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'a5812c0f3a37b04d5105bca6b0c4819a41beeedf5b0f314f476ab55d6c31235d','b49ea91f85529988a43ed4cc1730957d79025e9d68724dc693910c9b297f7622','51f4106632d997c8a0544aa9bbfc999fa7ac4ef5e5a6c8825f56f5d85376aecd'); -INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'14f065751896a2724251b6ca6d0297b344986980075fb72ad058ad0b5bedcd3c','fcf4532d25e78bf648f88178686ff2a9402e06f080cf73ea059b9b57afdfccbe','93e821ed71ec39f46fb55babf9997c2e4f484729926350871560997b77410c7d'); -INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'a7dd17b4760fb65ac58be1b1653f7cb0e90574c47f70c61ff9f940ad15ad3658','aeb34df363fb4b0a8ddd634858390ac460d0933eec0cd4d08eb8f51b3034cb0d','99b93b33e05f5640b0800f6324ebdaa62193ff56abe745efb28aebada1066004'); -INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'8068a6bcc5d1fc1a78562f0f3165423b45b4674e55f21c4c09948fb65ee632c0','3a635159c2a0ab25f3321c66a211fad9043713fc3f565729fef56cb4422cdb01','b666dd42d3bdc6c509902fd5a1b3b49da9184238863b6386ee404158ab239c57'); -INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'af86ffad4b8dd68a0f18142935bbb18623cc5ce2e9e0c02f04c0e7a5dd974e17','34ccd82160b077e1558320f693e8783b05fded291d4913a411cd82bc9508eaee','c2c6d8cef5062d35eafe84b684789274b0dbab407020e28a6ca4d139221b5a06'); -INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'36de48518d1446b33f2230c5eee7d18e040db543fe03dca001174f8382c209ee','96a02efa035cbd69c60d4a8af772f617a328b15c344d7461a810ffcaa0a48989','427ddce2d7279f25526f1fd94b182e565b36e41050f26897dcbcab51b0fc9d82'); -INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'4374f567cbc460b73e74d6190db353c3ee86b92c3f99e392beae3caeb264eb5f','150ef2991aa2b7708c1c889d17ba8b6ab519a7e70c798520e1d29685b3109267','abfbfc0784f2fb0b782b781670e0c9eccb2fb3fe21e22c5bbc683c273b16a9a2'); -INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'54fd95cdf7f9374d1687590f2860276afe67a265ddd9216e5b63fb06c5bd569e','b2d4b4d6a29e570dd4f54c5de9a6aaafa9acea32cd7c2ec6358f64ea625a0cc3','3e514dd111f8583a4767e2dc33dc388bc2ba022240daa637858ba6df7866c83e'); -INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'2b42e23b43d30f91fe7705a01f0c8ec86d6230815b587704bcc70b91b5ae87b8','5af5fe539d57afc520f5fa50f7176843531460f6de095e86dad351b619d705e6','7df9a94e58faff41dd4e09af32fb74745e2def8b17378bbea51af295b2d26fd8'); -INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'577092728a4dc81cd9a06fcf6d2b058f0e4ce8bcb395819a704d6b4144f041dc','ea08f38c5466151bb0a8bf3fb23db915cae86c5315ae425e579310970c81a48c','81ce2a210340735479a21d73dd85503ac40bb61168d5a5957aeb9f2b0a56f9b6'); -INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'d1ba60181f3061673c64ecd0b92abbc19b1a6e69a927dfefdfd8b8c74171ecd2','c97ce2f8652af0d41166f96a35f79d7d330afa612d408a9ed41fba3275419e52','f0b29072c87e30030727658703ca1e602e6d14d3c6819171ad081693a79ed4e5'); -INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'c0a9270d15793e68cfd1cf445315d737bed7052914da6def4f014c21f0c9e0c5','e4088510e8b02e2b5819ee81923ccc41499157aa2ce3bd5107ac6cddba4b05ae','ab5b2fe6bdb4ab329396736afc86ffb939b6a32cb9fc66a93da67b233969d134'); -INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'74eaddecbf5ab6608c1e95c1c313c13f2af2b649512cc8c7016717d21e93f815','c4768ffa87a9b119bd362f39e4b17d6571e7364801243e8d0cc19a31db38d30b','3122061111602ce2dbd3a4f6afb624f41920b334d4ab7b75d36b8de808e98269'); -INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'a759e3aac1b015e28b8b524106a74b943b215faac8d5079384ec7351b2239bde','1683a5b4364d553e2ef30fabf4e20c1ba263789cfad94b3155192ad47f9bcbf9','52ec84a940030dd12bc0872a1710d547e205f0744ed69518f1ab6c3dc617e842'); -INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'71622e25e8497db6fa222e33c60ea582698e72ca5789a52c9252bf51191cadaa','cfc65becc71133ae9ab2359117c28445f559ee165bcd1148751a455c416c32c6','da3288ccf6b7a950a75a354011d1a7b896279ec534f496c5a6008ff47ee8dae6'); -INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'47e9d8fbcbafcee2b4c145ce651333ce49812533d13f7f9a0e9a448f51cfbacd','8992dd9243f1ea83301d6fd669496754ab782e7d2902ea4b3ba2d669db385bb1','c64eb468c761f4ae122b966905958ee42e0089ddcf2eb92c03d7dac7a9384f3e'); -INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'e61148e7a8125f7225a6b6e1d77786f8b28b0b8a74e60fef3f75fa4de8f7d882','5952412a3bd08c9c0fe08fc49406a35a6245b267c0d04349895c8df1367e65da','d57a6ded4f228a1212c06e52c98b803beb021ff5c005b2cd3076ad2d529ac1e2'); -INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'20fb450589ddc6c904fbb61cca8588e85e865635c12402ce7ae72995ab884c14','8b1c1053f8ab1bb8281fdc42cdec916b1905ad594a32fbfd54ab00cc156ff652','a79c18b6865ede3b6c9f844334508b80970695c1251e02579af90e220eaf9d30'); -INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'9cea37d548308505f80dc438d5183bac6c6ca424ea4dd9c85d883b05d67cdc92','e8500ef3c8d7c5b1dc0d1c34942335a2439dd03d3e7d706d889da1d61ad42267','c10260d84814af2406e9620188e73103ea29f784829c9912766d62bc74b5005f'); -INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'e11bab5fba2d038086c65030b90ce1cbc988314d0c9846aa7ddac4fd357bd01a','dbfd714658165162873c8e9ba993a3d86dc09d775a27d74f92066b85d04f5d2e','07eefbde9ba4287ba2d0a834daa630053fce4011dc335b3b62d9bd239da68633'); -INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'777873e7ebd0ec3052be65197ec0db8bd72e46d2053badb0f37be1f6e84ae0b3','e532c1946b8adec70c5f153ab85d00d3323837028c9a2efaccd53b7fb0827bca','1cecbd8673833205ad259ead04849aca0dbe9db947ef8ff65b14a4f6ddc33bc0'); -INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'85a5ea57af33dfddddbcbe1a1c87994efe5a21a645713aa164f19e19bfb23c64','26d26921bb7e05c23a4a31497610711e0cfa0fef4b5dfceee22a36192c853710','84cea7f6075dd5da7f2f498092108e7f5bd22e9611b2c40b0970fe964776b1b5'); -INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'bdf3b6e7a14a3aa22d42a7d69f2f96b0993f1eef2952a7d74313c37e1b407523','b654d4aa73c8c571c7058025a8b78c2765a4a582b0bcfff6a2e2ff01cc3777bb','9cc8fc568bc3008a389f173b90dfe3247f8fdc387035bf92b0d35623b3ae5d9e'); -INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'9b3ee688c5786ecc438ec9c843ba5f898fe1ab1a8bc3903ad7789aaf6b0c0bf0','00ad0cd62a14650866e633959294cbb60cd8eef37a3b6f9e1eef52c6d7113724','867caaefb8a6731fea4143e82933bb5e2e57b9b3b62cb065915c6191ff757398'); -INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'25578ac389a77dbf9589b23c5470f3199016ac66a415540ae03efac29dfe7adc','9644cdc3417fe13ce0b86f2e3eb0076243b5de912f0c75383fa5d2b946cbf9fd','90de122faa8ee2ca9f4ddc4e231cc703c3d49f27dbf70353dc7612d8d5b639fb'); -INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'bb9109ba299c99cb104ebf2ef6e75141c50264d701d27119525ab5d0a54c1a40','e40c52b1a2c5d5dc99d89fe37cf0dfc5ee14a60f9cff42e67a9a66cb41083535','73a2c267e380b9d975fd8707dc53b6265ecbb17edce13323dba209777d5f05a6'); -INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'cdb21362b3eb4fc10ba3c6bf3aba41bfc5bd0bf2475f742c1069cb4383be7b95','dde50f429dad14f0cc40b308caa95defd6d6433e8bffcb3ac94d4195c6a4d6ce','1a93dbca4645191091e09bffb165bcd5fc835c7c9119a3b54eae867f75eba7a7'); -INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'b82568de09fe4ea06f3dca053dbcbcc61dbe5e44dd300a4301c995ba180f894d','010e8ef2138afdd69e97a088476d124886d423a11c543b45f6fa5f63d9e4df7e','17004be78c855f847ba3b744aeef996239cdfa37f5a7df2917b2dc7e5be69057'); -INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'513c4a041ee80ba72d1d8428605c682e3485fa45341460bc33fae6540dffb571','cdfadcf4d34670637533003abc458d84b84eab903d2bc2914314ad8567b8be52','1806e9c9a83fe3b4ccc5ee881a8fa37147cbc7b741ada249115544444a7087de'); -INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'3e8ff43c8d671159355b2d40a995fb8f6d84f6216fa8326fa80ae39aa9d15d03','0a1f425e3edcfc1685dbc8ac29f770ce39354eb4142c0b379eff383364774b44','051c9ee053de82324caafab37b961d2f3e02700575d344726f0fa1bbea32b412'); -INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'19d91de7be12136737d3f8990e7a4a793912c952e71e017d723d750118e849c6','e8579d991762638c0cb98a9fa6792a225e4964f93647b3aa2f20caa2f38442fa','8565129102742409356c875dab6595fa6f45fcc2a1ae562e1c6fe1130362b1d5'); -INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'be75df2e5aff3faaebfc0ce4ab5134790fa728f84500e6989739dddc058738de','14432262fbb1cedac52a937bbf5ad6e923024b8216365a13a51ecbcdad54e596','0380c34b5c5fe065355b1cd2b7c4e5c1e3d87c051942b6e67ffc8a0cc5df0aaa'); -INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'9090b8a4a26ea7dff75658317ce2c6ab828b3b42684922e44debfd1bf8330b8d','98ca31667acc568b3e65fa00a5cfa87eb1007cd136973bbf5edb3c85e48b5f69','8ed5874fb604faa6de66018ba574f36c55a0ad5259af9b559d7f8bf5e9b31d73'); -INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'d48d30db433bcee44d87153fb3db17d37fbe3534f23eb16ac853b3420d86d80e','5032e80b40215de67d4c98bb014a2abc17655d9f5ef2dd58ddfb32c3c278be47','c381ddffda4a948a5b56eab10b263dfa211f5df12888c28e77b54aef748dafcc'); -INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'53c6f9247cd255c86a69c05c4463ab94f9a3277496c155398c38dc6f7121fe9b','995d0ec365efa6e802dca5387b57112e524153d8fcd0803d9e1f20fb4ae9ed46','f2337666c6747bac38d390ac57c195bd0533cdf53a1cf91b8e44b3a868aa8fd7'); -INSERT INTO blocks VALUES(310102,'11e25883fd0479b78ddb1953ef67e3c3d1ffc82bd1f9e918a75c2194f7137f99',310102000,NULL,NULL,'b225c48fb4c40b2e0695991251f6d69217df6e00c01613e0a20f6a3e34f50d5b','2f589b56d991d3b5cc11d27390a75c356fe32f9535e569fc08868b25dce8cbff','72a77955e2833742b2a5fc2f96f5fe0390f9da43fc5be9954e5536780c603466'); -INSERT INTO blocks VALUES(310103,'559a208afea6dd27b8bfeb031f1bd8f57182dcab6cf55c4089a6c49fb4744f17',310103000,NULL,NULL,'fc2a8ce8efc122e5cbd631998e611dc8707cfe0b8d3f6a531fe5bcc21c17feae','6503177c07808688b09a59dd91ef980354ad60ffb868cea60150a38fe157275c','ffbf949bbefecfa2f1c174765d07e9e7c821c816e795e370aa7ba30c3ba95443'); -INSERT INTO blocks VALUES(310104,'55b82e631b61d22a8524981ff3b5e3ab4ad7b732b7d1a06191064334b8f2dfd2',310104000,NULL,NULL,'b1a7115902d371d13889008320e52473cd5b34591bd657e372c0048df020012e','b83f85260d4e003f3748c57cf6a159f7d522dc999f67cf03c07ea5d9e591aa76','af2e9b2044aed8eb650fa08122536fe8055bfb496a3a45436d59236f93d5bf4d'); -INSERT INTO blocks VALUES(310105,'1d72cdf6c4a02a5f973e6eaa53c28e9e13014b4f5bb13f91621a911b27fe936a',310105000,NULL,NULL,'b5fcda12415e713fc81278b95515fe86ecc6beb5810e4f80eb9645f09870dab0','db1a4e55872858bacea65004a4fbeae225a7e1e0f02478093d087ddf6a7fa5df','2988173d827f7e27873410d4bd6406db72821ed295aac4f9665c1d080f025c41'); -INSERT INTO blocks VALUES(310106,'9d39cbe8c8a5357fc56e5c2f95bf132382ddad14cbc8abd54e549d58248140ff',310106000,NULL,NULL,'f3c98c954cf939951d8b24a257bc6b1bc152a6a0bcf6b580ac281c26bbf16499','58b8847fab58f8816c541cd5a53140b0d7094fff2a7016e9a00a05e872f488a5','bca154ed275df33b4c5c93ccda4eaa9d5e39039de94b76fa712008dc01085e14'); -INSERT INTO blocks VALUES(310107,'51cc04005e49fa49e661946a0e147240b0e5aac174252c96481ab7ddd5487435',310107000,NULL,NULL,'a550df26b8dee075bee82fc59c44ce5cbf65fe9df10c60f3f3009faa2791c783','67aa51c5a5ccaa239273a7f9b4fdeca11126f6e30e6d5ffc99d9431328778cb0','3df5fd222e7fda201e4cbaa99f321b2a73073e6e6b83dc9c4e03c21a8275ca0b'); -INSERT INTO blocks VALUES(310108,'8f2d3861aa42f8e75dc14a23d6046bd89feef0d81996b6e1adc2a2828fbc8b34',310108000,NULL,NULL,'e1d8c345c74760010223a823895471d3ad6a2db5c6a70b13850d5cd977414518','916b7cf50fc15ae71c69acf1b707466233c009b174a388ca4472f99d86d4125e','1d768e5024783de603e65a16b7541c877ca33602ab03833dc09c014bfe08aa7e'); -INSERT INTO blocks VALUES(310109,'d23aaaae55e6a912eaaa8d20fe2a9ad4819fe9dc1ed58977265af58fad89d8f9',310109000,NULL,NULL,'8fb63d8460a222163d15eab76a61e383ffa251a175c16f209648d6782c304059','0e478fd6db789d1e5823cf2579146d751f6326c5aafc387f0ab5fe622f1475e3','915a2ef99e5bea2a33502186395f25e9b192db26286a338a754e9791c700ddc5'); -INSERT INTO blocks VALUES(310110,'cecc8e4791bd3081995bd9fd67acb6b97415facfd2b68f926a70b22d9a258382',310110000,NULL,NULL,'250f7b5c6f00bf06c9cd4de8dea0b8166e2decf093910ea32eabd615b910e7e6','e3bd0a71047fad1dc1c56827c57b7fb1dec6c0f1eb9c23634ca4df6defbf98e2','cc0e45bbef2909163212395ee4d3c61bd2e9a05ee28dfe36314c968c7f637eec'); -INSERT INTO blocks VALUES(310111,'fde71b9756d5ba0b6d8b230ee885af01f9c4461a55dbde8678279166a21b20ae',310111000,NULL,NULL,'0c3c3d099bf08803f67c2a77d0d67779674d1063cc72d8794b8fe62a55049d75','9d461b8540a7534c81f03a0dbe70a8392b226d63c1a15501c01230f5b2e8811a','9f1d6fc87a91539c9be4651668432a57713237fc5ff68ea5f661348c97eed17e'); -INSERT INTO blocks VALUES(310112,'5b06f69bfdde1083785cf68ebc2211b464839033c30a099d3227b490bf3ab251',310112000,NULL,NULL,'557fdd1240793f8607a2b4c638ce800d5260c2adb294aac95d6c5eab7e98c3a9','e11c4c5e10029301ebc6c9929be683f27e64a0a298c488b560aa7e43ce6d8349','c5c7974c8cf89a1823c26c48ca792796299196bb68b9e524518aaf0ea469e9f8'); -INSERT INTO blocks VALUES(310113,'63914cf376d3076b697b9234810dfc084ed5a885d5cd188dd5462560da25d5e7',310113000,NULL,NULL,'4ecad4a5c8e9b54101c4a037d6c86a7eb36d3cf0503e60a1bf13c5a4196c5989','5bea44b1b28d1b9dc3f425c32ee0e53cd157abc13cb6ee898bbbeb1c3a0d22b0','e0489426d8ad4dab9ca2e8a499d0a4f42fd46df50c9932a1617a5ca1a8416919'); -INSERT INTO blocks VALUES(310114,'24fc2dded4f811eff58b32cda85d90fb5773e81b9267e9a03c359bc730d82283',310114000,NULL,NULL,'00380ec3118a5e8f9cab403d10870dd5bc339421297fcb6196a3112d70541ecd','e98f8185a9984845185d7913c54f83c2f53dffb5a36fe8e57946fd2b1915214d','e29b262eab52345ac279f91379846327f1dcb504992b97435531858f67e65ccc'); -INSERT INTO blocks VALUES(310115,'a632d67ff5f832fe9c3c675f855f08a4969c6d78c0211e71b2a24fe04be5656a',310115000,NULL,NULL,'0acd3a07c5df54e883ff9871852c961b00771d3f4afccb3b1941d0b1c7b300cc','a17e953f19623e68808846a06938f285e0749e2d0987569f6e2aa972848a1455','1fd06fc360a1bfee4db6caa7695560bbd32ceaff1853d30ea24b9f929958f5ac'); -INSERT INTO blocks VALUES(310116,'8495ba36b331473c4f3529681a118a4cc4fa4d51cd9b8dccb1f13e5ef841dd84',310116000,NULL,NULL,'6c6845d3be70cbe9a71c33227983f695c96877aac6d3a8d6a6839760b4691d25','d9df2bf35b1c7ae44a8691d15bf40b9256030d62b8b81e1efdbe9ea78d20569c','f5fb1aee9bd68aaa6f9682b497bac2015c081f23cc666bbcec87eccd5e736584'); -INSERT INTO blocks VALUES(310117,'978a3eac44917b82d009332797e2b6fe64c7ce313c0f15bfd9b7bb68e4f35a71',310117000,NULL,NULL,'0465a90ff545d58e69c07c204160360bcc6fba5cc60fb81d7e6e389d9ff8133e','49244964fe400b26274e945fe10a4920c4e89d6aa7e456a914c34bfb91752e86','fb176fb88140d5ad1f20dceb6b6b232374eb9a1cf8fe43d8f1e4088b88daab3b'); -INSERT INTO blocks VALUES(310118,'02487d8bd4dadabd06a44fdeb67616e6830c3556ec10faad40a42416039f4723',310118000,NULL,NULL,'011ed3df8ae72a02b686e98aa8db07c973e1e12c2ac09891ba90d783ae63161f','b92d8d98ce77b6e8fdd9a83ffe4acf536a914de64317e0c1f12083f5ef75787e','4ecfa8564500a1c5a0fd3b613da2c504e19bf92833624cdbc25790470d871a4f'); -INSERT INTO blocks VALUES(310119,'6d6be3478c874c27f5d354c9375884089511b1aaaa3cc3421759d8e3aaeb5481',310119000,NULL,NULL,'a6620b1b6a5b1f54fe6a8076fc35f0f3ce15315e9f549f5ff3fa0f5b6094919f','d6081506030f43ad7775be58a4a51ca6ca213873d116e32d42122e55713ffc99','328e7e9255ae45e1ee648940b9a94fb9093e9481a3adad5f07991ce1979effc0'); -INSERT INTO blocks VALUES(310120,'2bba7fd459ea76fe54d6d7faf437c31af8253438d5685e803c71484c53887deb',310120000,NULL,NULL,'e38e2aa0bf8831b90e69b40c78d4b7d41bc564527451b5f9b332bb0beb54c923','9e97e48c1396b69ed4f8281d20290918999832084f2430b138d0a3f27b697f60','b8f539d26edc746686797592ccc043f453382f6b9e27002e8bda5449b0442189'); -INSERT INTO blocks VALUES(310121,'9b3ea991d6c2fe58906bdc75ba6a2095dcb7f00cfdd6108ac75c938f93c94ee7',310121000,NULL,NULL,'5b988c8ad133bb5ff5ac1ee4ad0a6a4fd431247db373e43c9be2a020520f438b','a539cc4e31218e8ded53c91949db977b5e3f342cc1f0d2007462e7c7207acffe','aa32e729a2e45f77d192db5d878ad3acbce868ec2059c349120b53db7f046181'); -INSERT INTO blocks VALUES(310122,'d31b927c46e8f9ba2ccfb02f11a72179e08474bdd1b60dd3dcfd2e91a9ea2932',310122000,NULL,NULL,'70ddab8f1d6283ce5a054650dbcd02d7ad4ca9c35de7bed920c2f266bc092070','289e85276870a4437ef0ca299b3d01ef7105ddcce17cac0d4f842e43e1dad1c6','49a2be78882dc63c4451b4466b5aa0135b07491c078429aa02624f31d2a2d1ed'); -INSERT INTO blocks VALUES(310123,'be6d35019a923fcef1125a27387d27237755c136f4926c5eddbf150402ea2bbd',310123000,NULL,NULL,'3670feebcf979edce175ad5b296a4c88fd7fc6bdc251dda84d487b1b092e41dd','719e4fe7306e1f3992fcc6f7e655908dee1bdd4d736f2fc9b5d8432cf8e4321b','d5d880840e7e39dc08fa54454c3357a32e55ee655138ba5f337b1d3449083eee'); -INSERT INTO blocks VALUES(310124,'0984b4a908f1a7dac9dcd94da1ee451e367cc6f3216ee8cdee15eae5d0700810',310124000,NULL,NULL,'9883fff318e7cf9021fb4cc39261840f682e8adabb934549dbae2a10d2a71de3','bc4b7b60aebff2f8a6f0a90a3ddf1ae825b75cdc67cbec5ad697679dfc9798a5','cfc038baf2c16a2b69e057380d6d1e26b4cb87670606f07c1047110e1a0a0c03'); -INSERT INTO blocks VALUES(310125,'cc28d39365904b2f91276d09fae040adb1bbbfd4d37d8c329fced276dc52c6a6',310125000,NULL,NULL,'1840685242f9090297d4b432e305e4a093f90faa0b673953b648fbed948f31b6','fffc4ade708201ef1db941d52fb286edb95dc52d743b923db8a6e4b67345165e','c397b204931280cd0918c3cb934a583fe58c25fe462ac831f2465233cabcaf82'); -INSERT INTO blocks VALUES(310126,'c9d6c2bd3eeb87f3f1033a13de8255a56445341c920a6a0ee2fb030877106797',310126000,NULL,NULL,'1a83f417c18439cd3c6269626c44b480317290f0c27a9b9f883a01653de69272','e4de345ff05c685bb356a80c6e35f518a57d276d0cbbf3124af91b0684ce13c5','16bdaf9c2ebe478ec0525dc853a99bda624e1712e9105968f846aad6b291abf4'); -INSERT INTO blocks VALUES(310127,'c952f369e2b3317725b4b73ba1922b84af881bd59054be94406a5d9bbb106904',310127000,NULL,NULL,'094c53dfd00b5004d074987dba90a6c9c47841d01041d0aeb61923c48315d1bb','cda853e5e9079908e0bcc224c564324d89adf44ec628ee23c83e417b07298f84','72acf1d16a41dd69961d1b5b528a29fb2abb5e4aa25e8d8b743513a3d6822260'); -INSERT INTO blocks VALUES(310128,'990b0d3575caf5909286b9701ece586338067fbd35357fec7d6a54c6a6120079',310128000,NULL,NULL,'28ad1365daaadc866e79b6b1a555fa31bd804a85827d958cebb9d29511f78e19','1e514d834d1e4bc046a7ec8aec390eda0dba89e7668aaff1c397fdb536f3b362','59e3d59cb72f2791974492e1dec06b1dc31b004cb834512c434af0176e1a5111'); -INSERT INTO blocks VALUES(310129,'fa8a7d674a9a3e4b40053cf3b819385a71831eec2f119a0f0640c6870ca1dddc',310129000,NULL,NULL,'61587f9b5d05f8f553f0a4f580f38a140edcf7d9facb13c542865f5ec586a32c','36d4aa6383577e62add0ea6b720b19450cfdc30a4dc04715a4db6a8dfb877d79','fd1089b4fad88df4cf00f7c6ef195552dd630089a941b6fa9b789596e98c2810'); -INSERT INTO blocks VALUES(310130,'d3046e8e8ab77a67bf0629a3bab0bea4975631d52099d2ddc9c9fa0860522721',310130000,NULL,NULL,'1ee8c39657890ac946e2aac5409147cdbf1b0004db1f00d997cf45452596f781','47cda5297a15edb54398f98247b216c1346ad77acba914e958d79bd20116bd95','8f19f2a664e6e081dde908082b53d283d36737432f829c304d7a64dc2cdc0dcd'); -INSERT INTO blocks VALUES(310131,'d6b4357496bc2c42b58a7d1260a3615bfdb86e2ce68cd20914ef3dd3c0cdd34d',310131000,NULL,NULL,'aee45272e68725a2746582f1847582eb9808289d3deca144f8c6cb43bc4f42e6','9360404f33baaf439d8fa6bb56fe74a3c287ff4001f323d2f2258eb7ec6464bb','ca8eb34aeecb84c9c5c8843346bb1aaa6711c4648f19304fcbbb8ff52f06b2cb'); -INSERT INTO blocks VALUES(310132,'1b95a691bf4abf92f0dde901e1152cc5bd87a792d4b42613655e4046a57ab818',310132000,NULL,NULL,'a3fe51c1d168ed726a78b72db61175f2abb07ea6c614b2886f3054cdd1a858fe','92dae5047f6334e996fb687bd0ac1da3d1e982cb41b7c95398bda95190e0ec49','5e70c803f25fb73e4c9f506f73f9c0c02f7d0cc38cbef6ae410222fe262936d9'); -INSERT INTO blocks VALUES(310133,'1029c14051faabf90641371a82f9e2352eaa3d6b1da66737fcf447568ca4ec51',310133000,NULL,NULL,'626743e51b462163f23f22079d672379def21382fd88f9155ddd453ca3d633ef','e9fd8e2c5568a19be6da28a85a02756d8c5bec47c3e4efe46102030aaacc0e51','901cd70d5cb4cb85a54d6610182754e9e8e5ca6e162b71183f55e618f3ca976e'); -INSERT INTO blocks VALUES(310134,'1748478069b32162affa59105257d81ef9d78aee27c626e7b24d11beb2831398',310134000,NULL,NULL,'4b6e3202cae46fa80222e3ddec001213062ab76b8848eaaf4ab73f44bd84ac55','e17ad23b1408fdcb3963a28849f2bdc7ae3b37a18eed76d3d1ac4702601537c6','8495860ce2170ac73e448ade2430d4d5ce9510662d0b09befb8483de07c612de'); -INSERT INTO blocks VALUES(310135,'d128d3469b1a5f8fb43e64b40f8a394945d1eb2f19ccbac2603f7044a4097e4f',310135000,NULL,NULL,'e32784cedeadac39bb292da2c5eaffc983f416e0bf387978691e4c0fa5b1715a','0dd53dee532d924741c92a72dafbe91e15acfa49c3171c76a7a13d76230d9086','e3a6983c3bb4356a1d9505dd39561f973aeaf933ff2f98083e64e16144433175'); -INSERT INTO blocks VALUES(310136,'6ec490aaffe2c222a9d6876a18d1c3d385c742ff4c12d1334613a54042a543a5',310136000,NULL,NULL,'93c67fdabd991708d1e35dabbdf7acb4e928763eeb817b32a79cd0bdb414fd2a','64acc571fbb0d14272f97b8fa24706ddd6744260c143ac8b5626cfe6b67687a1','ce042f1a1d6065576d9c88b86ab7e56b4578516a24f8a94a60579e2b75e2df21'); -INSERT INTO blocks VALUES(310137,'7b44f07e233498303a57e5350f366b767809f1a3426d57b1b754dc16aba76900',310137000,NULL,NULL,'8a43d01155ba47b8b1311c41d5a57112198857701c2970d0fd373da04ef4e585','b53ebec2b854b66f60c4a993945195d93f39f71277be95a51b3dc05b8b1ee18b','46636f1ad9a4e7513ec9a2b015e3722c304177e5338b6885e0deb11a8ead75f9'); -INSERT INTO blocks VALUES(310138,'d2d658ccbf9baa89c32659e8b6c25b640af4b9b2f28f9d40baae840206402ab5',310138000,NULL,NULL,'4acf0244f3188f60152acc8ca30dcaeadf12e6669b15377c81b7e6dc3c8892b6','ab8a4c24ca358ca1b1da99a067daf3b276aa072cccc1ae153a224936b18c5f83','93df73667d3ecec5c0275212202b8178fd4b772b20bf8b1c684f2e377b5b4f14'); -INSERT INTO blocks VALUES(310139,'b2c6fb61f2ae0b9d75d18fce4c52a53b1d24772b1ad66c51ca51090210527d46',310139000,NULL,NULL,'2d77bdd47ed1b3be1c2edf41473bd5eb707d06dab33717b01c4a227f9855d73d','9156034707c7440a6c56018a7b5a35eae96713c3fa2142cbd9634565ffd5af22','140b91d18e589aa35ccd5b3a9a69235ba709e3e2db447732f598b873d18de19a'); -INSERT INTO blocks VALUES(310140,'edddddea90e07a466298219fd7f5a88975f1213289f7c434ed47152af6b68ebb',310140000,NULL,NULL,'277c0c6dd1c505dc6f9a222c737296396569d8e007c4b9a42582f108e90fa624','c882d908b84409f2effd43a438ae5c7f8b1f89479c89af32b5e5dcdcf9697d33','7c578cc443ed679012e29855f19398eb90dbbb80c6c113817874acd8789447d4'); -INSERT INTO blocks VALUES(310141,'b5b71d2a271bd638561c56f4ffbe94d6086debaaa86bfeb02ef0d71339310709',310141000,NULL,NULL,'f5d0edff3f22b2e025c884b7c738abe641bca9110a6b9a7b90de179fd6e5d2dc','8eae733fe82a61b93305afac29cffef82249a3776f6676b5b2bbfb240822ba44','4fc1008c35647460be162b1c4cca5d1933b3dd6f7953f171368e96b813faf48c'); -INSERT INTO blocks VALUES(310142,'a98ae174c41ab8fc575d9c8d53d8e02d8e446b8c6c0d98a20ff234eba082b143',310142000,NULL,NULL,'a9f00ec826a30e66820ab2920cf9573244a24dacd63d48c080b9e80b1c5e05b7','c422a01a0cc18a533cf42a05d83ead2783fd31bbfaf1767f6686a07ebd5eae9b','faeca60433573160d16eac8379e15f17a4cc33a4606d978f009b99f0b55c5c4d'); -INSERT INTO blocks VALUES(310143,'8ba2f7feb302a5f9ec3e8c7fc718b02379df4698f6387d00858005b8f01e062f',310143000,NULL,NULL,'b5765899f770fdb6cf1120535d85826c6b0ae44b16b8d5a619c5cd12c98783ea','191b8a6d58c089b2e889766a20a4d01f500c648241f96846f71ad1db748a39a9','726095104fbf7128f0f93c5503605050c43ca41e0637b15f2b644cc6fe0d9c01'); -INSERT INTO blocks VALUES(310144,'879ffa05ae6b24b236591c1f1537909179ed1245a27c5fdadd2218ab2193cdb9',310144000,NULL,NULL,'1a80f48136e5938b33f817a7cc1cb60aaf6d628b7811abd43e38cc807a18072a','238296aaa498d3c8bc112aa634275e18e4afdb17d46776b1ab563eef3ee9963a','bccd2431fc732000b37e336b2baabe93b97700e448c4d3b15f4c8d6423e78b84'); -INSERT INTO blocks VALUES(310145,'175449ef0aa4580593ad4a7d0c5a9b117e1549ea772af00caa4ccdc9b1bf7a6e',310145000,NULL,NULL,'fce2f084c1776fcb36b3ae3e0c952893934e24672ffa0d3dac72bb1278af8264','1d51eae9728b9100682ba7624af1a3666afbbe9f17c2f08a6b9d524ac2927b46','70ea4827763bbca4e44ec69087d2aa0ee2915fc7ba979db26bf8095b00fe1038'); -INSERT INTO blocks VALUES(310146,'e954ab6a110455d745503f7cc8df9d92c1a800fafdd151e7b1912830a9cb7184',310146000,NULL,NULL,'9a98eb971580a0a69fceafc5fd41f398f1908b626c47df57965d1863e9a24b84','8d25f726f189adfec68d15cf2fb2304aa30034d1b897095e7a640bbe82065818','584890e5f4c2ca4b701e7b0bf8309ee0a5cd471c5e05a59fc580084eb408834e'); -INSERT INTO blocks VALUES(310147,'7650c95eba7bf1cad81575ed12f32a8cc36281a6f41bef13afe1dfc1b03a7e83',310147000,NULL,NULL,'336a89d3d137810d3220d2de432f72e3b3ccd2ada2b746da3859c77dbb89d6a3','c529b8f4384fc9a4057b0b61de98b72f074715ec64aec0fc23fada2c878d170c','2d790c9567704a753e7bfdc6f396c10ecfbd8aafa0dbf46560fa1d082fd9429d'); -INSERT INTO blocks VALUES(310148,'77c29785877724be924f965215eb50ffe916e3b6b3a2beaea3e3ae4796545a7e',310148000,NULL,NULL,'f904794337dd67d356981d2623b8c3d1d78ba584cd98a8c1db939951d3102612','c72a91ec0b580ee15a1c1d0205c0633e7a46b95f6aff7338f5aad16132b149ff','ef3157bc81b6325ab25af9a34c6bcbf52b96cf254ccfeda35cda75f2d813f3a2'); -INSERT INTO blocks VALUES(310149,'526b3c4a74c2663fc04ed5234c86974bffddb7235c8736d76860778c30207b3c',310149000,NULL,NULL,'c2972fbd048790f54d9ecef4e18aedec8ae7aa28227d1d43bd19cd71b4feff85','1b550c4c4f7ee35d7e32fafb4fb77bb081b5cbc2903f3de5a7bccfda1c5e5c33','7dbaea6e496bf5d86631a07e1ebfa2d76816889fca9a4b9f0db3e1d7a8ff725a'); -INSERT INTO blocks VALUES(310150,'cdd141f7463967dbeb78bf69dc1cd8e12489f58c4ea0a5dc9c5c01ec4fcea333',310150000,NULL,NULL,'88b999e4ae34386b826b0f3b315953b5eeda8d9ef496af051498bfce6d8737fc','15619d5374a2d26c1343c44acdfa66e6baba73bc1f01ef715a17c6e3812f81d1','8ed5241c98ee19446c978dca2d228cb34877b213d6e47b894522438b7d59fb37'); -INSERT INTO blocks VALUES(310151,'a0f31cc6e12ec86e65e999e806ab3bfa18f4f1084e4aeb4fbd699b4fe284b330',310151000,NULL,NULL,'b7c176a2eff86655f8b0b71cc8bd3bab3a92ba203d4ccd911d63f3d2ce7fdc25','1a497ed2cc8e2aeba59750bfc4413f653b9392f4147d432512beafe0023141a2','6c90f9a4c15a5ed76a7706983f15c15fca9e1261a542db6a516ddff887537ad4'); -INSERT INTO blocks VALUES(310152,'89c8cc3a0938c63a35e89d039aa84318a0fc4e13afac6beb849ac37140132c67',310152000,NULL,NULL,'3f9471c393bc2bf144b17a5febea88c42982ae746fd700a5903c0e6e541e2b09','cbf06ace5a8715ca030f6d4835bcf41b47b9f2e8dd14ddc358f25575d3442281','4aa103224fdc49cd25b89e8ac68afc01b3a2071d8e7ec9d60ff4a6e8974611bf'); -INSERT INTO blocks VALUES(310153,'d1121dfa68f4a1de4f97c123d2d2a41a102971a44b34927a78cd539ad8dca482',310153000,NULL,NULL,'c6bc81e7b7e6758bbbfe10fa0e688b09e679fb74a18134639e172c18c6e017a7','48536be2fde4290927ccd5fb91fa59bebbc9209ce47a878e11d1e4c4adb62189','7ca3d7f2c6f187514e8fb232f31e1015a59c10b813852b2be08a7efcd9910687'); -INSERT INTO blocks VALUES(310154,'ba982ea2e99d3bc5f574897c85485f89430ae38cf4ab49b7716ed466afa506d6',310154000,NULL,NULL,'b3e07f9de85ab67e88042b1bb52302c6eb16b7ff45d5be6a49700f115ed396d4','eb1db12be0bb913a56d21c80ce0461a5f0468591469a2de95974f55f2d2aa197','ed9ab1b8937e287cc1186062360ed6a4e75837e5c89885c31e9da50dc3b8a5da'); -INSERT INTO blocks VALUES(310155,'cefb3b87c7b75a0eb8f062a0cde8e1073774ae035d176e9769fc87071c12d137',310155000,NULL,NULL,'27014841a468e23bcb70c718919745eadcded4310031a7be90a4732c96509404','6c49c35e501269d4c6738dd2624ba92c2e6696a9e9c1ca7a77a92c57734d93a9','a2575c50fea0d2e62363dced3565c543c035a434d8c7ce524e9948b9ceea5d3e'); -INSERT INTO blocks VALUES(310156,'6e3811e65cb02434f9fde0445a7a2b03fe796041458737d0afcc52208f988a83',310156000,NULL,NULL,'5597aaadb8cc75848219f9fde3f5d76bb5592689c72068db59922732e89eef9d','2478b8d4e5d43e0e79b4b4852da7be50767bc10a7bb56830c83878015e72408a','19949c34a4ac98bff24bd175ee867e57cc41330ce8d111deedfe28cfebc28434'); -INSERT INTO blocks VALUES(310157,'51dd192502fe797c55287b04c403cc63c087020a01c974a565dd4038db82f94a',310157000,NULL,NULL,'cc1ae27fef286424e40204f6b575e9e079e1f7a5ccf6cc356729a7c4a7f83eb8','edb1a3abf4a491156c16eb7a05bcddd3847fb0a248ac416285173853630adff4','b41ba71d905ac8da61c39db4ca1f775c7358df7232cdd1c3d83817e1bb253aa5'); -INSERT INTO blocks VALUES(310158,'749395af0c3221b8652d31b4c4410c19b10404d941c7e78d765b865f853559d2',310158000,NULL,NULL,'6d80d98e778b30c124b0255b3e72620f432245d0f841f6bd62a0fcff44843bf0','176df3ecb3cd79a459d4efaacb7a6849fed1b9210255f89fdc9c5f65d8512acf','df926ada83b2abdac2e23052dce4c572c7068f7d2621c7c95df0e738b011edff'); -INSERT INTO blocks VALUES(310159,'fc0e9f7b6ae99080bc41625588cef73b59c8a9f7a21d7f9f1bf96192ba631c12',310159000,NULL,NULL,'d8ab8bb14092afea6cc675d2f50891318e3169bf9dbe2d07e80c4db95f0f2033','21ddf629e505ce7e673aca4d1d3044e84f58c93d0894b631e26dc160d4eceb70','94a4ce2d2b7b85efd1bc1b12f76538a3f580cf6189139affdbc416a7bf4de032'); -INSERT INTO blocks VALUES(310160,'163a82beeba44b4cb83a31764047880455a94a03e859dc050da782ed89c5fa8b',310160000,NULL,NULL,'2d76a042d062b73b7dd956d5cff0ee397f068c04eae6cf5b9522d3d55e88cee9','6d02d8ce522aa2820ca0e3f491c294c5bfc182cc856ca8fd0476ce417c6fde57','4ad9c790717e236238e5ea772300258eea0f0af5a44d4a9f919c8accf4f3ddff'); -INSERT INTO blocks VALUES(310161,'609c983d412a23c693e666abdea3f672e256674bf9ee55df89b5d9777c9264d8',310161000,NULL,NULL,'beb3496742415027bcc0d59f3385809523c8783cd91a5670f2fb6fec3230e980','7ab8ff9d061cad9447edb016950df40217bcb2b6157e9d12f80f7edc732230db','8423151b04f173809c069326ce7e1ca24ffb5f4ea870388d76158fda65a8f3e5'); -INSERT INTO blocks VALUES(310162,'043e9645e019f0b6a019d54c5fef5eebee8ce2da1273a21283c517da126fc804',310162000,NULL,NULL,'066a2b93df863300741145cd6a4f1a9ea616bc787861cb8ab809f59d47a6fa1f','82b576cf11dc04712d54c116fdb8c332a84bbc20165633d62d69ab5c4851667b','ed0cc54172f00bae83578b7ceb114faa0918209fe6e4c1855560760ee2a443c0'); -INSERT INTO blocks VALUES(310163,'959e0a858a81922d2edf84d1fbb49d7c7e897a8f49f70bd5b066744b77836353',310163000,NULL,NULL,'460c271269ccdd8775925b511705207baed8fc212caa7e74fc08a80be600a38a','34d5b4512dd28171454260b321541a0abd66bfd37b74889f4d91ebf0c5a44a0e','3061f829b038356a41f5ae6eb87c8dd7aa9985ed395b36446ef5ba82039b38f9'); -INSERT INTO blocks VALUES(310164,'781b7188be61c98d864d75954cf412b2a181364cc1046de45266ccc8cdb730e2',310164000,NULL,NULL,'19a7948cd1bc4a89a427d48bb01330dadff848e2b32ec8b8abe342872850b268','e7b82bea0d4cc756b8dfbc9e0c01affc0e26a0d3d4c5c129ce31393011a96578','bff20ad27118901a059f37be8204648eed4d3e589df88b36239c29c8963f0db4'); -INSERT INTO blocks VALUES(310165,'a75081e4143fa95d4aa29618fea17fc3fabd85e84059cc45c96a73473fc32599',310165000,NULL,NULL,'97f0a48a26daf011a8c7b22bb772228a0c8a920eccd011e713956100c9fbdf33','275157ef5be5bd2ee74c97964fec858499e9fdd588f48e08364c22a6e7fbc124','567372284db2f476bdf2d9528a1c49d530023a8246078efcdfc4a637e0075cf5'); -INSERT INTO blocks VALUES(310166,'a440d426adaa83fa9bb7e3d4a04b4fa06e896fc2813f5966941f1ad1f28cfb41',310166000,NULL,NULL,'edbd00e1229c673f4f15b3ac7bbe020f54b5f3a61b1d158658471076a55c77b0','34f0b82762c791251332b8a8533b2fd0294a269320a98d262ea847cc84395414','cb33aa8d2d3fa245a4f2274add6d070c22d474662617fc40e2a031d330009d4d'); -INSERT INTO blocks VALUES(310167,'ab4293dbea81fedacca1a0d5230fe85a230afc9490d895aa6963acc216125f66',310167000,NULL,NULL,'e118e0f3aad5be73080f4d1892517e8fd2c4575589ccdfadf980edebb9a66a14','fcb92b27e70c3f4e4fa9e040be42f4402880dc94cdcbe8ec70abc7edcb35ab9a','60db3125515daec542fc00fc51e21e0868636ad8d08b167a56a16bd347a19e11'); -INSERT INTO blocks VALUES(310168,'a12b36a88c2b0ed41f1419a29cc118fae4ecd2f70003de77848bf4a9b2b72dc9',310168000,NULL,NULL,'267f48eb4e3b0925f4f472d8ce6ec57ec5039911b13a14ff2884a41a9cafd7b1','745a42af3c334ea144d0161ba4cb9fa0ec3b1b82e767ff4092a1247d1aa50dc8','298b3be2a774c1dff90fd86b8d7f05664ef80f7853e368e1c614b638075c80f3'); -INSERT INTO blocks VALUES(310169,'204809a85ead8ba63f981fc1db8ae95afe92015f003eaebbec166021867421f3',310169000,NULL,NULL,'df394a6f3b2a9b9dded6019dce9f3d3214db1f30019faffbdc2ce614f629b25a','04ea4e32a3123d4840c9387e019ff6f536b0523f9f4b16292f7fb3d640c358b2','ab9c92a8e0fc8dfdb162e9bce6f060d2e9132633ab6730c737179ed7ad7ea0d9'); -INSERT INTO blocks VALUES(310170,'b38b0345a20a367dfe854e455e5752f63ac2d9be8de33eab264a29e87f94d119',310170000,NULL,NULL,'3081081c2ab6d8280ef721c5836d0fb7e89eb3d747a4e4522d2e22f5a6b153a2','745e599039410380cb5a39a30629e6661e28b676cb8e0b84bc3915480715e52d','002ed39b725f2fb67de7558c57f2b2a12c0914aaeaba1c1a2a42a43581b18961'); -INSERT INTO blocks VALUES(310171,'b8ba5ae8d97900ce37dd451e8c6d8b3a0e2664bb1c103bf697355bf3b1de2d2d',310171000,NULL,NULL,'e6a4017e4f7d9da50bb3817990c3e115d5035443de8824dc01b5380a5b4c52a9','5605874ed07ec2b79fdc11ce7a1b2d4f19cb9403639745d9584cfb831c6dbfb3','4122ac3f74f2d45ce2b03c7ff9f99780fac545dc02a1373e740de44849ac415f'); -INSERT INTO blocks VALUES(310172,'b17fda199c609ab4cc2d85194dd53fa51ba960212f3964a9d2fe2cfe0bb57055',310172000,NULL,NULL,'89e90622bf8363bcee5cd7ab6d48b6d06ce4cbd067f9985e35e67fc683f4c103','defbe55d64068742e020a78c7d2e880a9ca407257b4d6c17b4b5b40e84122817','d376f3798b3c34ee0c75fe0935dc6a7ddb23a3592453731c3ec1b9474d5569ca'); -INSERT INTO blocks VALUES(310173,'f2dcdc5ffc0aca2e71e6e0466391b388870229398a1f3c57dec646b806a65016',310173000,NULL,NULL,'35ceee6a23757fa49e7f5c34ccf0fd034731e95d564257b443ebfdee7cd294d3','b8bf1ccb1f769f0559a5b8a39899d42af61cf8e7aa5680c6b905186769f337f8','87e07f244eafc35e5fe0263c14d4a428407df88ad540e6513d8364fe320cf7c2'); -INSERT INTO blocks VALUES(310174,'fa6f46af9e3664353a473f6fffce56fa295e07985018bface8141b4bf7924679',310174000,NULL,NULL,'101dedf34bc0788c0589c8e2b1d7da4ec65f6eab2e3c5523c0903db685cab017','57ac656234cdbb7b8d0ab2fc6ac1dac7429b875763529fe13885ff18d09d860f','0132e704cc731c090d54145c08da360ead1dc44fe2109218dda60078305b7f25'); -INSERT INTO blocks VALUES(310175,'f71e79fe5f03c3bc7f1360febc5d8f79fc2768ce0ff1872cf27a829b49017333',310175000,NULL,NULL,'67de4a0a9e52d9ae06caf62b3412d0bf2c10a6b24716210b21212d75be75ad6c','6aad646d6dd3808448bae6b5c00306ceb52a1142498782a553aeda89b24524e5','c77844e3a197eab8dbd46e0fa48693a2dda0cc587ff5a6b8d51c727aa2b9f492'); -INSERT INTO blocks VALUES(310176,'67cd1d81f2998f615602346065e37f9ceb8916abb74b5762ead317d5e26453c6',310176000,NULL,NULL,'a90bd400e15727fada1a27be4a6e228bd91a15f0dbd0fb7de3b6779a8bf89e4c','828af1eea222edfccd87d4900ea966b3c2620539fb60b7fbd3ec80be9ceb4e64','a24ec011b66eb8bd39e73e32288b444d00283a1464a41cdf46206d2ad6de5717'); -INSERT INTO blocks VALUES(310177,'6856b1971121b91c907aaf7aed286648a6074f0bd1f66bd55da2b03116192a52',310177000,NULL,NULL,'bac315d07dee18e27336a46ff3ffeed58aaf8eb1eb702e98a93c06303c937716','467249cab4533ff3a6e5fa6bdb8700f9b275293498b3552b3f8e265f16db0812','54be720630f40e4691b3c589851219b2ec6f7623dcc473b832c28a8915a1ff9b'); -INSERT INTO blocks VALUES(310178,'8094fdc6e549c4fab18c62e4a9be5583990c4167721a7e72f46eaf1e4e04d816',310178000,NULL,NULL,'186ea0ece84d21ee21889ff13c98959dfc1842063a970e0c095552f0ca86515e','924d040441e2225191576f9c2128acbe5305c99be573a9d485b12bed48680d8d','178e1095944c3ffe6141aaf054ce7882f4f36f7557012f20080fca6a395bc4dd'); -INSERT INTO blocks VALUES(310179,'d1528027cd25a1530cdc32c4eaff3751a851c947ddc748d99a7d3026a5e581a7',310179000,NULL,NULL,'0200402ef08256efa0adc85b2b4b15fb7448b5107b65fafbcc7985d809e84bc8','aa7a59be2b3b601aa0d71f8bf495a224b85e6605db20140e80df23f689c8b5c5','7c467e3f14954b7a8f08e59daa1f63628e315b46eb92605d70c3e444f44223ec'); -INSERT INTO blocks VALUES(310180,'f2f401a5e3141a8387aaf9799e8fef92eb0fc68370dae1e27622893406d685c1',310180000,NULL,NULL,'13829eeaf9bdc54f87366e35616c5a57cd836c63db8a9ba7d117d02377ef43e1','8b16f083661945abbdd5f53332c1d746d7f59341c5250586de0627c3595cf83c','22e1d06c5f579ef0e5d10f66a75cbdc8cf1ff3068eae4d44dc99195757559519'); -INSERT INTO blocks VALUES(310181,'bd59318cdba0e511487d1e4e093b146b0f362c875d35ab5251592b3d9fed7145',310181000,NULL,NULL,'81b4d83a623a55019ad720c1bd3ecef100d8ca49deda91b8ba6ffe9802764df7','504d7a96e01b8979349c377018aa9458f920e0cdc3c09c77574b31322d98c854','45fc0ff78a37f8e949e9511689f409d0f7ee4ac3b2ed23b6c73924a60b5553af'); -INSERT INTO blocks VALUES(310182,'a7e66b4671a11af2743889a10b19d4af09ec873e2b8eb36949d710d22e1d768f',310182000,NULL,NULL,'935e40f93195d450b292481aac481f445d2de8786d04d26263f4adc5a348704c','085f3e0df816bc317c724492d0f7d7153323bed3fb7f9a010a8dd399ee63f5c0','80e74bab3649ca3eed365bff23637aa3bebaeb066b77c46d36946bcd44ff514a'); -INSERT INTO blocks VALUES(310183,'85318afb50dc77cf9edfef4d6192f7203415e93be43f19b15ca53e170b0477bb',310183000,NULL,NULL,'268bf841be40615472bf4c60b5306d0763ed50510fbb55c47a6a0ac726e8701f','ca50c66c749bd315695b553eb725a9e6a3c29a399ae5b6ffe5c36cb8f0b13929','4345c59a312a79db3ea32f7e89f1741bb3d35e31faf47c591319b189209dcc01'); -INSERT INTO blocks VALUES(310184,'042a898e29c2ebf0fdbb4156d29d9ba1a5935e7ed707928cb21824c76dd53bfc',310184000,NULL,NULL,'64323488ca4d32a1f548842db4ac772b750599ce6222020ef6149b4a0e54a935','8be1b5d80d01d3d9a8dc2479e007d577fc8263b3d368f59332560f9534412cdc','7f7f00c9bed612d025b672440d9f912d31c4d0d957894ab92313511a03bb1b7e'); -INSERT INTO blocks VALUES(310185,'bd78c092ae353c78798482830c007aac1be07e9bc8e52855f620a3d48f46811f',310185000,NULL,NULL,'8946baadef2e19c5e4e4b2d771b36982a217486dcb0f95097b41ce633e61da94','5320b91cf7dcb4b2d00517a8ec48fbad80f47bc3a94ae1cdf2f781d18ba0487a','087a446c8832fcf3071bbbdd00c3e2c7444f6e5a708fdd93d5b73180a5c009cd'); -INSERT INTO blocks VALUES(310186,'e30a3a92cc2e5ad0133e5cee1f789a1a28bea620974f9ab8fa663da53e5bf707',310186000,NULL,NULL,'e68b5525927cfee15fefee02a16fd700abf6b6e7b4e32e57df7d324fae7ae090','435ec84f55f3ace25ac9dc8bd68731aaf513e4a1559643b887477c77b9eeece7','8a428471b03627c8ca73e6763b2d5fe477d55aa622b0b52a8580d711cfcb6f1e'); -INSERT INTO blocks VALUES(310187,'fc6402c86b66b6e953d23ed33d149faa0988fa90aa9f7434e2863e33da2f3414',310187000,NULL,NULL,'c42efa24d48339fc341908a30c6679beeadc9f5918d8d3e62d5c4b06fec845d5','ac2e855154f8dc9a3dab36cde207e068a859e74d80f075ecfc50447912877b77','61c41dd99e9fdbe5706241d4ed9b4bfcbc8d5539a4f90e59994fc2b954cd5315'); -INSERT INTO blocks VALUES(310188,'85694a80e534a53d921b5d2c6b789b747aa73bf5556b91eeed2df148e2ada917',310188000,NULL,NULL,'13de1d9b569d5d2525ecfa39b1eda69f9fd474683b6e34554b1a755125e96e5d','e94a22ff07f51b5f1dbc17441d7dc5829b425da07e7eebbc3c938ba887d86b03','1ac542686e183bf0e4d21b76fa56eb5c7103290f52e74d9258f581786eac42f5'); -INSERT INTO blocks VALUES(310189,'7c036dadf19348348edbe0abe84861f03370415ed2fec991b9374dbb0ca19a06',310189000,NULL,NULL,'582b8b3d3a226d3f6df497cb933ed5f42e1e992c0c25372ec15de424c0a33368','99a1d51ff7da680d24bfd24bf998e2f9477bcdac8509c03efa568b0467686965','4baca04e0b50d8c095495be5a1d04499e4741eff53abafffeeabec2eb762714c'); -INSERT INTO blocks VALUES(310190,'d6ef65299fb9dfc165284015ff2b23804ffef0b5c8baf6e5fa631211a2edbd8d',310190000,NULL,NULL,'d4c49d5e3aaf21e6fe1c30663d0ba93f7dc9ddb03611e3751fba9aac8d382ac4','93da4438e95dde255baac5c79b60367b6fa7c05054baa7f3133e84792e852cd6','a0b54dd015451a01e54d39528d586389d30c64a672700a8be549254241fe79d9'); -INSERT INTO blocks VALUES(310191,'5987ffecb8d4a70887a7ce2b7acb9a326f176cca3ccf270f6040219590329139',310191000,NULL,NULL,'23d340ff3f1979a43bd1336c9c882b5ee01c646cd104060feacdb5db78025cca','ad2b30b320539a7481a80ea9369da1f195f331eda182debe42b95c01e9040918','f662bd58da25a722f9a609e0817ff7e4c2d2161531c734b2e58fe59e42372a6b'); -INSERT INTO blocks VALUES(310192,'31b7be43784f8cc2ce7bc982d29a48ff93ef95ba18f82380881c901c50cd0caa',310192000,NULL,NULL,'cd18860851bceba4a0174480ccdc0f6ddc47b31ce71af8ec8500cb07f75d9da9','22e2e9469407cfe99b237ef286855a39425010d911e22e1c27e5194913d35cfd','16878d2ddfbbd4e68d6ad6871bde82789cae6a2297fdbfe2e8476a1f6cdc9690'); -INSERT INTO blocks VALUES(310193,'ff3bb9c107f3a6e138440dee2d60c65e342dfbf216e1872c7cdb45f2a4d8852a',310193000,NULL,NULL,'391e97ae7ccf5bc38ac72e7ad1256f24c28297c625bd9a789cba8231a5ade046','20dea13947f79c456cb7cd502972c4c75a7922a4e6aa9625146387f14a8f5134','88567ce42ff8db6e7380eec2991c91e5725f07bf0f7c61862c99fde454c49527'); -INSERT INTO blocks VALUES(310194,'d1d8f8c242a06005f59d3c4f85983f1fa5d5edcc65eb48e7b75ed7165558434a',310194000,NULL,NULL,'9141c9b38087c7cf2b8c11ffd55c2eabcb3bb09f132ac0baf9c3779f628dd42b','b2f8c6473a9379b9774295fae95a3b78e1ab797d179d917eb79b3f1b3fde1039','c19db95dc5b2432d116687af741641dae826eb8b26e820507d10a01c78212d90'); -INSERT INTO blocks VALUES(310195,'0b2f1f57c9a7546faac835cbe43243473fa6533b6e4d8bf8d13b8e3c710faf53',310195000,NULL,NULL,'705918f002db29e7b3dfbfd6378f79d53e33c6ffa3948b2e3b5c85f85009bbde','5a6dd936af8d8997bd30c50d7bffe8bed84c5c514bceeec9daeb8e0509f6d10c','933249665d32c2473a0327f96c75e0a7de19b4a777555b756d7e865538f51b92'); -INSERT INTO blocks VALUES(310196,'280e7f4c9d1457e116b27f6fc2b806d3787002fe285826e468e07f4a0e3bd2e6',310196000,NULL,NULL,'59e12df19e3c0e3e23a5d1e9783c75e236a000774a038553312919a0f46b8227','ff8875a240b0ab841c617e6e48de0ec2d9f8440ac3d7aaacd607e958c0d230dc','a0485cf4624ede1e15e6226329d08d7509299e21b6e7ab99cae1d5699fa732df'); -INSERT INTO blocks VALUES(310197,'68de4c7fd020395a407ef59ea267412bbd2f19b0a654f09c0dafbc7c9ada4467',310197000,NULL,NULL,'a0e1817dfc258180fa1629710ff3b6026181a9042fecd2c8b0b5e38118199e07','6af3be2ab53be33ef79488f2a0c2f75648b23c5d904e49102be884115e06db74','787664684e2039db2351a2c68cc345ba49dbd7a585c8c2d3224815d91d2b0085'); -INSERT INTO blocks VALUES(310198,'30340d4b655879e82543773117d72017a546630ceac29f591d514f37dd5b1cc2',310198000,NULL,NULL,'ff51bfc670b1387bfce53781750e35a3bf69d907167cf9cf57e15613cc0ff3b2','036ebfc7d0728ee8710155267b5aea33728cd55143cd35c064bb538eaed48857','d7646b391ba9f6d604dfc0cb26735b299147148d78e79ea3d725b0d035af696d'); -INSERT INTO blocks VALUES(310199,'494ebe4ce57d53dc0f51e1281f7e335c7315a6a064e982c3852b7179052a4613',310199000,NULL,NULL,'e5f8f8f00de32f0d8d2b62eba27218edcee77563960fe074da5ae86bf5b553f1','00eba7581bcab946056e3fbecf81ad6afc6e44d406153004f2bdc3d9461d0fa9','fc87528891adef10785f36e95d15d4d8511175a8554c02b989a65241c0850e9d'); -INSERT INTO blocks VALUES(310200,'d5169d7b23c44e02a5322e91039ccc7959b558608cf164328cd63dbaf9c81a03',310200000,NULL,NULL,'fd8fb664576868d4f1c843b28efc7ee028417034a33d6f5635238bd13c701b2a','cfba4733a2f79e144111125e162b659eac864ce487e6f293e9320bb488b3992c','b3c869dd3aed5ce2cc274108aac7655db5fb70bab8381b0aa93d2b9e926ba7ec'); -INSERT INTO blocks VALUES(310201,'8842bf23ded504bb28765128c0097e1de47d135f01c5cf47680b3bcf5720ad95',310201000,NULL,NULL,'7e2dbbf14c0620ac0fd4e0e676857e2d055fff80cadfe2d9d0dfe07d36738722','ee6a6849124448d915856966e35ce7a92c124e277e5fd2c7b0690831843a6bd6','1e48b8e4b150384475446823c2a5fe67848cef0afd5d425fcb6b912ea7ff247b'); -INSERT INTO blocks VALUES(310202,'95fa18eecbc0905377a70b3ccd48636528d5131ccfa0126ed4639bc60d0003d8',310202000,NULL,NULL,'084c24e81842ec8edc4144ad64df9f12377318fe4dc491b307b7d377f3f81b2b','c8c7964a3acd407abe62cdb3fa5a03cf4076bb5ad4801980667cd8019a8551fe','ddadc9398dc871f1a788c9db13bb1979d189035ec2d54127fbad6bf3be83d745'); -INSERT INTO blocks VALUES(310203,'ab15c43e5ac0b9d4bd7da5a14b8030b55b83d5d1855d9174364adbebf42432f8',310203000,NULL,NULL,'4b0b8d82a5a2c8600a09b1050eed4440d9e0f2d817498f3e32ba27ebcfbaf6d5','920cbda4b550b9592b113d0ae78ddf28d4779eebecc7cfcd8c47ca34688ba8eb','f1958cce9860342f448d2245c7bb3397cea961664f139c449ef2c15f478764a8'); -INSERT INTO blocks VALUES(310204,'18996fb47d68e7f4ae140dc1eb80df3e5aba513a344a949fd7c3b4f7cd4d64cb',310204000,NULL,NULL,'9f81657142f7523c01595bef4e9008d8525c2337f6d90140e05abad619d94416','eb40b10c530f040a21ad23cbaac905907443a864313dd02e0228798aaa1660d9','0acbb99cf78de14a12521438252350e96e2e49067331bf74c7d6579bb356d18f'); -INSERT INTO blocks VALUES(310205,'5363526ff34a35e018d1a18544ad865352a9abf4c801c50aa55742e71630c13a',310205000,NULL,NULL,'fd1cdea0193ed914cc408968efa42377d7c69453aa9bdf8bdf0731d4b1501b01','e45c4b2efb3256deb8ce0e508ac79b7005e478f6d086247790455e2fbb239571','6dedb3cbcf5e44aa3646b2690aa6d632d6d052217d81461d1356d1ce1ca21f61'); -INSERT INTO blocks VALUES(310206,'0615d9fca5bdf694dca2b255fb9e9256f316aa6b8a9fc700aa63e769189b0518',310206000,NULL,NULL,'5845d6bedf81fba710999bf2954b3c1f3f9ca007a09d812ccae8e2a6d3b9bb07','dbfe96e6d95cb01a1fa151f9c4e231c4820a5f63b339c74d88322dff564be52e','521f3027ab5ebd7d9c36855a81ea291c3b532b4b78739fcb852d14fc9f176f57'); -INSERT INTO blocks VALUES(310207,'533b4ece95c58d080f958b3982cbd4d964e95f789d0beffe4dd3c67c50f62585',310207000,NULL,NULL,'b65cf7069a0eb909357cd5d45129b70c576eeabc0cb13404029d088e24a2be34','9fdde2b66902bdce68123c5390b8ab74678e025ba1326e41f2cccf89dd9507c7','b70d3713a4f6acf7bb5a2bda392e815cdc468e53d66cf25ee5a8dded05c8cd14'); -INSERT INTO blocks VALUES(310208,'26c1535b00852aec245bac47ad0167b3fa76f6e661fc96534b1c5e7fdc752f44',310208000,NULL,NULL,'aa54dc010fec8a0ef3871c91667c45e88ffac08ee2fc93274d7ad1b2b5b28102','bac0eb847e5a1ff514ff633f1a2b7482377321027adc4fcff75ed0da13cba1ff','e8b22d6df00e3dc4c57af6cce24df339bf0b9998381867694b8b356c89629889'); -INSERT INTO blocks VALUES(310209,'23827b94762c64225d218fa3070a3ea1efce392e3a47a1663d894b8ff8a429bf',310209000,NULL,NULL,'c7866cb2098c87c1333da5b3dce4c84bdeb620c9f1898456b7cceb23e4027df0','86efd2166ad3a0485327aa745b175e9e790ad354c43875c33f7728deaa0ad073','77a930a234125af8a8f08bc4d5a574e2e20b8c9457f4feed3ed4799f294f3190'); -INSERT INTO blocks VALUES(310210,'70b24078df58ecc8f7370b73229d39e52bbadcf539814deccb98948ebd86ccc0',310210000,NULL,NULL,'207a1c90d1658d55fa0fc2e1507fce98521647ab5c4d11099c2742279cc92b3f','2e435839dff2e2ef4654b558d8b304bda1ebb2d479f7ddba63672b5c7f2da8a3','6834935f73b4051b4bcd76b50e818d0633b12e036afe6987bb58756b6c7d0518'); -INSERT INTO blocks VALUES(310211,'4acb44225e022e23c7fdea483db5b1f2e04069431a29c682604fe97d270c926d',310211000,NULL,NULL,'dfc7fe172f9bc77148a1bfad5d441a3688f718b4985406d0cefd4c4dcd926208','acfb695f137e20d7451165c5c664f0a1aa16f62db51ca4d132631908103ea97a','80f4e8463734adb23e8f53dcdf30066cc9c925a1f25ceb979042f671242c5cba'); -INSERT INTO blocks VALUES(310212,'6ef5229ec6ea926e99bf4467b0ed49d444eedb652cc792d2b8968b1e9f3b0547',310212000,NULL,NULL,'32a39bff0606ec93454a2cb144c0bbd1939bf2be6a2ae369b885afc0b5ef33c9','7821aabdca20f884169d340e62827e874442b2db200d30ba57d75bac66715c58','462bcdf6a677fa7cd31148eb45072bb4d23c5fadc5ca6ed00d6cb62260a27c3d'); -INSERT INTO blocks VALUES(310213,'17673a8aeff01a8cdc80528df2bd87cdd4a748fcb36d44f3a6d221a6cbddcbe7',310213000,NULL,NULL,'15968873880e97e849e59971d4ef19881b1c11c3148dba966f51d986c59ccf36','44e22a6d77ab0dbba76861de822c69ab946c5f1aeaf08e50d2e169cc1fdb6082','71c56909fe2ad9291fd82f271f56d3f7d2d3d50c42d536dfd0cbb004022e94a4'); -INSERT INTO blocks VALUES(310214,'4393b639990f6f7cd47b56da62c3470dcbb31ef37094b76f53829fc12d313454',310214000,NULL,NULL,'dcbdc463154fe49a7f22611fcb53e5ca78501424ba741040d89cac9db0a03ac4','fbfbacda7e679a2fb6e8d28b3c3de565bc9cbf8c3fa4d7fc4c9ed71a6ec9ebde','b9588c5d0170060e50602e960d2c4bfd0e7c543e3e25359d6f2a179e6a788d1d'); -INSERT INTO blocks VALUES(310215,'c26253deaf7e8df5d62b158ea4290fc9e92a4a689dadc36915650679743a74c7',310215000,NULL,NULL,'6047855f1c691f27ade1cc4c587f1c11ff68f5f5bd7959a23f801e5da7773eed','0d41ac1fec3eebddbfce292035d47997d2c3ada0a7286c3e5193e2737e6ec63d','ebf55d65638b8b962281e0c104ae1335cf06095fbe8374dd87288c0a372e307c'); -INSERT INTO blocks VALUES(310216,'6b77673d16911635a36fe55575d26d58cda818916ef008415fa58076eb15b524',310216000,NULL,NULL,'a12fbb09858868de79095c8e3222f6fa179f2f00bc3c97c8205fd9367ae05aef','13fb950cbbb4310c23f7cc8b21a09cd6a5c29dc8c0b254985d8ae77d36d187da','bf5a325bb23a70a4f9e69a46e948aba25e6423b4723a17c11aff02fdf91131ca'); -INSERT INTO blocks VALUES(310217,'0e09244f49225d1115a2a0382365b5728adbf04f997067ea17df89e84f9c13a8',310217000,NULL,NULL,'419d8dc096dd58523cd4822748754158f0c11945bbb62100cb5268cd802580a8','555677592a003ae66ea83a8dea9f33ea7bcfd9dcbc0f036863ad17f200ccbe1b','53db41a61542b6e5382027cd84da12f3e9c9fbd3dea8a1a55ad45aa5847d2ec7'); -INSERT INTO blocks VALUES(310218,'3eb26381d8c93399926bb83c146847bfe0b69024220cb145fe6601f6dda957d9',310218000,NULL,NULL,'a36c07f7fdfaf7878d73baf14aee58b42220b2b2411fd1864450ec6ce1fbd173','46f03a93ea4bb4cc731d7bb6e1295d087e326b5e03012b068de59ab5b5673aef','66d5530aca9532f592bf9b72629bba5fa3e8b9f044197f2f08c6edf497a18d4f'); -INSERT INTO blocks VALUES(310219,'60da40e38967aadf08696641d44ee5372586b884929974e1cbd5c347dc5befbf',310219000,NULL,NULL,'7958aa94088ecf0384a9a6b0569e9507d208e009e9ce139c823960e40996a47e','7e18a7a69dc5d085b872a594d9b5a3e58d971031da9312e1f89bc9e20f530023','46450578b51f0fd0dac7f7f510c206ebecf3395489909df1c368c10cf562a94b'); -INSERT INTO blocks VALUES(310220,'d78c428ac4d622ab4b4554aa87aeee013d58f428422b35b0ba0f736d491392ef',310220000,NULL,NULL,'00907c4368c2dc76d1ef98a0ba3c86bc4746ed2734b0c10f3797e0af70714240','8d452de611c5cbbd05f46fc272ef88dbbe8a4ba27e1b68b70ff0a32731514865','6dc70b8da94c5d31eef564d159c611ca19c1e990fb565ce2e3ed7a83403ce6b5'); -INSERT INTO blocks VALUES(310221,'cf5263e382afd268e6059b28dc5862285632efe8d36ba218930765e633d48f2d',310221000,NULL,NULL,'2e42f882087dc2158036592298321113f1b34e15b414efa6d43364c06d368540','c0764e91cde6b8ecfc32c78029bdd31e07798c0cee4e43985ab95312704b28de','2e80f10efb82f14735093addb3cd0f67a6b7076a88ff06019d8754fb24e31a54'); -INSERT INTO blocks VALUES(310222,'1519f6ec801bf490282065f5299d631be6553af4b0883df344e7f7e5f49c4993',310222000,NULL,NULL,'00c4a5d41dd629bd0973c03152e4519214dce68498999c8dddc1f7a1cad28a82','8e0fd98d24143d2616c2712cbdd1ce8eb5a982f6d8b9031c8d554f16f909e270','ef638800d3dcc4b81283fb396f17114f7b0e1b1f850673c3b246699838fc95bc'); -INSERT INTO blocks VALUES(310223,'af208e2029fa49c19aa4770e582e32e0802d0baac463b00393a7a668fa2ea047',310223000,NULL,NULL,'41c7a0fa22ebee9d55f2a3b118314293d155c349ba01069a23ddff76dc842955','20c8e7f20e664b9ab3373b6864f5cbecd44b50984082568942e8c22b3d8840a1','4a31eba029872983ac266498d70a6b089242ab635c3564f2d3857b753bd2d117'); -INSERT INTO blocks VALUES(310224,'5b57815583a5333b14beb50b4a35aeb108375492ee452feeeeb7c4a96cfd6e4c',310224000,NULL,NULL,'66c268462442b69efb56b29e08aae1a404d3543e0a20711e8998a31af45ee929','60c09bf705da5081c224c1cb35b023dd592e6089ba2773eaa99106a07a079852','6386a62e824ac85815ad6de0cf959a8fecbca6cd15d5d027f4021a6f75362a46'); -INSERT INTO blocks VALUES(310225,'0c2992fc10b2ce8d6d08e018397d366c94231d3a05953e79f2db00605c82e41c',310225000,NULL,NULL,'cf39fb28a7e4d4db7657bb11a30d592a15c049000d7ac86d4fb3d942bf879b95','0dc940206b542c2f5dd7858fae25bbe8f0e518ebb9e55a7e9465a6a1a9bc1325','b7dcdc52966c33878a63c4ab7cccd70b98e53cfdcfcace909019a962d7ec1df7'); -INSERT INTO blocks VALUES(310226,'b3f6cd212aee8c17ae964536852e7a53c69433bef01e212425a5e99ec0b7e1cb',310226000,NULL,NULL,'cb622a4d04645ad96d3e0006f2b7632e8b82e44206d6c1cb75212b059fe18de5','8a9a76c298a11dc06d27fe662af1b57a44163b86b3be4dedaa498d16f6328ca1','9a0d0296cc67a2f3b9550b09bc561d6c92591748d94641964f21ff43d0ae874e'); -INSERT INTO blocks VALUES(310227,'ea8386e130dd4e84669dc8b2ef5f4818e2f5f35403f2dc1696dba072af2bc552',310227000,NULL,NULL,'60ae4209347248a3f7ad39b6436627f06e45433f6b6dd89cfd3383d68974a41c','fa8f11878138553eb50f659bda2407521eace7ec269e9486b586560a80cc2193','9d186dedeb2dfc72a9219d1249c53a9e13af5f6449aba21ce4ff6acd6bed5865'); -INSERT INTO blocks VALUES(310228,'8ab465399d5feb5b7933f3e55539a2f53495277dd0780b7bf15f9338560efc7b',310228000,NULL,NULL,'798206ee77c9e2fc8fe943f9bf2074c9c2560f534e3304b944e2ed3c89ce8bcb','c00812756c426c75f0e0f366269d092c2bc846e08376b79005b15a1bb9e78fa9','0900c04039407ff312efc0fb927e6253f3dcf706cdcfc259f362e12d0ec9fe58'); -INSERT INTO blocks VALUES(310229,'d0ccca58f131c8a12ef375dc70951c3aa79c638b4c4d371c7f720c9c784f3297',310229000,NULL,NULL,'becad39a4d1bc8d73a856fa1d2bfa251f29b23fec9448a91932dc610243fd8df','fc92f5ddd944d8a77a398bf367ce1cdb43174d1e68d5a68bcbfa8e5ee3134919','8cafee2771a36286e86ba932f7525b5854ff7b4183a0dfe97a823510434ed97c'); -INSERT INTO blocks VALUES(310230,'f126b9318ad8e2d5812d3703ce083a43e179775615b03bd379dae5db46362f35',310230000,NULL,NULL,'e08eac4daa7d7bc70f2f47a835bb80993d6d6db06d8d8986101b717db1c62ed6','fef4471af3bc26e1158c08c5ed797acd56c46dc46fd483308f29a7c7c6b2964c','19c5a6e00ce4ba4df771dcf6482914ceec23254e3c0a10e5ce6d9bad26134bca'); -INSERT INTO blocks VALUES(310231,'8667a5b933b6a43dab53858e76e4b9f24c3ac83d3f10b97bb20fde902abd4ceb',310231000,NULL,NULL,'a761c29e76c9d5090cd1d6424beb91d0a9fd9546c67ecaa6d4879177b6745b59','252cd82cdba94f894e6156fe7b2df6ffce2b3101c3ebfc631105c9ab6f0b5cd7','70941d85dcfe0c728948113a18bee41e63e70a3a08be4176fa8ccaf8d724bbcc'); -INSERT INTO blocks VALUES(310232,'813813cec50fd01b6d28277785f9e0ae81f3f0ca4cdee9c4a4415d3719c294e8',310232000,NULL,NULL,'5da469b7e21ad8ec4fe7cc2f426dcaeb18a3a4a3c44385d529a8b252c77a9e43','50414a7e78301d09f948577e325da12debe6d281a94cf018a1537e7f9cf3bd98','e702c73b1378042cae52f202ff96f515abf61ce2de502f15ea85a7c1128e0dbd'); -INSERT INTO blocks VALUES(310233,'79a443f726c2a7464817deb2c737a264c10488cac02c001fd1a4d1a76de411d6',310233000,NULL,NULL,'d8531834d572acc01591997cac000185facc033e1ab72f8218a70d0ae3898914','26e226c8ffa76a441641b4b1962f5b57170bba7030485b74f377078ccda8b6f9','4b48d1eef1138ef202612c7e014e70822c29dd44dc7e2ddb87ca790158209f06'); -INSERT INTO blocks VALUES(310234,'662e70a85ddc71d3feae92864315e63c2e1be0db715bb5d8432c21a0c14a63cd',310234000,NULL,NULL,'0ac6803ab61e14bb08fd8051424565086ab11b4d33faef077f5a0732eec6f766','08e241646a783a9e18d827432a894583a07807df74f5d600263c596fac723c7b','ac75082e99d82270a1cdd7fdeb392632a2a73315fbf733387e43880ec8c4c6e7'); -INSERT INTO blocks VALUES(310235,'66915fa9ef2878c38eaf21c50df95d87669f63b40da7bdf30e3c72c6b1fba38e',310235000,NULL,NULL,'5f7de1c7fe45858dcc844604a77051d55de3b9dbb5f5d9910ead8bd0f3af48d8','b990d6f05c1278784e9fafe494076eb586edfe9d1ab2e5b4b55b20cd666008d7','eebaa09225e48780d4bde2061931b957e25d2c2d57363b713b85d7352a48a32c'); -INSERT INTO blocks VALUES(310236,'d47fadd733c145ad1a3f4b00e03016697ad6e83b15bd6a781589a3a574de23e4',310236000,NULL,NULL,'c0437ca60921bb73516c31a74f78d2fb48d2c628b629c8f55c8fbb0060718d76','500f5b7c186a6ce208fddc6254be0ee23d984076522340508b91549a7044faf9','f0fd4e90d27089939a9b18ed6d2feac18bd60134b3f3d719f1fceb8fc3005cf5'); -INSERT INTO blocks VALUES(310237,'2561400b16b93cfbb1eaba0f10dfaa1b06d70d9a4d560639d1bcc7759e012095',310237000,NULL,NULL,'4340ab34a083b38dbca477b6cc2479e6d70ffd6d6b9b75772068674297abadff','89b41b7f353c3c0fa4f0fb3688e26999f0524c840ff3f4c8c56357e94164468a','209e86fc2b75aab0bd40e379789952af2a8742106adf88e8f75cc341c25809f1'); -INSERT INTO blocks VALUES(310238,'43420903497d2735dc3077f4d4a2227c29e6fc2fa1c8fd5d55e7ba88782d3d55',310238000,NULL,NULL,'6a76891c10ff0f9416ae1a024b985d621154918bd8ab545980b57fd2d18c4af7','83e241eb37d1944ee7c3ab834e6e2ab869ca9071b4e92fdb53429d63b60e57f0','871574096955d3aa05a3eb4e43c43ab345caaf0b1a551190b0d0828fe23e591c'); -INSERT INTO blocks VALUES(310239,'065efefe89eadd92ef1d12b092fd891690da79eec79f96b969fbaa9166cd6ef1',310239000,NULL,NULL,'1128bb89562fc3b112da425a3dee67adaf741a8021ee378bdfeb44af3b1b1fac','299b307f4ee4aa77f3426a849f9b13a979338334a9d05deb1c4ae6fa850ad162','153f8b6f6e004cdbb0619c64000222188cd534c4da7554e06a657184888e4e91'); -INSERT INTO blocks VALUES(310240,'50aac88bb1fa76530134b6826a6cc0d056b0f4c784f86744aae3cfc487eeeb26',310240000,NULL,NULL,'be05624b84b2e76794f065f36b4e98d6c6c120f1d8a5db91957bbe7008ce3240','b4ff46e3241c842548bdf79e3f93d6da4f2fe75121782991f80d85eebff555dd','81ba23fb8a04a63d217379d85c7ea90672d49a0195b7ccc178a3652eb3f4eec7'); -INSERT INTO blocks VALUES(310241,'792d50a3f8c22ddafe63fa3ba9a0a39dd0e358ba4e2ebcd853ca12941e85bee4',310241000,NULL,NULL,'5abfdfb1aa42fb80ca4538062d152d965b6a7a56bd1e170a7a109409a4606b7a','a529c97092936f518725ac97d8a9e540a8af2a7e95d87cc3b3368d2c02fdd3c3','b717142be677d3e507b748ddf515732e97092180c9ce7ebab0e4d999f9eb2e49'); -INSERT INTO blocks VALUES(310242,'85dda4f2d80069b72728c9e6af187e79f486254666604137533cbfe216c5ea93',310242000,NULL,NULL,'5f354f767df3256aa6a23544a7164160b9fabe481c85d1891f5250b3026dd7b8','944b30e4a44dd7b388af15e1ffa91d8ffa868952a24daf3c6f18199902bba3b7','4f68f360ab289c38f9a4b59beeb8f2e11d943885a0d584d550d9e6d4e635568d'); -INSERT INTO blocks VALUES(310243,'a1f51c9370b0c1171b5be282b5b4892000d8e932d5d41963e28e5d55436ba1bd',310243000,NULL,NULL,'ea3acc31b3c298237fa11ca4400c65ee46732c96e0b7fac5a183dd49d938e730','d9c5c3a72b52724ce850c291a0e218c4026d454173c2961c316c681b87418232','9dd5490e2c51479f0940ef13270d99b0dbe19c44de31d4c91f77e529dd62d315'); -INSERT INTO blocks VALUES(310244,'46e98809a8af5158ede4dfaa5949f5be35578712d59a9f4f1de995a6342c58df',310244000,NULL,NULL,'07ad792741a48d5a7b657e6c4dc83e3534c79bd1e7da7044139516124adc8f80','d525a5eb01479d697439dc75b7781bcb84b9abec0c5a552e65e76c0729bfe724','636d8ae99426f79816da31296594788f54021ee8d5094eefd351ed85ccfe8d5d'); -INSERT INTO blocks VALUES(310245,'59f634832088aced78462dd164efd7081148062a63fd5b669af422f4fb55b7ae',310245000,NULL,NULL,'d36a618af8e92da03b373ab0137ded666db6cef906a6b2c0cb8c71057a1a5903','541f6af498bc3049b6f1a78dab4918c243e60badb57287d8b4c699e10ee02e80','36ed160b7dc1067d36a4e55a9cb594ddcfb4595818a786d2ee9365aecf6e01e3'); -INSERT INTO blocks VALUES(310246,'6f3d690448b1bd04aaf01cd2a8e7016d0618a61088f2b226b442360d02b2e4cd',310246000,NULL,NULL,'a34e154571ee585a839053a851a007d6d433d3efd2b3e923a9c4ec4bb0dc9d98','8e0c2e59342079b813902eb97ed83a18424a5aef5bf1a0f0a3323ec16d20c7b9','2fd9d6b579b83d7a2f07d3872a51624d5115503e689d3c631114b5657f96abdb'); -INSERT INTO blocks VALUES(310247,'fce808e867645071dc8c198bc9a3757536948b972292f743b1e14d2d8283ed66',310247000,NULL,NULL,'ee94fcb9210718095ccdf63f30ab081f45dff765a9ca4f5c86b1b0d98973ef90','671d4da503c7e0eea10b14ea1723edb7038a06a5fd2dc757b6700f3dc5261ca7','35f1452a3aa27141815cf677bc04f1e209fd344aec43fd20774cebfda2069e3b'); -INSERT INTO blocks VALUES(310248,'26c05bbcfef8bcd00d0967e804903d340c337b9d9f3a3e3e5a9773363c3e9275',310248000,NULL,NULL,'029884a5273466fa45cdfbd91ae3aaca50af0771d22f6b55af6367348c2802e2','3760ff4aac40f27b8bcff8b97a35528d32c2f233a7aab5970c2933715abe997d','d4ddb653e81f5bebd3e91ebfcff363872f1db98598e0feea0cc0fb70a8d5b4e9'); -INSERT INTO blocks VALUES(310249,'93f5a32167b07030d75400af321ca5009a2cf9fce0e97ea763b92593b8133617',310249000,NULL,NULL,'dc10674812c5249c693ab7b148d048439a0d77266014f3afc1810a6260838f02','5d5cecdde941b651dc38c8a4d13569b89e7be231937eba9dc234b872b8ad2d28','328c2dc203d3950a44764a60b6fab33d4ed4bf15f2e7437d8f2a499a49877fe3'); -INSERT INTO blocks VALUES(310250,'4364d780ef6a5e11c1bf2e36374e848dbbd8d041cde763f9a2f3b85f5bb017a2',310250000,NULL,NULL,'a0fd49b46ff0000e83d4c56281dfe2be1bbfc924c75969726754b05bf7107641','81c10f4d6526cbc84325d75359fecf40498ab8f5926ae94162cc831d754d3e9b','2db654a11248d1266e4ad594b90262a5e6159df55dd1f8ad211fd8013053c0ac'); -INSERT INTO blocks VALUES(310251,'63a3897d988330d59b8876ff13aa9eac968de3807f1800b343bd246571f0dca7',310251000,NULL,NULL,'bdef6a6203d28d314dc087e539a9cdad19d123b605824f0a66f13bf5f72de9b8','b40d9a7675154043fe1265452cc55ea0d5458d5693af61534efdda85064b15af','6c56adfbeb82b1dceb9bd08b300f498b0de733c7edd3728329c4db925817e199'); -INSERT INTO blocks VALUES(310252,'768d65dfb67d6b976279cbfcf5927bb082fad08037bc0c72127fab0ebab7bc43',310252000,NULL,NULL,'8da11bec0d58b196ddb073d3aba0def98f01f83da654765fcae21cae6046214e','0452530f6f6cff63f3780c0a542f07a158b28b5f184d5525b1a4671860e0ce9f','ab2bdeb2c9163658a7c8dbd627959228fade34a8d924e93f831c25908f920c72'); -INSERT INTO blocks VALUES(310253,'bc167428ff6b39acf39fa56f5ca83db24493d8dd2ada59b02b45f59a176dbe9e',310253000,NULL,NULL,'2efa2c5781899d213741e795ca62fbee9d3ddf53792ce002db7484adc66bfbd4','f89bc1b940222dcb0507c7b70396a5e33fd39647ff363ce1686374a05be83c08','81d719fbc03db2b447430b2fcd5c43953578a4b4bd899df372c5780eda781be8'); -INSERT INTO blocks VALUES(310254,'ebda5a4932d24f6cf250ffbb9232913ae47af84d0f0317c12ae6506c05db26e0',310254000,NULL,NULL,'d062ec468e76421d3769a99eb3c8b2cbf4bf393d109ba13b3bce128613fff547','b8c9232e428003e639975635dac1a4afe06dfc59477fa732d8f769df04ad8f40','e579bcf76dcdd751f44c8726a3ec96a37e8ed381b48e2c74be09c4779ac19bde'); -INSERT INTO blocks VALUES(310255,'cf36803c1789a98e8524f7bcaff084101d4bc98593ef3c9b9ad1a75d2961f8f4',310255000,NULL,NULL,'5c531dc8a7461e9e7a2ead654509d76c9be3427b1d2b75c0ac7ae0e03126c49a','f31d8a5c8bc4721daa2470cc9a9b72456344374ac4c9c2c1ae2094624c115808','f7c396b4115ed8948e54f7e4163e4fa1c5d4e7f380abc3a5ea996a7113c8aff8'); -INSERT INTO blocks VALUES(310256,'d0b4cf4e77cbbaee784767f3c75675ab1bf50e733db73fa337aa20edefdd5619',310256000,NULL,NULL,'8da9f0162e15e33e14e5e1e22c2fd847055a65b99eec519dd069a83bb9006b51','382f4cc9655c9dfef1ca843dfc5f4c3337334d7a11c460fea21dc716e3e1fcda','574ca592fa6c36e37e71418824fa4e4c756f682df60d20a6055f91a228ed896a'); -INSERT INTO blocks VALUES(310257,'0f42e304acaa582130b496647aa41dcb6b76b5700f7c43dd74b8275c35565f34',310257000,NULL,NULL,'0cf6657db5f3145587a466c05f237289b639668d844abfd8d46430c090b54913','6961a1c27a69e9742b451f9030f7556abedb4872c85531d61051b3353264b03c','69fc785aac8b3d6973e1238754e051fd86ee7ef212a8f02f9ed7f3813431c11d'); -INSERT INTO blocks VALUES(310258,'3a0156dd7512738a0a7adba8eeac1815fac224f49312f75b19a36afb744c579f',310258000,NULL,NULL,'e340defe4bd84e788f9c5b083849e6aa1d5c7f33123ebe62d7abe04b8a9e312e','6694aa6cceaab675a8314cec01e384cc5b8b565124ed9fff21e0c821ec2873aa','dcf4bd7f33ca2cf6625534fcce3ae4fa375d11c378081c0100c2753bc6485848'); -INSERT INTO blocks VALUES(310259,'e5ed3cdaaf637dd7aa2a7db134253afe716ffdf153e05672df3159b71f8538a9',310259000,NULL,NULL,'03ca0cbce5a5b50988c19c0d4e754240f50821695dca767d1169f8c7f5c1fdcc','9434d01174ca11c44755f41313155a3c081795dca93d081148eab228a81b10a8','239ef6d02a56f4bb731d518facbfa627bc6c6e037de48bcad52d4c43d3955178'); -INSERT INTO blocks VALUES(310260,'8717ddcc837032ad1dc0bb148ddc0f6a561ed0d483b81abb0c493c5c82ec33cd',310260000,NULL,NULL,'83a3b43e01f4f25ba05b527415baa3e8b8adba319628c245988136bd8fcdfcfe','a0c7cba49596ddd72c6eb73bfcbe12e5373bdf243b5579e2f82ae583bdecb21e','a9c69fc55db8e095f65b71c901b41cde6407956b66e1931ca9905494817dd515'); -INSERT INTO blocks VALUES(310261,'a2a9d8c28ea41df606e81bf99cddb84b593bf5ed1e68743d38d63a7b49a50232',310261000,NULL,NULL,'e61c12005d60870fee947fff469631ee540b1a0d6b8aa67614cfacc0a9f65ec0','c8d09f47831b239c605a01a369f744500b6b307c4bea2a8fb88622a7a5cd28f5','df0bb76e3817edac05432b2a2a051156721c75988bc9eb253504794ab60f0d22'); -INSERT INTO blocks VALUES(310262,'e8ebcee80fbf5afb735db18419a68d61a5ffdde1b3f189e51967155c559ee4ce',310262000,NULL,NULL,'c21ac4906d435af5b9ef5576da6bce454f65ef16099b7ee03219a4ae1851bb91','677c31b60bcafd5ba6b8074e6748cb6c06f73f3ee28c772d31383ed66cc33a38','2e940132584bd01cdeafa14c3bde62f6c534b4074266fe53198eb0d602210767'); -INSERT INTO blocks VALUES(310263,'f5a2d8d77ac9aac8f0c9218eecbb814e4dd0032ec764f15c11407072e037b3c2',310263000,NULL,NULL,'676f6c532ff23839fef228a9fac7719e77a3c20efdc17f3cb2d13035c78820e8','b0be6aad34a21917935fe500b3fb464577eadc1eda164479aeffa02e436c974a','d33e8da30f6e6504e385c94679bf09a1452165a7e9154bc8a38039531b19e9ee'); -INSERT INTO blocks VALUES(310264,'ae968fb818cd631d3e3774d176c24ae6a035de4510b133f0a0dd135dc0ae7416',310264000,NULL,NULL,'258854505b1d3067bf360f3d0dcb369ed7a90fec8744578d3dde51a79db72c25','4fdf4e94a9fe6b8e2192b8c7a4a36edf66660740c66f5b9a35b3dd96d2e39806','a47ce02b96495ebfacb51a2f049a738785aa19a1f782c8ec52f77b7e7b8f8100'); -INSERT INTO blocks VALUES(310265,'41b50a1dfd10119afd4f288c89aad1257b22471a7d2177facb328157ed6346a1',310265000,NULL,NULL,'72ab32c420a7dcac0e7c36c4d9ca81e237955b4d8bc57c87078ba292923ce98d','a9dda90317afda2ea620cbe4819de3f9bff210569112c3b6cc8996672165585d','4246b35b43466b583d21987702842f98f5de9bf1c14e7cf7e010d041a85b8f4b'); -INSERT INTO blocks VALUES(310266,'1c7c8fa2dc51e8f3cecd776435e68c10d0da238032ebba29cbd4e18b6c299431',310266000,NULL,NULL,'b81386d19aac285fee4e39a818cb0442e378372f7d55f92e6028b37f974e4a61','1a509e785b6d0dafeb6cfee2326e9d16b4fe30f9a170120864db6a353a2c8f65','e234c23bdbd32260dd4fa99315d0d6bcef7a92e582567c487253a81dfe3dc796'); -INSERT INTO blocks VALUES(310267,'c0aa0f7d4b7bb6842bf9f86f1ff7f028831ee7e7e2d7e495cc85623e5ad39199',310267000,NULL,NULL,'ea8fef9e82e451d9650777b051f19fe5e34b8976f1bcc1880b6eebe5feda34d5','de674878ebaee83afd74963622284c8bf2965a7f1247eece62fbd4a7a2d0843b','08dc74d0fa3f4a2203ae6fe6855476ac370ce8a4aee00df0653d243d99904ee3'); -INSERT INTO blocks VALUES(310268,'b476840cc1ce090f6cf61d31a01807864e0a18dc117d60793d34df4f748189af',310268000,NULL,NULL,'1545d381812f0f0caa827a237f145838276fe058b05af4808615738ca9910bf1','ab95e245f427175bc61d396bb76468d1e8f827856b96967df5478e932c5bffd5','f53a2fb5af4f9d5656d1863e03455d1b49b33827fa25b41ad6bac074a623b9ab'); -INSERT INTO blocks VALUES(310269,'37460a2ed5ecbad3303fd73e0d9a0b7ba1ab91b552a022d5f300b4da1b14e21e',310269000,NULL,NULL,'fd9cf61ac6e1fba409e4220a141ed6c89c18c893c7a752af53d5f7608bc04a67','bb1e8a2ec818c46170ec24cc22803caf3b49bd18b81a88327b31604f2ff2bf5b','f3a4b5f6a16da684188971f02a8d2623edf6f5885afc5f29865d3e910216a8f2'); -INSERT INTO blocks VALUES(310270,'a534f448972c42450ad7b7a7b91a084cf1e9ad08863107ef5abc2b2b4997395d',310270000,NULL,NULL,'1d34c8c0dfdb4733a7b589647abb0e6a08f8de93a5c86fbab786f6d9d1500785','a968d196bc72bee20d195249c167f27d9baa932f2e87671b5308c7df8ede4ac1','9273fa9e02b0986b4069c686ab6434b9665c7fb3750a50f1b26c62a8bacc0e75'); -INSERT INTO blocks VALUES(310271,'67e6efb2226a2489d4c1d7fd5dd4c38531aca8e3d687062d2274aa5348363b0b',310271000,NULL,NULL,'cf38baabc6e8a082eba1bd8ca2f72af5eb01cb76bd3c9eb101b27080a3a70d17','f85800535d634e2491c0fcb2f1d28d9d54b87755c08c7088d9bd3b1e99bb6ebd','80b5c6ecedc56b5601f666d80595cd2d167da78bcc0790a3f511486d0175f0e4'); -INSERT INTO blocks VALUES(310272,'6015ede3e28e642cbcf60bc8d397d066316935adbce5d27673ea95e8c7b78eea',310272000,NULL,NULL,'2b2763fa5ab2962582c303062da8b8da7280274e615b3e37f93a32e44793ccc8','2d251d9c21523d31487c6bb03806a3c6eacbbd87570d129af0c4eff884c1dfc7','dcfac57087b085286cd70a7d563c4c91b2ccfecf9eecc79c2f98a7e7337c8397'); -INSERT INTO blocks VALUES(310273,'625dad04c47f3f1d7f0794fe98d80122c7621284d0c3cf4a110a2e4f2153c96a',310273000,NULL,NULL,'ff9df73d4f92b7557c36f20d8f622923dda225a1ae2871e60f16ee2dfdf5b9d8','b528024370a366e0c3c17c81a6afd48ed6f8cbc61ef2744b568f82ef97477200','2e0c63d6dbb2467866e4eca7727884c877a13bbe5455d9adca7b63d8263f9a90'); -INSERT INTO blocks VALUES(310274,'925266253df52bed8dc44148f22bbd85648840f83baee19a9c1ab0a4ce8003b6',310274000,NULL,NULL,'ece29ec2cd160d7634009f41cc2d0f13330d53ec6971c019d69dfa4367f86646','a6d1edea52f6adb539fd192f3181851205c00a8656e455b5535251f958c275f4','be0d3a4db36903b026917804b2bd999e42c1e215dae076edc05e4e7ceac253f7'); -INSERT INTO blocks VALUES(310275,'85adc228e31fb99c910e291e36e3c6eafdfd7dcaebf5609a6e017269a6c705c9',310275000,NULL,NULL,'23738d6d8dbf8b44b481f6c0eade991987c84e8025fe1f484c7acd3ead7f4163','78fff0b20c5587e70d21b75cf665e989ec0a8d5366f05f28829540de20a63563','67ff25f210b8dd004f7ed4453a30e59eb5cb286dd7d43ef4cec6608accc183b6'); -INSERT INTO blocks VALUES(310276,'ba172f268e6d1a966075623814c8403796b4eab22ef9885345c7b59ab973cc77',310276000,NULL,NULL,'a241e1cb19bfbebb3bbb09c6471760b8379ddc73a67d69b4d84fd1d21dfb7034','ae4dae5678a9eb2dad1fc170212b2794f0d780614ffc2f464f8e2071d2fd678d','c69332d8bd73073291a273076b93592abf1f5f2c53514f51934c35ea9accf191'); -INSERT INTO blocks VALUES(310277,'c74bd3d505a05204eb020119b72a291a2684f5a849682632e4f24b73e9524f93',310277000,NULL,NULL,'0efa57fd462031a87831832a789ed7751aac5f6c19a23767555b3f7145d87532','3627782e01a5b98f602259395b122945104b3ebae075bbbbf61ea316a197e066','b96d96d7b0544a0d6a26a4808610a5bf5ba2b37cb98527b0d93b11fa504ef9ff'); -INSERT INTO blocks VALUES(310278,'7945512bca68961325e5e1054df4d02ee87a0bc60ac4e1306be3d95479bada05',310278000,NULL,NULL,'0045189a4da126b22e91e4bc2a7ac37dc90ec0869b7fcbc927919fca4cce5259','b2062f330e6762adb9ef0d7b6fbb8ff273c07cb168a240c637f8e30d6465bbd9','eb471bfbc0288d39b7563c1bb2c6b3b1679aad46bc75bc7a3ac9789492e5b872'); -INSERT INTO blocks VALUES(310279,'1a9417f9adc7551b82a8c9e1e79c0639476ed9329e0233e7f0d6499618d04b4f',310279000,NULL,NULL,'442b7d4dee025b81c298ca0f6a5b9dbdf17ed0087fc36eab7f0671d5a19c9a2c','a92bb3cb09b18fbaad350ab86c1bd177348ee26e17ce974506aa2095bf585f11','b94b2eb139d01a1545d9e2f439b9868ebcfbdfedb1248e300b28d7d615c80d61'); -INSERT INTO blocks VALUES(310280,'bf2195835108e32903e4b57c8dd7e25b4d15dd96b4b000d3dbb62f609f800142',310280000,NULL,NULL,'38d7f98ae9cfb8e3938032dc33899e2e3e5a88e9037571cdddf8ed4709fc8225','b01f7b130d6259628a37ccf06e96877bd765f9630fe24eceeec8babe9cfdd404','f06d199a2c5c903b27a4a9ebb10cb5d6f32e7bbf6ce12b639c3499093c9aa64a'); -INSERT INTO blocks VALUES(310281,'4499b9f7e17fc1ecc7dc54c0c77e57f3dc2c9ea55593361acbea0e456be8830f',310281000,NULL,NULL,'51237cee3b85f1636e336259b115fad87acc830c71e13ca79e344efb7c308ecc','7ed1e8e0f98d1928db424e3c70daa2bfec726e0050907043ef948ddcce2dbae0','a04d8bd1583c93515392b907e29886c61e8844be04254d8b2802299cb7264d82'); -INSERT INTO blocks VALUES(310282,'51a29336aa32e5b121b40d4eba0beb0fd337c9f622dacb50372990e5f5134e6f',310282000,NULL,NULL,'73adccef91b5c738e8810d4781a38edf98d2aa0a8cb619d575e9bdeda979f1fb','d0db0c9763ce086889ceb5dfb88740441118eb615fdd293b95f663fb687bd15d','89da82f35abf19c241e638398c17fdb9bf7171f4c19c816229ed31ca9feaf1db'); -INSERT INTO blocks VALUES(310283,'df8565428e67e93a62147b440477386758da778364deb9fd0c81496e0321cf49',310283000,NULL,NULL,'5853e60a1b79d4f154cc1f3dc8b0a4d6130ac07784bac16f257f92b9ef294144','aed0078d64860940972e5714150848649c58fbc61585739ac5562ad3f89dfca9','08bd7c8806463041292b8ef03823fdda5cc91b6547ed043d895f348626068b08'); -INSERT INTO blocks VALUES(310284,'f9d05d83d3fa7bb3f3c79b8c554301d20f12fbb953f82616ac4aad6e6cc0abe7',310284000,NULL,NULL,'ce33194cb67aa0a5facd788cc24706ef249bcecc95a9965f91065146b33e464b','33eebecec55c216d853f9248afb69bc6e70619a559dd2017e85d064ba1326eb4','5ea4816db35fba896cdd530a34959a7a4a26da2de04d8da4f1386e79a339356f'); -INSERT INTO blocks VALUES(310285,'8cef48dbc69cd0a07a5acd4f4190aa199ebce996c47e24ecc44f17de5e3c285a',310285000,NULL,NULL,'3af35e85e98aebe1a9c778570c730bf80e085a08ca707c1a5d44b50f2579e71c','11e628433e5adc3d227312947dd8e8088d8d4d9127abe6fa35393d44b42cd309','d5ab454de6c8d1a5ed5ebc3b05d120c519ac119bf3bbc582a7f3b50110ca8b5e'); -INSERT INTO blocks VALUES(310286,'d4e01fb028cc6f37497f2231ebf6c00125b12e5353e65bdbf5b2ce40691d47d0',310286000,NULL,NULL,'4b09b627adda46ee7cf7116102a330ba2aa1ce714b2fa133f7952af34a52ede9','47aa5c9927cc0b25d06f35dd67e4dcf0d55e2812f9ed1862dd9aa55b9890c54f','39fa1cfc5689c871da27542bcfd629d57eec1581fdc54df6bccd74fd278553e4'); -INSERT INTO blocks VALUES(310287,'a78514aa15a5096e4d4af3755e090390727cfa628168f1d35e8ac1d179fb51f4',310287000,NULL,NULL,'67786e4ffab15cb78c7bb44ef160d1e5d99b599eecb5ff4f906a6599d744d410','67a96eba27ab1066e57770fde0f77a7da3f9c1a80620e5dad5f111923b284ce0','a4f16c95009c0b03c2accae8e049e0a2e4892a16d0214f01b354783f093f7200'); -INSERT INTO blocks VALUES(310288,'2a5c5b3406a944a9ae2615f97064de9af5da07b0258d58c1d6949e95501249e7',310288000,NULL,NULL,'600716d2696160b3ba290636180f2afa24bf8d24435022b4539a4cc965c18dfc','800534bb5717bb82118814e75671d85c069900be76001d12c0d694761fbd8dc7','af0f49c70307b8d6a9f75e5cc6af036981bcabb403e86b77cad35a4b7fae2346'); -INSERT INTO blocks VALUES(310289,'dda3dc28762969f5b068768d52ddf73f04674ffeddb1cc4f6a684961ecca8f75',310289000,NULL,NULL,'cd6d4b17759152edbf25fd72dce9b9126ea31a2bb1a5435636801e0ee4be1158','838de979219e7a5ce3b80f2ad924f3273101f1daf391ccb05f90df2ee7bf0470','a8d6292dc1410a443e1a48285c3fc579def5d83a3924d10c6ea5a3447c2692b5'); -INSERT INTO blocks VALUES(310290,'fe962fe98ce9f3ee1ed1e71dbffce93735d8004e7a9b95804fb456f18501a370',310290000,NULL,NULL,'04a9135f416dc041d3c1c0216a84fd780d133213c3369691fbf5e8848af9d14f','863e66fa35a9222ccf3e960f4d3851874a11c9ed37bd1bb960617dbdf74ea8e6','e204f077197554c5d108ce853131293cc1fc479c2317e46ea8d6e8e4cc02cbe2'); -INSERT INTO blocks VALUES(310291,'1eeb72097fd0bce4c2377160926b25bf8166dfd6e99402570bf506e153e25aa2',310291000,NULL,NULL,'50f556e01b9e8c135b20187bf863839e651a0d0bf4cfd1008b446531776f7917','a575cbc49d31e64b7e0841316af95ec44103856bee8fdc35efb43c06230ceeb4','7c0d06026cc03167c34dce1e8c616980f3f32b67f87238c90b723ff6fa7e4e0c'); -INSERT INTO blocks VALUES(310292,'9c87d12effe7e07dcaf3f71074c0a4f9f8a23c2ed49bf2634dc83e286ba3131d',310292000,NULL,NULL,'9d4bf4b1c5dba1132a9cbfd78c1d94cbaf15d7648da80c8bc1a8dce12a79eac0','a6e16bdde3ca753f34b1a70eb0a8316e8a605f33e74f1a7e3f3a7ea1342a7e9d','08dc01c8c1b8dab7c0f6ab88b290dc5226232879aae6e310fffc5e5177aa2ed1'); -INSERT INTO blocks VALUES(310293,'bc18127444c7aebf0cdc5d9d30a3108b25dd3f29bf28d904176c986fa5433712',310293000,NULL,NULL,'a51a3f9af39175cc9d142eff67811307ad8f51cdd8161aaf0d98af9e2be28efa','efc0e769129e42cfc6682b13a21b675abae1c3fc969b78102bf0d3436f190fa1','525e64fe47957cddf6ebc579a3a14e6b98bb8f22647b0a312c674da29e4acdc3'); -INSERT INTO blocks VALUES(310294,'4d6ee08b06c8a11b88877b941282dc679e83712880591213fb51c2bf1838cd4d',310294000,NULL,NULL,'3e9858caa8e835295aa7e78505ea34ce0726e3f5f6cf9fbc6dc4393a28724a25','be4fcb18e1d24f0768cc5c24b6c13e9b087fca45ab3af31d96a3f10e5bff4231','348c42aaa0200a7c3d6d8beb6f23fb52095c2eee07bf05dafde96d76a944a3f2'); -INSERT INTO blocks VALUES(310295,'66b8b169b98858de4ceefcb4cbf3a89383e72180a86aeb2694d4f3467a654a53',310295000,NULL,NULL,'bf48715799c46d629641ba5b72405f6e6cf0500886da94fcc6fddd306a86b02a','52f0a6f76ce4ffed4a2cff4cbfa12ba639746a15e0ef942a8a98884ce6d6f8bf','6263e67741e9b595200ffb8fa9c70a21bb8017e9626c0c47ae59eb1b473c847e'); -INSERT INTO blocks VALUES(310296,'75ceb8b7377c650147612384601cf512e27db7b70503d816b392b941531b5916',310296000,NULL,NULL,'08e2361ae4b98387ee43fd7230ea8b296dee677b337f0e211527e3cf29a64e9b','66c5645364519ca0430db894d2eaa6ac82f7d8914c3cb4a5672fdf3bd6cac8b9','bb1e05c0e10d9f5580eba49480d1772e4234aa55471bd94cf877414ba6e0012f'); -INSERT INTO blocks VALUES(310297,'d8ccb0c27b1ee885d882ab6314a294b2fb13068b877e35539a51caa46171b650',310297000,NULL,NULL,'cfefc3138983a33686dd1fc37f06fa1d7e01d9b218f7242cdd59005633c0ded8','173f741e5e1806fce3f4f0b85299962c74408d3262b9752a543fd79ab310adb1','8a5bf3d3e2b032a601bfff53026d0fa4bde5f61a4e90ebef3913eea3fd3a7bf7'); -INSERT INTO blocks VALUES(310298,'8ca08f7c45e9de5dfc053183c3ee5fadfb1a85c9e5ca2570e2480ef05175547a',310298000,NULL,NULL,'25254257d6f6724161b2b73f94d28d3fd40594b4846699b8a2d5f45d205b1fec','ecda196cf8ce0219589e5e82d248b83d8bdecdeb5a0da3b02aa6cc7b66d2c09a','657d91f3036889426df9df8247ee90df6c5fe36a3d8c6b1a9efed54aaee0dba1'); -INSERT INTO blocks VALUES(310299,'a1cdac6a49a5b71bf5802df800a97310bbf964d53e6464563e5490a0b6fef5e9',310299000,NULL,NULL,'756acb1055ec75df8fa70f80e23d75f2b47e75035bfd68802e68308785a2ee14','bd31f490af463106fa1364081ff638616bd245b11878981928d0d0589e7b88c0','663d47a53efe6a593ae2f06f3ad6444efa180b5e59e82bdbf35d672af31cac6a'); -INSERT INTO blocks VALUES(310300,'395b0b4d289c02416af743d28fb7516486dea87844309ebef2663dc21b76dcb2',310300000,NULL,NULL,'e30027ca81176dc1e79a0ab3a5afbb839a3338dbe9ea6057aebcd383ed884c1d','cde56e64e9ea960c6fd1560ff3033154be1f694daad3263297ee72d3f3a6182c','82164a2d9e837164df185848a67ff7ddd947d2eff43ba297450c62e5b4754b9b'); -INSERT INTO blocks VALUES(310301,'52f13163068f40428b55ccb8496653d0e63e3217ce1dbea8deda8407b7810e8a',310301000,NULL,NULL,'4c2bcffc796af76a2607a978289942241e63a6387e0a2ae8fc3d02c6b5519fb0','6f3cb6e3a414bb29aec0d4aaf55ac706261b539befcb649259500a0c826ca7fd','b66920cfbb34ea08e06bb6fd594b7156a0a2d4021f8a43619397e81da6cd5267'); -INSERT INTO blocks VALUES(310302,'ca03ebc1453dbb1b52c8cc1bc6b343d76ef4c1eaac321a0837c6028384b8d5aa',310302000,NULL,NULL,'a39fdd7f84d2f6e29b613a8a724bc0902d9abd2d6b4d2f46c3b0512928d69b3f','54bb8b0b1f24cd8d9d562c1fd9158f4ef6c4c6ced0974c4e4e461aa641842148','855568f20d2fdfac725046c1f422235a8d4805ae0fae8edd1e13861f846c87a4'); -INSERT INTO blocks VALUES(310303,'d4e6600c553f0f1e3c3af36dd9573352a25033920d7b1e9912e7daae3058dcca',310303000,NULL,NULL,'23f307ef560a02210f4aae5fe605c6d8af9317ab17f1e1ef0944038a3515da49','d615d50f2c7f25b35a4826c629ac51383c1da2f1912a45da4b42eb3715a537ef','c308d0d1b55b151d0da4bcc3cf938d338cc5c74ba2f1b3bbcb13e193b8450e07'); -INSERT INTO blocks VALUES(310304,'b698b0c6cb64ca397b3616ce0c4297ca94b20a5332dcc2e2b85d43f5b69a4f1c',310304000,NULL,NULL,'6baa2ac646d3725fa01111959753844d22181cbbd1801cb12c4208be3709a3a3','d747a9dbe53c2c31dee78560f7b6db3e2bf360693484855eca7f12c59122cec7','be92312e1b00b10735032583aa8c56f8beae12efb9ed242584e0e7eafaa1b310'); -INSERT INTO blocks VALUES(310305,'cfba0521675f1e08aef4ecdbc2848fe031e47f8b41014bcd4b5934c1aa483c5b',310305000,NULL,NULL,'c366fd009860a090c632131eae9380820e512009bbbaa6f7bc5529afab7a88c1','5b38d6412ef33f7b9f98375c40abf96badbbe0644ef426381c85865d6367405b','66540145910f3127b31d280a4159b538d64596ac7471b4ec6b9219789e6cce67'); -INSERT INTO blocks VALUES(310306,'a88a07c577a6f2f137f686036411a866cae27ff8af4e1dfb8290606780ec722a',310306000,NULL,NULL,'fd12969b828d689063b4885a0356fc17e5207794d1f5b6a17bdeb8d584815a79','934e049637f985892b04a774d8f5ee4b162ed8d6857271fcc409442a4c983a85','aebf341ee2c6a1b12db7b9c509e56babf3325c4f769d74d89883580426887550'); -INSERT INTO blocks VALUES(310307,'bc5ccf771903eb94e336daf54b134459e1f9dd4465dec9eaa66a8ee0e76d426c',310307000,NULL,NULL,'e168094d31f56d36e4c3863fe719e6064b08ccc6f3c2adb490b1359360026aee','acc586f0030fb226ff74b676070a3849747249675d7393b81f1796d9d2545b0f','671f39cc124450d9e279d6ff6ea17a35f617db33f33c62ed1eb75f467fb38afc'); -INSERT INTO blocks VALUES(310308,'2291ffd9650760ff861660a70403252d078c677bb037a38e9d4a506b10ee2a30',310308000,NULL,NULL,'523b3bba7b02e2c4e588f21ed14b7b4f6630f887cc89f9361487b581d7e633b5','daad0db70e16b858883c60d1f73720c71baebf5cf19c6ce506ed27aae3fdfa7c','4ba9671af5a41bfb26df994694bee5184c3f1d9f6d42379627f252cc05898dbb'); -INSERT INTO blocks VALUES(310309,'ca3ca8819aa3e5fc4238d80e5f06f74ca0c0980adbbf5e2be0076243e7731737',310309000,NULL,NULL,'effe1a68917014086da3bf8696f6c13f3cf2cb5cbd6c18b80ed622e476cff017','c2118312939d20050474da5d689b1f2985883844c157568c205637b104a2edb2','ba9f6c29f116db42cf194def1e00a50f9788f8d8b90fefb02a045cebee7a3448'); -INSERT INTO blocks VALUES(310310,'07cd7252e3e172168e33a1265b396c3708ae43b761d02448add81e476b1bcb2c',310310000,NULL,NULL,'968fb8a7409531a27ffb52af484e7c1076f05b58f9a51bf9cf3d5a7d83b12002','a5095bd80deb5155844c03956699d359ffbf0c08664755c5e457fa31522bb318','705e88b850583e0eca3e27b913853e7f6a060181c2506228e6e8c842e9131c2f'); -INSERT INTO blocks VALUES(310311,'2842937eabfdd890e3f233d11c030bed6144b884d3a9029cd2252126221caf36',310311000,NULL,NULL,'8c69639a757d0195594fa1da3f6b35a0e8c62b8df7f95db81e26d496b8c9dd72','87eb47dcc6b7d64443f422293617f7679f60ea7d41a0fc98e66e4717e9684b03','b05ba32a00997dc486c74821de2c3dada80cc1c02e8dd123f605a6cdc5ed1421'); -INSERT INTO blocks VALUES(310312,'8168511cdfdc0018672bf22f3c6808af709430dd0757609abe10fcd0c3aabfd7',310312000,NULL,NULL,'8d839bac01b9aae5e554f691ae0ee42cee072f9367fcc2811d4b3f65640cfcad','b3d643a0bed134c40365d7e1fea8478e60f08158999d8147e5a8a0739ee6843d','e2ed5656b5c0cbe5e73187d921f4ac144b7dbc08780c6bdf858c6c04cf0d469c'); -INSERT INTO blocks VALUES(310313,'7c1b734c019c4f3e27e8d5cbee28e64aa6c66bb041d2a450e03537e3fac8e7e5',310313000,NULL,NULL,'1377f4255bfd7ff6638734733a4b8faec97fd62aeb954e42b477c875ccc50b73','e8a3a4659973a0110b46795aa9e0e671160189d171944bc89d784e082fd4b8e4','bd101173b4269f59db3a27203c3d09becf14fc35deafed564d561eadae2273c1'); -INSERT INTO blocks VALUES(310314,'1ce78314eee22e87ccae74ff129b1803115a953426a5b807f2c55fb10fb63dc8',310314000,NULL,NULL,'8ed80d44f0d6ad01a30611d94b91f735ef3a166cf0dfa7531492a3e4ac7c29f1','dd54a8bcced43bcac9b2e2783061a2d9c44c34c07383bdbae9aedb3a1ceab1fb','3d7032b193673415740f390c0bb473b53210edd25ccf96660c71ff64afa0b56e'); -INSERT INTO blocks VALUES(310315,'bd356b1bce263f7933fb4b64cf8298d2f085ca1480975d6346a8f5dab0db72cb',310315000,NULL,NULL,'24b5905cf0d5349b7031870af9677916892e3292fa61455a75e84c1605a398ba','c41277b6ed0b6a5591b6d8a5dc6275831816a0b38d80e758c55da94fdff684d0','dcc9fce87a61f2faacc52eb89e13fefd32dd01ff691a33e216603c4ea9002301'); -INSERT INTO blocks VALUES(310316,'ea9e5e747996c8d8741877afdcf296413126e2b45c693f3abdb602a5dae3fa44',310316000,NULL,NULL,'a191657253ca159739403f35417ef74637b053db49c7db62465fde4c54e69239','5a0493b0c046a9e8822f8d8066dbbee6ded3a90ccfb7c90d33978bab664f2c18','b093c25741e09fe09d267fdaa7790467991e48e71943bae439411b11b7f2f1b1'); -INSERT INTO blocks VALUES(310317,'aa8a533edd243f1484917951e45f0b7681446747cebcc54d43c78eda68134d63',310317000,NULL,NULL,'bf6d880b9fa42b0e38523c00c92a898093afd068450be504a0a56bafd69ed647','6d3b4018de0f1387d9fa13c12f2b665b87bfc7e71c87c0944655d0ce60f1773f','8aff1439da0edacfa6e822369857240d96ca5393907d092b77aff275dff54ba2'); -INSERT INTO blocks VALUES(310318,'c1be6c211fbad07a10b96ac7e6850a90c43ba2a38e05d53225d913cc2cf60b03',310318000,NULL,NULL,'6422eb2cab5937adb9ca2194c025d0dce63cd62e18d7ebd63220207957c942ee','6937ab007cdf074357a4fa32bebf0cfeb7256b33ac47f36c4f41d1a63adfc1da','981e01f961de4142910014ed4f17a861e8374e9ca39f9a7badadd7150d47fbda'); -INSERT INTO blocks VALUES(310319,'f7fc6204a576c37295d0c65aac3d8202db94b6a4fa879fff63510d470dcefa71',310319000,NULL,NULL,'efb625496aa4365f5ac198a82833c880a60cd5f86d04689463216619cd7d96b8','a00dbae611e4cffbeacb837828e8182ed0665235f301b2afca6462ac8eb72c28','75ffc7b13f5e650ff1f0e36290caed2e9dbae591dc31673cb8fcc42f3185142a'); -INSERT INTO blocks VALUES(310320,'fd34ebe6ba298ba423d860a62c566c05372521438150e8341c430116824e7e0b',310320000,NULL,NULL,'8c3938d7b3c0a822ebee67f1ecf21b1db6496e19471cf1f2cd00f30325d0c88a','cad4b4523ebcdff7909e8ff7c5eb8c80d85a6343b9b216f7edc8ed8925713545','9d22e23f30dcdce54e159cc45d94008782cd695161c98c9da044fbbaea317fe0'); -INSERT INTO blocks VALUES(310321,'f74be89e9ceb0779f3c7f97c34fb97cd7c51942244cbc2018d17a3f423dd3ae5',310321000,NULL,NULL,'21e4c3a7afd02f183cbb69709fc6c006ab3d38fef3466de1a1870232d1c891bd','cead4ac9cf2e9e185ad7f30a37cbb39993b3ad0d819560976a5c478b378d0004','5dcba624b23e2ee72f5cd957ddf44ad930672d61e0cd6bf06cbf18551c76c1bc'); -INSERT INTO blocks VALUES(310322,'ce0b1afb355e6fd897e74b556a9441f202e3f2b524d1d88bc54e18f860b57668',310322000,NULL,NULL,'01b3b28c4d8eb796827267c06e6362206884e44f40c3f72d9b5c9d1e6cdfb29a','514a0805bbf2371e3763b77a329e556890d04f8b010c675f919bf54cbf2949d0','a5c068d02bb1e2f1bb54c30202ca26bfa61587407baff8677ea5576fdbbadf78'); -INSERT INTO blocks VALUES(310323,'df82040c0cbd905e7991a88786090b93606168a7248c8b099d6b9c166c7e80fd',310323000,NULL,NULL,'a362da58df0d31eeaa93a25c91c17bec62f9cad6ff0c31420584ce293ecafdbc','25b2688ce8a29a36b265f0f76719ab90592a0ac816047373d24bc107cc2af3a1','1ffff2eb509dfc2e17b70711afeb2e4d9988fb541103448b50f8682e90fbf3f4'); -INSERT INTO blocks VALUES(310324,'367d0ac107cbc7f93857d79e6fa96d47b1c98f88b3fdda97c51f9163e2366826',310324000,NULL,NULL,'d1b353ac97e000471c66df8ee04d7b0c25f7eead2414e5648cd2ef334881bad6','dc2c2bd652d3ce8d29700b05e69758caf760242e4104a45bbadd006bd60e30a5','bc0672ffcd92f59ea9595d36f6a09ee1f3ed10e10324cab8986ad19f592dac7f'); -INSERT INTO blocks VALUES(310325,'60d50997f57a876b2f9291e1ae19c776df95b2e46c14fe6574fb0e4ce8021eac',310325000,NULL,NULL,'7734300dc764c67fde935dd4432396de4a31cedc2901f3fc70bf1576797cf7b0','4b1b7793a3c72117d7c10aed5d638e2380ae41e180642fbf00cd70eb04fd9958','f34ef6fefa93d7717372cc019148ad75d2647e13fe6e3143ec2fafed7cfb1314'); -INSERT INTO blocks VALUES(310326,'d6f210a1617e1a8eb819fc0e9ef06bd135e15ae65af407e7413f0901f5996573',310326000,NULL,NULL,'ebe859a722587fd456695c6a46af7f0bf54c03e940bdbb5424520a8c1fe70617','61edda4c07d31f85dd3d11394f6bb20e7c7c6b0e6f5251ad137d3dc5704ef19c','544b049f4dc4763c9694f9e6edb1d193015110d2ace117f149649f76ad81286a'); -INSERT INTO blocks VALUES(310327,'9fa4076881b482d234c2085a93526b057ead3c73a6e73c1ed1cdee1a59af8adc',310327000,NULL,NULL,'8ced7a546ee2c746d4dc3f0ecd2fb4eaa62c65c4e98be74545d8de22c03526e6','2df6e25726f55175acdfda607966a09054ee379ce0f3a20572b5747d2ccd3714','ffc45518b4da2c8838761f3950f087033229b5d9370ed77933e70d52999b746b'); -INSERT INTO blocks VALUES(310328,'c7ffd388714d8d0fc77e92d05145e6845c72e6bfd32aeb61845515eca2fa2daf',310328000,NULL,NULL,'bb5d3479e492f52a0b3b69d29852faefdff645f9b113eae82594f57e8aa40b5d','804dcf1a3afd459b853097f002002b9b3fbba7ebd198d640dbf3d33906557b90','1a93b9f3d92dfd1d113c8d894a8b8dedb2a54a1e7d3b087eb6c3a52d0fa1839c'); -INSERT INTO blocks VALUES(310329,'67fb2e77f8d77924c877a58c1af13e1e16b9df425340ed30e9816a9553fd5a30',310329000,NULL,NULL,'4ad2c9d802db762537be19143ef5eca474cd9f749bbbc661cb95bcf1dcb0b02b','3d9c70e9de44cd225655cabe1ffd2559d23a822ecd988fec90267af067b3600e','28290675e84bbbd77885c0b29a7ffd45f8ee3d11dca5dc2f384a0e048ca7625c'); -INSERT INTO blocks VALUES(310330,'b62c222ad5a41084eb4d779e36f635c922ff8fe275df41a9259f9a54b9adcc0c',310330000,NULL,NULL,'4a9a6b59d56f6b7cf867095d939f9bddbf779141177feda470df3759b7d48be3','aa7f0eb4a619027687eb666c55d7f9ed8a8242732d9b9a4b1e9ef03578c51f04','e59f7424f7c851dc5102e3c898641da13e2dae08cb66f45bce391517fb12d87d'); -INSERT INTO blocks VALUES(310331,'52fb4d803a141f02b12a603244801e2e555a2dffb13a76c93f9ce13f9cf9b21e',310331000,NULL,NULL,'c676b9c31e0e3d74d005ad0a52a18ba34688b6002da5d269bcea0f789a4f8e91','7a46f9c856aa50e37cc24751982ccce135c5209b184efb0406aac9df228a8c49','b498c4b2d261dafc37c02bb049512a10dceee49aea4f5db6c378a7207ed0e678'); -INSERT INTO blocks VALUES(310332,'201086b0aab856c8b9c7b57d40762e907746fea722dbed8efb518f4bfd0dfdf2',310332000,NULL,NULL,'cf0b702c03ecff4bda1254dd5e96ca580b69d5d02d1f233725fccbe1f5f32000','c9ce031c0377ef78cd639526cfaa0bf18185c3a54949207c0416d4b42b4e2ea3','185af3c449bb91056a7801e1fab8ece03275742f8b19146ac317453b654b3530'); -INSERT INTO blocks VALUES(310333,'b7476114e72d4a38d0bebb0b388444619c6f1b62f97b598fed2e1ec7cd08ee82',310333000,NULL,NULL,'b40359eb197db65549946d93a39b2a732e0694d21b8d0138b9bfce4f5a87ae5b','1f689a825209fbdbd42b35d63469211397ce313b9f51385dbc8c3fae18b99476','2d1a4cc5497d1c9d8e589691d339a007578600531949c324ac64a0bf04586ab5'); -INSERT INTO blocks VALUES(310334,'a39eb839c62b127287ea01dd087b2fc3ad59107ef012decae298e40c1dec52cd',310334000,NULL,NULL,'7cb471ec146f9ec1e4d1b93184ea641f7b8088807dedcd1c0be4ca5ba99e80e1','211fb97ed8f43562b19b9e0f49fb282068e7e5c3fe62674c8c24cb8c66a6a7ae','fc534803eb2dc737cfec6dc7e120d48ec0a00c985695325e588d31860800a925'); -INSERT INTO blocks VALUES(310335,'23bd6092da66032357b13b95206e6527a8d22e6637a097d696d7a96c8858cc89',310335000,NULL,NULL,'47de747ec20cbec96a6bc4b71f67ea827c7a5a1ab0d3541fd539efac7442d644','317ac03fd72f410d545e57d38f90ac4ca7270f52c45ea1ee61a9ec8a312b689f','f5e3df363a8e0a241f389510c156cdad103c82400df34bc959cb673decb3d2e2'); -INSERT INTO blocks VALUES(310336,'ec4b8d0968dbae28789be96ffa5a7e27c3846064683acd7c3eb86f1f0cc58199',310336000,NULL,NULL,'c216588e623d2b3d03499c7e9f817106b20a8c98765979987633f1e4e50d9594','40ba486f57a47d264f773a3d43ef5a489c8e58817106cc59af558ca256319c59','86f54e6d23e62b4457f37cdf8e2b174a0002ab78c5a291ea8e15cad0e288b1a3'); -INSERT INTO blocks VALUES(310337,'055247d24ba9860eb2eadf9ec7ea966b86794a0e3727e6ffbcba0af38f2bc34a',310337000,NULL,NULL,'a558b47328f54b79a5ad9f7737af0e4df07e13e20f150296370e111879c09c2e','83520e028e369129c97437b3505002591e2d4c124536fe8feb1e25afca37167b','93d3a116e8461e40afc1a5ed5862b85560fa595d52a26d4b080e8475fe63a87f'); -INSERT INTO blocks VALUES(310338,'97944272a7e86b716c6587d0da0d2094b6f7e29714daa00fec8677205a049bcd',310338000,NULL,NULL,'31bea50c6481fa982eace70df5fc13d2981f1af13962809e3492b493a0dd4905','b3fed745dc2b7c21da6c57c901b4a8b3ffd125ccbc9608de891c21c6f579e080','6faaf5977be940a34c05c94ae7290c5c5aa53283b0b8a3b9ad9676dd70677e0d'); -INSERT INTO blocks VALUES(310339,'99d59ea38842e00c8ba156276582ff67c5fc8c3d3c6929246623d8f51239a052',310339000,NULL,NULL,'6605ca3db3c509fbc8574f2e10a3f981e2ff17b2812946ec8f2b1e49ba44f220','e977c4d41d0f8a01a14c479039759b2ebb2389f279c67ba2c80f176602d1459b','5b7b1499d4209c313265dd1b6a46e30fa91b751aed7e1c23a9593f4dbfe68622'); -INSERT INTO blocks VALUES(310340,'f7a193f14949aaae1167aebf7a6814c44712d2b19f6bf802e72be5f97dd7f5a0',310340000,NULL,NULL,'7db1ad1952cac2dda86fff6e5f939010bb30a1da26af438d354e17f423d5bf1f','c8d43a94a12cc6f093095a695fae56bccf2e321cd800031a8cb58029c031660c','f17441416b1d64441f5b8fc327256a8c1fe86668c75c377f3516e34d2cd129f2'); -INSERT INTO blocks VALUES(310341,'6c468431e0169b7df175afd661bc21a66f6b4353160f7a6c9df513a6b1788a7f',310341000,NULL,NULL,'1a1eef01250d2c53a1b34a8ee5b1e8fce984c3d47d28c544c6e162493b51225b','a35dc0024698a5399586c5d6a62dd41c91adfe8c87c15bf57f599c73e837eaad','f3afa4b7d5210601aff364aac0967c0503c0a55eef6f02b44d67755298ab0c07'); -INSERT INTO blocks VALUES(310342,'48669c2cb8e6bf2ca7f8e4846816d35396cbc88c349a8d1318ded0598a30edf7',310342000,NULL,NULL,'3c85c0b825985b04b42137da7e59fb3daaaf9e65b871b79390a4d8b31be5da92','7e300cf5098ac1ea1627ff39d96bc455999413d10abb8d180467f5651ad25726','e5a149c40a2893cab361be6b3b668be1b8f7ede1028b50f5bd6fe3528762984c'); -INSERT INTO blocks VALUES(310343,'41a1030c13ae11f5565e0045c73d15edc583a1ff6f3a8f5eac94ffcfaf759e11',310343000,NULL,NULL,'26f4ea323dd31b715c7a7f4ab8f1feabb199333a8494449ed538ff13215bb3b2','962afbab4e2a71e8cd5d829b32a5754a9c1d3220e2eef0263ddfcd565fc4db7a','552cdcb6d568ceff52645001391a6933c2a96b669a65550749881f3a439b4272'); -INSERT INTO blocks VALUES(310344,'97b74842207c7cd27160b23d74d7deb603882e4e5e61e2899c96a39b079b3977',310344000,NULL,NULL,'444314748cb1fa1c836b3b4de65c3920c7fe446741193e5f77843affe3bee908','a1c6af7fd601b9fc26e8ee1db43cee3639944a5f1a8543646645ad1b606ceb7f','f3eb4060e6ccb431402820cbd292a2ee9772a8f486121b036a9a09777fe4de55'); -INSERT INTO blocks VALUES(310345,'0bda7b13d1bc2ba4c3c72e0f27157067677595264d6430038f0b227118de8c65',310345000,NULL,NULL,'d1775816bb104187076be74e78e87fc6d367c3cb31d372329aec2b635002ca2e','3dc7e6de7ce2ebe528f57bff1de0f631ee6d907a194e28fe279acf92a1466f5b','f443a2b290e3d11a521e289dad67f4561aa4c35f9c45919d622395f0022d08a2'); -INSERT INTO blocks VALUES(310346,'0635503844de474dd694ecbcfb93e578268f77a80230a29986dfa7eeade15b16',310346000,NULL,NULL,'3244eed1df8ec4ae0ddb04f9f6e59e54244ca3df10dc21fc89c99c74ba734781','80c267bf4b4c677528095f32a3e85e60e0a4bb6ef5bff171036fe90785aa891d','3cc0d9a81683fb31611a341f3f35f42c6e7c04000ccbbbb5e749f8bcea1f6bd7'); -INSERT INTO blocks VALUES(310347,'f3f6b7e7a27c8da4318f9f2f694f37aaa9255bbdad260cb46f319a4755a1a84d',310347000,NULL,NULL,'6fd1802c269750b69ec04df457d47cd6b44c261340ebd5b4da61f06ede6aa166','9e160dfc79ef80fbab34a797e292ab36ab0f60c0b2182802921492791d689bf6','1708bd999275f0314de79de791d3fff720bcf81e8f0dd29680907ea157de665c'); -INSERT INTO blocks VALUES(310348,'c912af0d57982701bcda4293ad1ff3456299fd9e4a1da939d8d94bcb86634412',310348000,NULL,NULL,'668330e80a23f499c0e91b01c4c51aab393813b840f81b6b672611e391699faf','1f6c8a223e835807a984ec8e1aa01e066307c7a854434733ffd6e6ca24066971','db732bc7b1e390bdcac1629836314744cb93ff61fb1bb487e5f2038a2de0ff4c'); -INSERT INTO blocks VALUES(310349,'ca911c788add2e16726f4e194137f595823092482e48ff8dd3bdbe56c203523c',310349000,NULL,NULL,'32b36035ac1684e93126657ecd9711feb689672f64cceb03d220a8089dfacf12','bef5740db79806b3e5886102ea824ba1f8550e1d55f323d3ccb660adad7deca3','41536f06058aa53a74615296ba613d42fcf4781f5c24df728c9302c79edcdc29'); -INSERT INTO blocks VALUES(310350,'c20d54368c4e558c44e2fbaa0765d3aecc8c9f01d456e3ff219508b5d06bd69d',310350000,NULL,NULL,'dbe70bf3b8e4b74ac25c1b6737b6a760e6a06a4f96ee83a5ca728c8501d4af05','a9d2c6acd7eaf5c798cbd8243c1bd6b7634dda422ad3c4839c0beaef5a83ae0c','c80f3463372ddc133946616dfa7161e789a5187abcb1031427513f40f7ea667e'); -INSERT INTO blocks VALUES(310351,'656bd69a59329dbea94b8b22cfdaaec8de9ab50204868f006494d78e7f88e26f',310351000,NULL,NULL,'89bb7ea865a221a3646f78ea774a7cf1e15e8d65b85ddcfbdf87773145904151','cd0336df5e4ccec39f6b03641e766fbfe2fcc73d21123fd02b946ba36086934b','57967fb614fde03444496536cd9435e33842c9c9e20ece3e3f18e2e27be9655d'); -INSERT INTO blocks VALUES(310352,'fb97d2f766a23acb9644fef833e0257fdb74546e50d9e2303cf88d2e82b71a50',310352000,NULL,NULL,'fdbf27d576a72b046776be0e5c0a91d060619778aadef3df1d30f1a7785a0fdb','ce3e98f749f31ec0082c54bdefa582741793d0a049636ebe2ef933aec0231dcd','4591524ad7c6626ccb831cfa59348349ba7c0180a2149c47cd60e59aac189831'); -INSERT INTO blocks VALUES(310353,'2d3e451f189fc2f29704b1b09820278dd1eeb347fef11352d7a680c9aecc13b8',310353000,NULL,NULL,'73429d323376209447edc6d2ddbfd51f0bcde21736ea6dad61dc96b6984a1fa1','015dd109e8665d3af271805f1966f2d7bf87cd989d1f6b1af01657746e67cc5f','9166cfdd4a2e7144bed00b5afe15a6662fa8b27d871af4e9ad1601d6f88e3bbf'); -INSERT INTO blocks VALUES(310354,'437d9635e1702247e0d9330347cc6e339e3678be89a760ba9bf79dd2cd8803e0',310354000,NULL,NULL,'b2bbcbb6a7db94b2a5681c6e380ac13480bb49c29a3fbb3c7c1eb740f70f8324','ac333c913aee8b776bf2a1d0f0cdd7f1946c7e01d83887cfda661d3997c5f8d4','40d9550bc44a147337504c883467ccb0df44861b0b0652a66c107b1729a7baa5'); -INSERT INTO blocks VALUES(310355,'ea80897a4f9167bfc775e4e43840d9ea6f839f3571c7ab4433f1e082f4bbe37d',310355000,NULL,NULL,'ccbd3ea41587c3c1d92f355979b49c5340a0a90060f07c228c22d6ff76b25579','0c4a78dab9ab654ad28aacaa66891d0be3332ee3d0222bb49dbf9e2a12fd7a9e','9eafc9d0c29a40fe6485cacd11f4aa982cb670040cbd94a2901558b45e6b717e'); -INSERT INTO blocks VALUES(310356,'68088305f7eba74c1d50458e5e5ca5a849f0b4a4e9935709d8ee56877b1b55c4',310356000,NULL,NULL,'06a95d39e110e40ba318320d50984096cbec88c680f426f721154555efc2561f','01d2d0622139b644ea7d5340570ea0a4257953543fb189994fb975e6163d8a60','12c06774d25d13c63fa9bcfc21bb22c0f53b33fb53eccc22697b0fa1d02e51e1'); -INSERT INTO blocks VALUES(310357,'4572f7f4ad467ef78212e9e08fa2ce3f01f2acc28c0b8ca9d1479380726bab1f',310357000,NULL,NULL,'443f947352e853367d1c10d25771c7d78eec22fac19c5bace6f96b8f949e264b','25788620f5a7f8d532948463770424c21e75b169432a2e4e1eb1f0a71a0ba6ed','fcbed554c8d39d1b001dab89eb1bc4328df608b93209c562f4bb260dbc23a579'); -INSERT INTO blocks VALUES(310358,'d5eae5513f1264d00d8c83fe9271e984774526d89b03ecd78d62d4d95ec1dea6',310358000,NULL,NULL,'c2cd71dc9e7d5ccb5d5e9d6b55c47010c9db6a573d01820da1c8960970fd571f','a1b8f56fb42dd1c6a6e8027454ac7fddc2754b0656688576ec24a6ffdf6daaf7','876d919941b3b1fbda1363384135f292eef71d1fe8477e963452dc3da96cdaa5'); -INSERT INTO blocks VALUES(310359,'4fa301160e7e0be18a33065475b1511e859475f390133857a803de0692a9b74f',310359000,NULL,NULL,'5b7646bafc6b11eb1554ea1e02221883043b435ae973c3678505fa2128aadfb7','1e6afae27a3102e7e9665a064e5ff112307388199ebb74e1fc461dcd8d38c85b','254fd8fb43c5c31b2b6fe6e845c9eaf18c9a9def0653a4b1e6540007f2f8fbed'); -INSERT INTO blocks VALUES(310360,'cc852c3c20dbb58466f9a3c9f6df59ef1c3584f849272e100823a95b7a3c79f0',310360000,NULL,NULL,'b0e937568a47c244e3b29cfb3a5e7196c171acc1565c44020345c715b7774658','281d2e91b51727ac73fc558906e13a4955c1cfb6f9dd1fbf0dfedfa3e2cf5f95','a2f5bf59e4213704859865db723038436a35b253cfb04e6950f203c36a50391c'); -INSERT INTO blocks VALUES(310361,'636110c0af5c76ada1a19fa5cd012e3ee796723f8a7b3a5457d8cb81d6c57019',310361000,NULL,NULL,'fd5b67bb571f4e9c0c37c6a5c9e1181133c301e05f4f97a41bd827eda7a6db3c','c04c35a1fce6da595c33b914dc15072b56e981470a81de7fc2009d1c9d8c1f00','a2f320edf5f692e8e29df89fdf5b1c1c384b5ba6a557e636f3eda29764c229fb'); -INSERT INTO blocks VALUES(310362,'6199591a598e9b2159adb828ab26d48c37c26b784f8467a6bb55d51d7b6390f2',310362000,NULL,NULL,'38382cc090b349809c4798c3c83b485f8ff682fd5b5b2568357d62ef30f7c046','07937a84691f1b0bd1897a098318d8d7577da73c4c0fe3fe91931f47a4843259','c41520cabb7eb75305983ed593f90e298c1a1698122926d23d9cf8183a690b07'); -INSERT INTO blocks VALUES(310363,'a31967b730f72da6ad20f563df18c081c13e3537ba7ea5ab5d01db40e02647e6',310363000,NULL,NULL,'82911a691937d87629bc14e5294f68a25ff2fc6512370db032834b85a623d5c3','11cf84026a85dca1b2c27408512a07092565061865d153913aa873f83e2062a9','dec4dbd331725676a1415edf4c770636db16024b9a638d20d3d517d311dc1154'); -INSERT INTO blocks VALUES(310364,'67025b6f69e33546f3309b229ea1ae22ed12b0544b48e202f5387e08d13be0c9',310364000,NULL,NULL,'cc362ce4c2142e539057430e2dd6402b985c62fefa4e4ad33afe1305f53af8a4','a3864cf99fb338a60ad73c6550ab12cf1852c1aaa1c0d4b30a6454d55f787528','e477765422cab8ba7e76838e064c41108039194a405df9a09a27675cc9127c6f'); -INSERT INTO blocks VALUES(310365,'b65b578ed93a85ea5f5005ec957765e2d41e741480adde6968315fe09784c409',310365000,NULL,NULL,'49e41f95f081b70e3f540fa22864cc4f229ceabfdfd54f2da112f1fd35466617','5788e72e314169198d92a014c2e06ca9ce795f4977b48343e6ece965b5cd1f3e','0f59ce84d484daa17eb468b036e16e03ac4373b80543cc1136ee6a402290518a'); -INSERT INTO blocks VALUES(310366,'a7843440b110ab26327672e3d65125a1b9efd838671422b6ede6c85890352440',310366000,NULL,NULL,'687c5f3e381d164499126ff90785e3635c825db3808267d4de2ec0e37cc7c597','869e42fb7e4ab2269bf7e9d60accb707b379d4f9de7bc237841def956732ebf7','e79c3af0cc9d31a7addf7e842c906036d0a7f8e840c01dd2255e84a75c904820'); -INSERT INTO blocks VALUES(310367,'326c7e51165800a892b48909d105ff5ea572ff408d56d1623ad66d3dfeeb4f47',310367000,NULL,NULL,'d7fe976a4b2cca2e23d082a703ef4f4739e110ce1e0a373e76064f6186856ff7','e0ef9aa9d9b7d1c3a65d42e7161724dc87d780b9522996d3ff65a25193ce2b93','44893db5bd2f4402e6be28ee3e849b59ff0db03611017f86a0cff5eed9c21270'); -INSERT INTO blocks VALUES(310368,'f7bfee2feb32c2bfd998dc0f6bff5e5994a3131808b912d692c3089528b4e006',310368000,NULL,NULL,'97f0a0f9e6f355dd179aa2941412decc1b0a06de0dc14dce8538aed6e35d41ba','46d32b302c2deecf756e3958ee2228bb93ac98906ae54331efb5b90f62b85f77','3d50870a3238701e1cfa4997cba33f2c0a60ef5f1b3d743b1d68ed8f67949eda'); -INSERT INTO blocks VALUES(310369,'0f836b76eb06019a6bb01776e80bc10dac9fb77002262c80d6683fd42dbfc8da',310369000,NULL,NULL,'1b5d9ec9bd918c84a5f9b6882c94a739cc1ad1362dedfbdf7b2009fd42251d66','b10d6c9fbfdac1627e51cb2aff6b121ace75c626a05fe16b11e6794c5683c60f','d4c4cac95ab99433346656e395709a7e35cbbf239befe4939dc9a1f03ea74f4c'); -INSERT INTO blocks VALUES(310370,'9eb8f1f6cc0ed3d2a77c5b2c66965150c8ceb26d357b9844e19674d8221fef67',310370000,NULL,NULL,'578b039ed2b9a25e1c75ad9a5242c5962d6645616dc53fb08386602e40f14486','bdc20946af8409c997efd9283331552f073a3f0cd09eee60f1a56a4e1ffd760b','390d5f9da2620d2566de0b5948f8034fa19d747c962bbe3591ddc24dca549fc6'); -INSERT INTO blocks VALUES(310371,'7404cb31a39887a9841c2c27309d8c50b88748ed5fa8a3e5ba4cc3fc18310154',310371000,NULL,NULL,'473d21b8218a2b02f7fa0d5daf114fa988e4a3d97c33aebe97e51a8d22252492','34d2d8b012eea200df732029472cd9d7fc9bbf42c1ce67adc25b7bf7c08419b8','9a2bf2f3c0b11674695619db0331f2e1c3023b5069a936d895b1fc5ebdbd957e'); -INSERT INTO blocks VALUES(310372,'d3a790f6f5f85e2662a9d5fcd94a38bfe9f318ffd695f4770b6ea0770e1ae18d',310372000,NULL,NULL,'0c306eb25702d190ce32cac521b1fac9b8a7cbcf441fd74be8de2e002b4ce14c','0b80ff1489d766a23ee7929394d314c624620dfa6df0fab7af05474895614ff2','5c56e054077201ba73fe277789d0105cd53e6f1bc8a9b6d0148c5183186e80d8'); -INSERT INTO blocks VALUES(310373,'c192bec419937220c2705ce8a260ba0922940af116e10a2bc9db94f7497cf9c0',310373000,NULL,NULL,'48d14b17f9074ce1f75ab32581e8f6fe7d518ebd669af6508e5d986d97c92b3d','4d9e02a4f6be869f7235a53149d36146db6ccce35e163bdd4d3ce1d4ea618f3f','7861881e4e2095369a7bbfde371648a02e0d31b265b1234a66cb28e5acb67781'); -INSERT INTO blocks VALUES(310374,'f541273d293a084509916c10aec0de40092c7695888ec7510f23e0c7bb405f8e',310374000,NULL,NULL,'aee93917f6fe0046069aaff48d5d1875a9c4451acec6562a377428bfb1184cd4','aa1545e0a3eeae700fb9a5afe0365659e3ae1527ad555cfa69a368a62359b2e0','c149ffc5c5168825f4986e3289f92dd942ad446bfa1b8be4af928890405bb65e'); -INSERT INTO blocks VALUES(310375,'da666e1886212e20c154aba9d6b617e471106ddc9b8c8a28e9860baf82a17458',310375000,NULL,NULL,'2b0d74911bba5c9530b69c04fec512fe4c5df25458e5237db884586a221fa30b','ec33fbe1aa123acb40c65b8a448436def7e670bc11f57e7ea81a590256fa03bf','e8df498dc7bb480788a03dd7e1a7404c910ca0a24bbc151a9d142fc97e8ca790'); -INSERT INTO blocks VALUES(310376,'5dc483d7d1697eb823cba64bb8d6c0aded59d00ea37067de0caeebf3ea4ea7dc',310376000,NULL,NULL,'a6f84afe2845ba2fa4e5e7377b1d4474dbde6dfc9c4bed050e6d10cc80025e82','f60b11851450c388d0b34f0082ae562538eea1f7267d0c54739e24be001708e0','e4c8ea454d67c42109111faa87ed93ce77a05ba598b4c1816f93834969e4df56'); -INSERT INTO blocks VALUES(310377,'f8d1cac1fef3fa6e7ad1c44ff6ae2c6920985bad74e77a6868612ee81f16b0b3',310377000,NULL,NULL,'e006e13691719e4fce65e72c692d3affeae8ae465de2a3b285a1bed4eb518a70','6120536c3ce65774b059eaf66cce3b67b9bc0d8fbffb5522c7fc0b659908ab73','b2389b762e54347c830ec7f424fa8d526f37dd01c20dd03ac9f3808d8262f603'); -INSERT INTO blocks VALUES(310378,'fec994dd24e213aa78f166ca315c90cb74ee871295a252723dd269c13fc614ce',310378000,NULL,NULL,'607ffa4928577b82f275750353fcecc2e50098d227f18bb8ea95ac2bbb10eea6','5dd1bb601133d103e4da02e5565ce9f0ee904b9d40f11424b3838f00ad463233','d117ea88864fe3f19f367e1c3361e902dce3a79fe0c85e845d9fc51aea22c0bc'); -INSERT INTO blocks VALUES(310379,'d86cdb36616976eafb054477058de5670a02194f3ee27911df1822ff1c26f19c',310379000,NULL,NULL,'9f17e8d662dbbfc12a56dc36172b3154bc9b05a87885d1411826481e1ca4f6ea','55989c1b10eecdbb7b71e454db4e06f11e316e4a8d7d37b4b27006c9498a1b95','f61499992c4f360f360ecc9e4465d33a768a9f27b66831958286944feb20aecb'); -INSERT INTO blocks VALUES(310380,'292dba1b887326f0719fe00caf9863afc613fc1643e041ba7678a325cf2b6aae',310380000,NULL,NULL,'d617e30e1a32ed1cf269a190fd4c843755413492827546a0b3ed14278f817532','98c67bdbf6437cbb778f1b52bf478d346499483edebf307faa0692d51fca56ad','27ad849430ab9fec50a6cc2838684531f16b3a3418cf547b1767e21573ce98b3'); -INSERT INTO blocks VALUES(310381,'6726e0171d41e8b03e8c7a245ef69477b44506b651efe999e892e1e6d9d4cf38',310381000,NULL,NULL,'8af8d819f02927de4a74d3d37dcecf6e5124d53be37603764b1b1adad13b0d7a','da4c589d45bb47c441a5f7a8b7e6190e1721e4b5645347977d3f7d8312b070d7','bb0f96f7a5e9caa7c6d8599054b26c9adfba26a5cc17dea6544fc233cec1c3ed'); -INSERT INTO blocks VALUES(310382,'0be33004c34938cedd0901b03c95e55d91590aa2fec6c5f6e44aec5366a0e7d8',310382000,NULL,NULL,'809d5c20335bbefe8e4f3552e24b24d96f6ee4ab12f3bfc9e74898371cf69797','bef6a13095e99b40ac83677188467e6924fa7e878ed1005b5e724bbf244d91b5','44ee61ce4a2075b26dd50a706f51cbc34abd3218b7207970283e803677804545'); -INSERT INTO blocks VALUES(310383,'992ff9a3b2f4e303854514d4cad554ff333c1f3f84961aa5a6b570af44a74508',310383000,NULL,NULL,'d8ec301994a5333f8efe7cc547a833d26c6766deb0b39c4fc18d1bdb470ee903','aa962cfc3a65ccb4f548f1661a064116836040a4a968c6f58818badca84fbe63','d7173018f252a3cebf864760095645a8dd03b73f22f1dcc6c99ee9176aa8dfd5'); -INSERT INTO blocks VALUES(310384,'d518c696796401d77956d878cbdc247e207f03198eabc2749d61ebeadee87e5e',310384000,NULL,NULL,'fe47a03993cb9079a6e72810552d631fe838bcfaba3b34c73c9948af77266df2','488043a3bbadd8cd967201b139d5edd3c50adc437f6851c7b791ce719336302e','ff98e13c80a03a944947d83b2463ad37ca4eeb20928c3fa79d2e3a94b58102d3'); -INSERT INTO blocks VALUES(310385,'2aa6a491a03a1a16adbc5f5e795c97ec338345cfdf10ff711ffb7ac3a0e26e28',310385000,NULL,NULL,'6114e98e0004cf0f9472fce6bfa6bb99ae38e57214c8b134f30da1d62399f6ef','c76613f28897cbacd300ef2ae6aeccc34af2fdaf1f68554141d0628c98283c4e','8690b311905f4adcd7fe3a42b42abe39a773dbecd2577df812267dc0cc539bdc'); -INSERT INTO blocks VALUES(310386,'9d19a754b48a180fd5ebb0ae63e96fa9f4a67e475aeefa41f8f4f8420e677eda',310386000,NULL,NULL,'4c52d59ade1bd2068e3b75b8b3cd1d23c6a94b6437f7966d10f5a07bf8f630ff','eee5edc413a0775271370f073c2c36ff144123b5995a90842d3e65c1b5112418','4e82ea7881e328052b3a946e77e11f50ecfeafd344d7a799594308757d5dd73d'); -INSERT INTO blocks VALUES(310387,'b4cac00f59c626206e193575b3ba9bfddd83bbfc374ebeb2838acd25e34a6c2b',310387000,NULL,NULL,'327e9a842233568888998ec1456b6f78c093b47639707d44e6336b2bc18d955f','5cf78e08f145a08fd3e099429cbef8e5ab59cb69bfabf88821f361f059adbddd','8cb7eb4d2b8c9cdef93620f738f3df1295b745ab891c9585288fe7a7fd9f6454'); -INSERT INTO blocks VALUES(310388,'41a04637694ea47a57b76fb52d3e8cfe67ee28e3e8744218f652166abe833284',310388000,NULL,NULL,'6efaab188a5cae39ef547a804f61bcbc2be4881e0569f49d7622b407f6860401','e3abf47ed96b9b15c4c6702d1d21b2452af7869bdff81a7a26435d8dd23fd96c','3269ffb7660657f6876cffed982002c299525a493523add4fdd55feb208de6e5'); -INSERT INTO blocks VALUES(310389,'3ec95ae011161c6752f308d28bde892b2846e96a96de164e5f3394744d0aa607',310389000,NULL,NULL,'89c686d5d973691a7281268c867f837b86b140a05f16f12302a3cdeb3b6a0ee9','b22a6d17eed5fd29190b52010e2e5e95184f1560a20b157feacabccadb5ff8bf','2d47c0d05601b6be7e356a81e2cec3de864d3a8988bc6508fa6ac97e18df72c2'); -INSERT INTO blocks VALUES(310390,'f05a916c6be28909fa19d176e0232f704d8108f73083dded5365d05b306ddf1a',310390000,NULL,NULL,'2c4eceebb94d0c7a7702478d9547d1afbb42ab5ecb5ae6271a3f69942bd77e50','a9031515eb1113db7dd1f5441aba4527b4b8f6213147024e75235a6b97b98cba','69fa70c0ecafc358638bc0fb4ee975cfeb308a52c019de096acaaf879f7507ac'); -INSERT INTO blocks VALUES(310391,'fc26112b7fdd8aaf333645607dabc9781eac067d4468d63bb46628623e122952',310391000,NULL,NULL,'06397124ee2a1bcb9104899469394855d4ecccd1a08626d650bdf3169e227831','ad3d718d6cacf0e28185cb2093fd8ea6f3977817eff4f83f4bcfd01896ba94d2','1f93797718f750a9fcb3dca42da0d42500bddbe566c88f3560a48a858216f519'); -INSERT INTO blocks VALUES(310392,'f7022ecab2f2179c398580460f50c643b10d4b6869e5519db6ef5d5a27d84a1d',310392000,NULL,NULL,'44974b5fec0be3a2958d39f2d6824a2e82733f873a404ec9887178c620843149','50552937bb461b709b5be12d81b3f9e4c9316b6da317355a76fc70774c07f997','60527dcc5ae2b28806845c24b2c8cd242a962121b8bbaa0fad392838665d39db'); -INSERT INTO blocks VALUES(310393,'e6aeef89ab079721e7eae02f7b197acfb37c2de587d35a5cf4dd1e3c54d68308',310393000,NULL,NULL,'1863677c0e552344607b1af3eb8ef8f4fc6b2a73d63eebb3e9928302c887970f','0f6302a52cca799465d6712da594cb2865a34edaa31dddc939843411692b8d95','7426a8c4cb60b3661fee7c8190299a88ae14b6912e2726a8f4584fe79417fd83'); -INSERT INTO blocks VALUES(310394,'2a944743c3beb3bf1b530bd6a210682a0a0e9b0e6a9ff938d9be856236779a6f',310394000,NULL,NULL,'3838ba6e84376ed8dffb3fee9b5928d903952c0d8a8ad41ab63a9651a1c8c770','f2ab83f2a4bbabcd72c27543b9e06e23f67e4c657b6fae78e2fbdfd3a3a88008','e93009dd0ec0f2ce91c4487668253861888880313f73226b3fc7317403f036de'); -INSERT INTO blocks VALUES(310395,'19eb891ce70b82db2f2745e1d60e0cf445363aaff4e96335f9014d92312d20e4',310395000,NULL,NULL,'872367d61f81cddeb555da5f9c4f46a8ac57c24629ab073094e407a4555a8555','4d56f40558dd8ff8104ec1632dfc9c475ab3cf2f366c5eaa907424dbc42758cb','42c79f6af57c8030e3c2e6cf134be9053764ebabb4af16a158b58ed8f6d6fd9c'); -INSERT INTO blocks VALUES(310396,'aea407729ac8d8e9221efd9d70106d14df6aaf9f2f87dc6f490835a9caadf08e',310396000,NULL,NULL,'b9a9eaaf1cf6cfa4ae5b0f314812a9a2346209da0b7ce57e16010d2a01c0092a','69df6efd0b19ad5910bdd6a3b7c3c1f92e61fe564ac19f15ecc9396362d1e66a','0f13f519d420993c814adc94cad26f62d743a92ac998274c199d8ebfa6bbc984'); -INSERT INTO blocks VALUES(310397,'7c429e56a19e884a8a77a759b52334a4b79404081b976270114043ba94d7985c',310397000,NULL,NULL,'b61f36bcc934a18fdccf7806d41482684ca129801d0b9ce7815dcd488fc49a66','e3b052e4b1512c1fc03460d8b165031b469b8bbef48f022311428de8d277db7b','1f4e0b0c894bb855b2b81ca2cb0276b1b2431c08e97b56ea781c39e5ef10e0de'); -INSERT INTO blocks VALUES(310398,'55c046db86dee1d63c0e46e6df79b5b77dfd4ab2ff5da79e6360ce77dd98335e',310398000,NULL,NULL,'9446476e123e5dd354682c60591cab8b712c30df9080dde756246eef45e21df5','091bf9f1f1cdca320c408b483a22b330ed03cd363f4604d90d820f4c9934ff8b','ecfd874ce8216f17a56aee63b8fb96457c2e6d555f395969c9de621a3caf68f5'); -INSERT INTO blocks VALUES(310399,'765abc449b3127d71ab971e0c2ae69c570284e0c5dacf4c3c07f2e4eca180e7a',310399000,NULL,NULL,'50d288bca09d446f56544fb1ec50d613bdf156488468ac92d433425a3cab0804','6fdf51dcb0482117a0c7841f35205e90326931daeb35d4a50759dafe6109e761','6befa8071f10075236ac9cbb69179a6f21f0fb6c1d9afbda8c31316a3d923726'); -INSERT INTO blocks VALUES(310400,'925bc6f6f45fe2fb2d494e852aaf667d8623e5dae2e92fdffa80f15661f04218',310400000,NULL,NULL,'349a24fd446727bb1793ccf88fc569d20eb680c10e506fc25b281ce6ec3fd7bd','e00ad4a31e342653bca8de193018b6388dc878d949f22c4f7f385369d16e3b77','57ce9e1e074e87d8ed3d9f808169c8736b7be0434b5d2cc1c1dc16be51bca58e'); -INSERT INTO blocks VALUES(310401,'f7b9af2e2cd16c478eed4a34021f2009944dbc9b757bf8fe4fc03f9d900e0351',310401000,NULL,NULL,'52c06b68cad19608420b73476a73b411d0327382b92bd454cadf1b8616eb17a5','7be2865d031ba77e2f589e86be49f6d6d3ef07f70975df72d3633527e3d7960c','8526961e086b6bf391a4243b92dc22f4f909013528b75c13e6e12eaa0d57947a'); -INSERT INTO blocks VALUES(310402,'1404f1826cd93e1861dd92ca3f3b05c65e8578b88626577a3cbad1e771b96e44',310402000,NULL,NULL,'8bf64213a454c62dd4b0dcd7dfa298da0244a6aa7ae6fff98be6f49d50d259ab','498685cab34b81bceda2d35af648f5f10eb806fdd712e9e75b411d17ef7168d1','6143a3523ed5a3242ad94c146fc01fe35d63bdc7daac9b0797a3cef28cbaf6b2'); -INSERT INTO blocks VALUES(310403,'f7426dbd4a0808148b5fc3eb66df4a8ad606c97888c175850f65099286c7581c',310403000,NULL,NULL,'fb2a365372522d1442792cb38e1a4167eda2612ef442c776749097a3d541a827','b9e9b0c64411d0330e0538fd8174c441ae985e44b237991fe001e1405cbb4355','046946a9e380676f95c2e5337a24b62c1e86f0af2d157ef17069adde1cdab4a5'); -INSERT INTO blocks VALUES(310404,'401c327424b39a6d908f1a2f2202208a7893a5bedc2b9aff8e7eda0b64040040',310404000,NULL,NULL,'47f96d798df9cad17667be908ebb063ab9f79d947784a78189d247e626864a5f','62afe454f86713c40b93a806636717befa27c0ff6df5e713ed6fdfb5fbb87e89','407c1d1aeb8ddcbdfc0282b284226444e9ed408d93ac2ff9eb4ee808eb1d64cf'); -INSERT INTO blocks VALUES(310405,'4f6928561724e0f6aab2fc40719f591823ca7e57e42d1589a943f8c55400430a',310405000,NULL,NULL,'185780205a9ab241bb0656799fd0d5942c1e3e5854abd1d06573da550b04b096','201c777861cc9d65d17bfadb3fa0b5450766d8eea6d7f3edecc7b3073d180fe3','30268e8682f822afd0fd9132a843b53de1191ef3240f9f2b6bee2f4edca00bd7'); -INSERT INTO blocks VALUES(310406,'6784365c24e32a1dd59043f89283c7f4ac8ceb3ef75310414ded9903a9967b97',310406000,NULL,NULL,'367b9de2313c5f7fce0c2dc2b4a8e2bc059f6881bc924f7315e8e2ca61728a59','8a619709e56386a511226b71417ee7c089b1f0c12a9f48ea587fc17cc50dc18c','a586cdd7f523e5d46fc89ac34bfb1e5b61893ccd19349bdb2cfffb3f724de8e9'); -INSERT INTO blocks VALUES(310407,'84396eb206e0ec366059d9e60aefdb381bca5082d58bffb3d2a7e7b6227fc01e',310407000,NULL,NULL,'2bdbd79575aa2ff52ba0cce3fc1a1aac6120d598a8ab0ff3925e1395e6cad2d1','2881a8cce0539785cf21c8ff5b3403a908de84b490022010fe74ecad0329d1e2','cc87ae0c7f741e7e6cb740a683debd47608bcd3ce52775fdadb218a6a5e97894'); -INSERT INTO blocks VALUES(310408,'4827c178805e2abae5cb6625605623b3260622b364b7b6be455060deaaec2cda',310408000,NULL,NULL,'fcd0edef8c4ae9517a6e793a2742c598de38c122829b7a7aa265310417ac92c3','c3b02641b5d7096e86895f50bf2081972b2982e8e9974d85f3e24266dfe86413','e58d1f3a536cfe53ed57858ae83feec759d6dc41400167c883afd09dec66d1fb'); -INSERT INTO blocks VALUES(310409,'01a719656ad1140e975b2bdc8eebb1e7395905fd814b30690ab0a7abd4f76bba',310409000,NULL,NULL,'5b663c40873af21ebc721f2689e2c57a2c787fff579c58f033bba75910a64837','ef0a7a61d4e11b40d2da832d05bf813b4b83768f168be5dde74e31a645e76a3e','7cda943c65a449f12680395d0f01d79556907d37afe313a2a4c4087b7e454122'); -INSERT INTO blocks VALUES(310410,'247a0070ac1ab6a3bd3ec5e73f802d9fbdcfa7ee562eaeeb21193f487ec4d348',310410000,NULL,NULL,'93c5a33931b2a33933bc286d6987b34730c0677460e4875d5c032ae86c2e01f0','17b45b42abe3a13b93de019f83dfcf2387c6e4308a712fb6ee142c2c13bd0a5e','2606853bb07c2be6c2fd422688fc0bade220bb8b1fe949a800641c6189b4d5b2'); -INSERT INTO blocks VALUES(310411,'26cae3289bb171773e9e876faa3e45f0ccc992380bb4d00c3a01d087ef537ae2',310411000,NULL,NULL,'8d98498f89619a2e334e9ac69bf8ff37251af6431d9bb6d1ea8bbc404c5e560d','823764f461b404119c9eb74ccbd198f9dde8037e64efe2ccea54ecf59f4734f4','30d6c058a9ae85520058458703ece1aa3bd61beb38c90d3cffc0b085eda73537'); -INSERT INTO blocks VALUES(310412,'ab84ad5a3df5cfdce9f90b8d251eb6f68b55e6976a980de6de5bcda148b0cd20',310412000,NULL,NULL,'a16a650c4b63ed783e7229980be1177da867c188a5039ed5c58b9717f6ccf634','4de68d2f1f9ad13c5df2cdefebc231ad9f076bbff81d0f768b11f39391c5eeb4','1f54d00dde511fd50caae4edfcfdf111731fb54c229729cab1b897f56bbc6642'); -INSERT INTO blocks VALUES(310413,'21c33c9fd432343b549f0036c3620754565c3ad99f19f91f4e42344f10ec79bf',310413000,NULL,NULL,'768577c1a7c2cf2cc19cd8dbe823f1bdb8a222daee4c7ac7b5ead6633040c283','37ff14c5685e45eba94d71e2397335944527befdec378aa655aa9be55c01dd6f','9e14ec39b7067c3dcbdc93fee615336f8aac09b9c2487f4a9c4a14acdbec3d1f'); -INSERT INTO blocks VALUES(310414,'8cff03c07fd2a899c3bcf6ac93e05840e00de3133da14a413e9807304db854b6',310414000,NULL,NULL,'906c491f164877c31002da41233c237d0d4a945a0072406a7b7d13df74be7eec','4a6befa5c96579cdf70e3fbcf681a64fa141e237d8146984699315a7e4a9bd05','3102efc47982fae4e5ea738fea10880732e468cec4c0d34607d6c44a65071da9'); -INSERT INTO blocks VALUES(310415,'dd0facbd37cca09870f6054d95710d5d97528ed3d1faf2557914b61a1fc9c1cc',310415000,NULL,NULL,'d27f99b4a67dfc910d3b932f97b7299779f245e95f871140d3c90f13cc6e506e','a1d9c2c74127699344c2977042773422409d354fc393f199fca9662868afa844','2a2f05f8157042b1d31678574bd5f1d8fc2685364cbccf1442163131c75127ea'); -INSERT INTO blocks VALUES(310416,'7302158055327843ded75203f7cf9320c8719b9d1a044207d2a97f09791a5b6b',310416000,NULL,NULL,'90fcd04c508a9821e0ba0ed36cd7cfadd1d3c95116e3f52ad69f98d3d14de571','b87dd90386307110fbd1b2ffee32fde1b51d5d6a798335f516cf1b03f7821b6f','ff299c30f5cd5422433733a99272e07df0e9747337451d19e30957a7d3873c9c'); -INSERT INTO blocks VALUES(310417,'2fef6d72654cbd4ea08e0989c18c32f2fe22de70a4c2d863c1778086b0449002',310417000,NULL,NULL,'19cbb26c6d24df5b110a5aae9b53a911a61b2086dde926273a1b0f66c1049e6b','53115a4c67ea4350e078d5079edca376d41a13ef7b3bb79ef2c2776e955cb410','48f64d3610f75e115ae09353fd773726e42538c8812e06328c9e64a4e6e4c8f6'); -INSERT INTO blocks VALUES(310418,'fc27f87607fd57cb02ce54d83cec184cf7d196738f52a8eb9c91b1ea7d071509',310418000,NULL,NULL,'2dc971d2db4e92e2d5dcef124bf9cdad33c41a71d6ae3db80297cb2257911f0d','7a38fb4e2a8ff06135c3112016e39f4b48a6a22faa9dfef2ae986e2d15c9569f','b043acaef70a324b0e4d8b5c18c8f44a19b3de90a75bcd3fb85d9279cbb05ba2'); -INSERT INTO blocks VALUES(310419,'9df404f5ce813fe6eb0541203c108bc7a0a2bac341a69d607c6641c140e21c8e',310419000,NULL,NULL,'7ad2bf141622a0db4b27b1f4dab4857d1595e3f746a4113992850a680ebf1f37','c16d243da8ce0411c52ccc06bb14dad3cf97a92bca609fde6b7e52b1d8b56d3f','1eed60267cbd4cbe165cd950d5e45d48823ae7b1ecf7ec40cc5738d98e8da1f2'); -INSERT INTO blocks VALUES(310420,'138b3f1773159c0dd265a2d32dd2141202d174c2e52a4aeac3588224a3558372',310420000,NULL,NULL,'3602b26268d1bd3fc5f08f170e9767ff07c91f6976a1c342dc6b24f7ee98c509','f909cfaf7326866eb181ac03e274ff80225ec86650997df9c4311de30af791f0','1c59c6b43735835e53d540fe662e0895adfd428250da877b92f50cc68f5a9539'); -INSERT INTO blocks VALUES(310421,'71fe2b0e02c5cad8588636016483ddd97a4ef0737283b5fd4ab6ea5dc5c56b9a',310421000,NULL,NULL,'1c1facfa3852b33c173a08d06450335a2b230541c60973a154e8dd864f3c3c8b','48d24440f8e6c9e685d9cca8fd960f2b36afdc4b2c27932f91fcbe984a684aef','a35594d1962e44acd9ab24034e670b39e804217afa6dd21e0069f843ab34399e'); -INSERT INTO blocks VALUES(310422,'cd40260541b9ed20abaac53b8f601d01cd972c34f28d91718854f1f3a4026158',310422000,NULL,NULL,'e788123aefd1129554fa2c166dbd06ce68f913730183ca73cf248c1f5284eba4','492621c2779d6ce8735af4edfcbfa6fd2f16a2392af9ad7432f548b729870b6a','5ec857431d1c6fea510eb07fecaa4f11aea6dff84afd322cef03636e253563a8'); -INSERT INTO blocks VALUES(310423,'6ca0d6d246108b2df3de62a4dd454ff940e1945f194ba72566089f98ad72f4db',310423000,NULL,NULL,'ad445e5351af8739b2f74cbba8b44201c20ab55ad1db064402614fb97f35c375','e756d4c1d37a6ea4b35a3586653771087a4c43b9cf03daf8732a96aed3f8b512','ddfd8b1263958bc7f88460fddaa52356ddd6e3b6b21cdac6fecb967306fb8eb2'); -INSERT INTO blocks VALUES(310424,'ed42fe6896e4ba9ded6ea352a1e7e02f3d786bfc9379780daba4e7aa049668ad',310424000,NULL,NULL,'e89872ed802fe4421844882958fe6384cf21a85a6dcf10db761e2bb4a77ed24e','454a55cc3bfffbf8444b47eee810959b4f509b36398ae39e999f32b0203e5b0e','05fe6284f178561567ebb95209b46ade9aaa26377d42f6091ce61b6d3d2cc863'); -INSERT INTO blocks VALUES(310425,'73f4be91e41a2ccd1c4d836a5cea28aea906ac9ede7773d9cd51dff5936f1ba7',310425000,NULL,NULL,'29e595e9ac7717013cfc8d12255496192234abbddd8a66762a5eaff0c49f3750','5c6dae63d57dd0c60ff61f569c7e7e23c7dcfc447aff11865e731a7cd35d9a14','5b89713f019bfd8bfaa90481728a394bcc25a95458af077394615f58a8211cc0'); -INSERT INTO blocks VALUES(310426,'9d28065325bb70b8e272f6bee3bc2cd5ea4ea4d36e293075096e204cb53dc415',310426000,NULL,NULL,'9b9509ce7b7bf380f4d030604810a755c71fabe27152be990997a6a9db37ff15','7c7ff44c6e932b79f3ba715c6f8cf0e6ee17650a2ddcbaffabfb389528fd736f','f63e41921698e38fd6d82e338c59e443b35fa1123b276b4f3111644443c8f9b4'); -INSERT INTO blocks VALUES(310427,'d08e8bc7035bbf08ec91bf42839eccb3d7e489d68f85a0be426f95709a976a2a',310427000,NULL,NULL,'f1b834e2a380f1b9a78c592acbe78ec809220c620e15f296ab8d7ecea6cd392e','b3d932601e711b6313f7a30ecbde263d33c2afaf08c744003ddebc6dd8581fd7','3820ef4bf1393dc7c09680a1e2f22945f757ce5f476a664d6e42d83f0acb9dbd'); -INSERT INTO blocks VALUES(310428,'2eef4e1784ee12bcb13628f2c0dc7c008db6aaf55930d5de09513425f55658a2',310428000,NULL,NULL,'9e963a17fbc4a5c20d48094f1459959033520f92d7a8bc044b71bbffb8dd173d','24e96d6985d2467ac0abb67634fa1dd40bf347eb76a2e9f1f63de03deda50a9a','b64fbd499d6609c496e265032b7a460be6fb2db45b3025b962f6414c313a6dea'); -INSERT INTO blocks VALUES(310429,'086bfbba799c6d66a39d90a810b8dd6753f2904a48e2c01590845adda214cf8d',310429000,NULL,NULL,'ac8cfd965b9c53f32731a3e0fcdb6df5746d646b02c88b5201a674125e37eed5','de4ee644e224ee40a6e48f55d0e1c5b2abdaa0a707c3c18ff801c0edf5f505bb','e513fd17b91936ad55ae7d79c67b14c1f6e91c43dac50b1a9bae26fb46efc23d'); -INSERT INTO blocks VALUES(310430,'870cf1829f84d1f29c231190205fe2e961738240fc16477c7de24da037763048',310430000,NULL,NULL,'33654e32dfd41ff3a5744b57fd2483a08a2b4729c18ca54c3ac5d95a1bf0ef21','c39eedc9c189f70ed959451d7bdf5e837bdffc4dec9eb4ff238729d38cce940d','9f48ce497db1c0c73ed1fb48d36c4bbf5978a5084d1fd1cdc0b269e5ab3f5a16'); -INSERT INTO blocks VALUES(310431,'20b72324e40ffc43a49569b560d6245c679e638b9d20404fc1e3386992d63648',310431000,NULL,NULL,'ba8837c811ae87981cc37cb49438d958fa58dfc5a95824040f2fd088465406d1','2ab6cbb8716a59d966ea41cb81fe11e76512b6941e534fc7534d5ffc12757d0f','1b339e805b807cb76f53a6b8d2b06cfd7ff115430af60f900435d4a048fcd98d'); -INSERT INTO blocks VALUES(310432,'c81811aca423aa2ccb3fd717b54a24a990611365c360667687dc723e9208ad93',310432000,NULL,NULL,'7864019cb0cbbcd895154421183d6acb932b1d64441103b913d52469f656655f','1d36faf45d32e36944e5ce57b060cde1eece44d917c491efdc98517d5f257e3d','f81f8673327e7a0ff705743aa4301e3d1da511cc2399d89e2ad2ef8f77ace1b0'); -INSERT INTO blocks VALUES(310433,'997e4a145d638ad3dcdb2865f8b8fd95242cbc4a4359407791f421f129b1d725',310433000,NULL,NULL,'a6da92ef0df7d092de09f2f8d2c99ff65ad74e2a0bd2ea25f8335614372f5279','6699acca5161e69474064bc65af80dcc7969241e42106d43352fd6e4b651adda','1ab58de64f514daedd11696020180957a11816344a508e3169b36838faa26aa0'); -INSERT INTO blocks VALUES(310434,'61df9508e53a7fe477f063e0ff7e86fbb0aef80ff2ddedc556236a38f49ac4d8',310434000,NULL,NULL,'e288db28ac6a42822f85fd042f65b57378bc6cc2f8616edfa88143d7b1c9ddcc','49231a538de6497e93f8c6b21f48a6c5694db75a1baaaae7f31670743dcd6a37','90217398765aa350bd36fa769f82d00f08447823e69514b483ef243b0930b280'); -INSERT INTO blocks VALUES(310435,'f24cf5e1296952a47556ac80a455a2c45da5c0dc2b388b51d235a3f741793d5f',310435000,NULL,NULL,'e87af314e8d7a5f2315ccc559d7c2255c008ba63aff017696201db69344d423f','4e55adb90c1a5ab2989a5969f701b5458218ec3bbf957e3bc73acf2d7cab8171','6927c224e07937d256135d621c6e4519904fcf64852dda45b8a83c4743214b80'); -INSERT INTO blocks VALUES(310436,'a5e341ba92bdf9b3938691cd3aab87731eba5428bb61a804cecf9178c8da0c19',310436000,NULL,NULL,'82327b93bd3ffcdf797bc2f6470b9c8c5101e54b924ec5f141a31356aa8865c7','6dea3d8b96087a7d8486244de73a00933d2907ec07e0a4196b0cf25a8d4783e7','e519aa93a3e78050d29e58e3fec3bea0a201f8fc3ca2b7a6f61a6c33a1e9c3df'); -INSERT INTO blocks VALUES(310437,'9e18d0ffff2cb464c664cefc76e32d35752c9e639045542a73746f5ec2f3b002',310437000,NULL,NULL,'70d86f9ef8df495474de06b94e1857693c73d9ca3528356b82553a52fdce0dda','8dff997ceb062b6d40f2344bf50f613b91f532907889fdc871ebb9280276bad7','c690e3e9850506b60f6fe70842babe9dac8b8cda7bc3b8ac29e594043787ad76'); -INSERT INTO blocks VALUES(310438,'36be4b3470275ff5e23ed4be8f380d6e034eb827ebe9143218d6e4689ea5a9fc',310438000,NULL,NULL,'44b90478e32373205462f0fb212da636b31db6dfb99a2b56923beb97a3a64722','d20e153bee78483e1c806a1f04a07515d2d63a5ffb0c3f20e20a3b804aa4c2d4','2fb16271511e413943fe0ffb58ccc7e6b9c611fd4bbd9fc873a7b5da71db6923'); -INSERT INTO blocks VALUES(310439,'4f2449fce22be0edb4d2aefac6f35ce5a47b871623d07c2a8c166363112b2877',310439000,NULL,NULL,'66b791b9deb7d2fc8b075f41d712e300ffa9c46ca9d6f4e7cec6429ca6a65163','adee3f57d0b0e321cf086dd968fd1f34ccba9d587c6129ceb4d275730625e128','e135f6cc544c5b3c4cbb87ee5f06a9b0a274e947253ecaf0d3c9bd0becc27ee5'); -INSERT INTO blocks VALUES(310440,'89d6bd4cdac1cae08c704490406c41fbc5e1efa6c2d7f161e9175149175ef12a',310440000,NULL,NULL,'5baa10e1659182ba4511f87f08deda38d5de3501c63efd376604cc199140d27c','146729916823772773712688e19487a3bc762330b41cccf269276f7c29051cee','1843e5f8be3d4383179fac87df7a0ed90041b9d996d3fa5325cbb9dd206dfc92'); -INSERT INTO blocks VALUES(310441,'2df1dc53d6481a1ce3a6fee51ad4adcce95f702606fee7c43feda4965cf9ee15',310441000,NULL,NULL,'2d490229fead1b15a8350da7bcc83c483dae06e4a2f574c6e8fde248acd449d6','893bbc852be6773790420d61e81293c2c8da6f8c866aa40a3352f92febdb1b46','be76b185f74f5f36836df80df4912ea70d5a4c3b8489f026766dad709471e05a'); -INSERT INTO blocks VALUES(310442,'50844c48722edb7681c5d0095c524113415106691e71db34acc44dbc6462bfec',310442000,NULL,NULL,'a3728bacfbdd289b7af24248b9bdacd5643bd5412bb993f5380278631eabb9e9','4ce5b5e387775c726eb270051ba3d9aa04de5a9192bae0e0b2d58c85bbc31ffd','413859f783f7e9727a844c5205b944bee7b4e420f7417d7e9cb05eeed0585700'); -INSERT INTO blocks VALUES(310443,'edc940455632270b7deda409a3489b19b147be89c4d8f434c284e326b749c79a',310443000,NULL,NULL,'d829da764f6397b22a6b97ef396b363ef2cf071990df2dc9c0d03806db6a46b5','2469f62b60a06221d180955ec8de95fd024c6841edead8814b0791d86a170f33','746ff4d1cc286d7f707c576cc40fd556fbb38ad3948b7c61dff2fd13758da8fd'); -INSERT INTO blocks VALUES(310444,'68c9efab28e78e0ef8d316239612f918408ce66be09e8c03428049a6ee3d32e4',310444000,NULL,NULL,'ef53249bf0f13e1f2073b815c8d8da3ab744b6d277b29ddbc0bd68bd006af34b','6a9893c9853db945cd2a54bfa2220a26c5d47a0a5b7b7625626d07c4fbf07305','99585f09e9bcd7b5d969dcbeb7f3b58258f2e2fcf1b470d87690de2346b31c83'); -INSERT INTO blocks VALUES(310445,'22a2e3896f1c56aefb2d27032a234ea38d93edf2b6331e72e7b4e3952f0234ef',310445000,NULL,NULL,'7e731cda90932b2b4844abdbc3ff60683173104e6c72ed81c65d9a17fd4872dc','3791d19b786372e99e843a64cea73c347693c9cc43d189b4dcdf8696ef8a7a74','87a69ff53bd04bb834eba8807933a31933616a50e1d18e5605e93b06b9bfda79'); -INSERT INTO blocks VALUES(310446,'e8b0856eff3efce5f5114d6378a4e5c9e69e972825bc55cc00c26954cd1c8837',310446000,NULL,NULL,'db55bac8025e95a567ba984f36dcb09357aa3e9b8706bb594e669b628d4e7204','9794bfbe4e87fd7c5ca20643a63c5ddf8ab02589a6b02c363712ded35aa63c19','6e0454ee0801dc86373629f4fc087c12638ba62490fec3042a678b32e0e6b57b'); -INSERT INTO blocks VALUES(310447,'3f4bc894c0bc04ee24ed1e34849af9f719f55df50c8bc36dc059ec5fa0e1c8a8',310447000,NULL,NULL,'5cc4fa447cc291ffcce7be3c4f8fc70041bf8af5c2dd591136d4a449095d2570','a92b78fe89c4dcc3fb6a3f237613b9bf107cdac0806f803be02ae7ce09cefcaf','fa17d0421b12fec316bac14e662d39ccae9d7e92e8794a6d89e95994f56d117f'); -INSERT INTO blocks VALUES(310448,'6a6c7c07ba5b579abd81a7e888bd36fc0e02a2bcfb69dbfa061b1b64bfa1bd10',310448000,NULL,NULL,'ce49854f4493c163bc891888f920fbc6dd8855c30870beb757df69b33de52633','55029c9c957499ecded788d5be49ca498ca932891aab365f992a36317dc658b8','a336df80b73368b66166759f44c0fcc6020fe95a0f8bcf4dd811bdc42287e178'); -INSERT INTO blocks VALUES(310449,'9e256a436ff8dae9ff77ed4cac4c3bfbbf026681548265a1b62c771d9d8e0779',310449000,NULL,NULL,'84557595cf2067a95924119b8ed5fea114acd9ca1b0df4dbe4ae5181a739b5d1','9c89b6a9d31edaf6443e20ad8778575c75322b3eace427f62c5943d892e3c1ca','b5edfb94c5caf9faa037a209487ce42479a97061bc9589d596fa2a5cb95b9eb6'); -INSERT INTO blocks VALUES(310450,'2d9b2ccc3ad3a32910295d7f7f0d0e671b074494adc373fc49aa874d575e36a3',310450000,NULL,NULL,'0e3b252b73fb652f904780da9fc59d1081d712337a9b15cf1a56ea72fbe96c73','f6066b795d0e3dcbed6141169c3f7627c8773e2b444fb9bb6564c56139f9def1','2c54faf8490940f9286c143e065e368cf484bfe99a1bdcd7b4cd481ff8bfed2a'); -INSERT INTO blocks VALUES(310451,'55731a82b9b28b1aa82445a9e351c9df3a58420f1c2f6b1c9db1874483277296',310451000,NULL,NULL,'790eccd04e24e5f10f843d63bbdc1538cf1aabb0e8e6c862104be0ef845f603f','2775b868e04a44a5f4d7b85df39a36bdb6f512442882d340caa280b50742d1f4','6255a353d31d30828436f3dfd34094b154d9be24e09f07a4fd533ea8129f21d6'); -INSERT INTO blocks VALUES(310452,'016abbaa1163348d8b6bc497cc487880d469f9300374a72ecb793a03d64572aa',310452000,NULL,NULL,'30962129b060b63050fe8f249592587d74cdabc4ebb5680230a280da880c8586','d2ea7ae3238ca82862ed3a8e839e041955157a5629e26ed145d8c7608c03e424','3a733f72594133ffb1eb46cd8deae7efbd0eaba2bc96bfdf64a75aea0e3157cc'); -INSERT INTO blocks VALUES(310453,'610be2f49623d3fe8c86eacf3620347ed1dc53194bf01e77393b83541ba5d776',310453000,NULL,NULL,'56f4aa1086d8985a00cc295cf9618d976e69ba426b0c3d103bea6b47b58e4355','ca605933771ad886761ea826a9265a8783877967e24ebe25a79f8659d4604fc5','52d53ef0f37156db2e5e3fc11caab09029c5bf6037a8cec23b78dfcf18fc142a'); -INSERT INTO blocks VALUES(310454,'baea6ad71f16d05b37bb30ca881c73bc48fd931f4bf3ac908a28d7681e976ee9',310454000,NULL,NULL,'38d14a206003b812cbaf5f200235dbe12aa6a674e5f3379cb186a781cb5a5654','435deec1f48e8091019224d553091beac9cde9e6daaa653a21741e5c14e3a572','df989b51acfeeb983b4e6293da9c1ca0d5f341e688960fea82fc58f35a923fb1'); -INSERT INTO blocks VALUES(310455,'31a375541362b0037245816d50628b0428a28255ff6eddd3dd92ef0262a0a744',310455000,NULL,NULL,'b2ff303a67c05bc12fcdfdb774ea4ddc690434c3371428b3416d38105f265f28','df5571e3a323a80468d2507e2f9a7e061d48e1ad10b41bcb5ac4fb89b2ddb7b5','a6d21c608406a410ab5167caf3bb46b5c327c20a2598872b86873dc30e365007'); -INSERT INTO blocks VALUES(310456,'5fee45c5019669a46a049142c0c4b6cf382e06127211e822f5f6f7320b6b50fa',310456000,NULL,NULL,'6cc16b442fd7758ed7bae9f50367fa60debdb5d81bffc5abccda044573aeaf15','42c717aa271ed07c28e8d1fb5502689e53c77348527cb160a7c8bf36bf1e4541','f52382eb7004c7f566dcb2a80860ac1eebc80103c28b071278ebf1a6b8c75a9f'); -INSERT INTO blocks VALUES(310457,'9ce5a2673739be824552754ce60fd5098cf954729bb18be1078395f0c437cce9',310457000,NULL,NULL,'8fa0401d245b1b1e8b40760a54f331564d8597e242462ec412878e36a9b06800','78e976a93fcaebe304a99823d7f56ccd35b305c426eeee9f89ef6c37f36bc95b','0f2e9232d22cc417ee55a04474395e7d7d040132d5c915eb1d053e182b138522'); -INSERT INTO blocks VALUES(310458,'deca40ba154ebc8c6268668b69a447e35ad292db4504d196e8a91abdc5312aac',310458000,NULL,NULL,'520f92700e31b8a35260a280ae11bf8668b0e09d34795a9d88678f2977e19f7c','9efde60c1de6829b08c6dd1ed22b3772cdaaad133695b6288bbd88e603914179','c26d769bf9ab8b91df23f6082fc5cf5ceee53d69af91a7d84e848162cf314c51'); -INSERT INTO blocks VALUES(310459,'839c15fa5eea10c91851e160a73a6a8ee273a31ab5385fe5bd71920cbc08b565',310459000,NULL,NULL,'d7f728b78228a914b8767a6caeaf2267e9dbd50490a27f6c23bd96060eab8ee0','f316b8df521e3d99a0155676da10f22ee0693638987938203b583ee4e09f7a65','a5a3bd88b44675f47aa1705a4f311c18f9d2b2165b5215f51ea1173fdd32d351'); -INSERT INTO blocks VALUES(310460,'9b5f351a5c85aaaa737b6a55f20ebf04cafdf36013cdee73c4aaac376ad4562b',310460000,NULL,NULL,'33c2b4c6d22888448a2458ff2ce6a1cfae5e858acae2a57e4cc0232980f8fa4a','54c04c407e35921e4187449898fb0f16f06d994cbfe5bda52de9a14b617c6fbc','b4b79889fd3160b1431fb7f5a349b307417978f7f8675c80e4dd1e628d44da07'); -INSERT INTO blocks VALUES(310461,'8131c823f11c22066362517f8c80d93bfc4c3b0a12890bdd51a0e5a043d26b7b',310461000,NULL,NULL,'22426912d3317922912326da552af284677c9b76b6416b6c056668f27ae4f19f','113fd87450c6cbf2d09d1be24f4977e75d7bccb2a97ddac22bfc96f1519a3004','807e0c00ef1f82882222eae619ea3ba7e75974655e54248bb1a1fbf03f543267'); -INSERT INTO blocks VALUES(310462,'16f8fad8c21560b9d7f88c3b22293192c24f5264c964d2de303a0c742c27d146',310462000,NULL,NULL,'74225b62e696aaeafbd4d6db40b41081c7493d9cc44984729d8619ff9450ce32','da1470a347e29dac9b817636441a316f307879a4691c566ea65573fe5afd9102','cac1f65b6825c2c404e51ad2e9fadc05959167fe307a52825c0e3410a2aaf87e'); -INSERT INTO blocks VALUES(310463,'bf919937d8d1b5d5f421b9f59e5893ecb9e77861c6ab6ffe6d2722f52483bd94',310463000,NULL,NULL,'b970979bfe0d44ae2f21f7d98bdcc4ae37287b93cad9fa51f32a62337ceba0c1','eec2943fecca426033e41929c8eba01b3578e9678fe9580e60a36c1bc3a68f84','ecd2bc297c66b0a442ef0de29ab2049f613fe099e639c42cd251440f4aeba45f'); -INSERT INTO blocks VALUES(310464,'91f08dec994751a6057753945249e9c11964b98b654704e585d9239462bc6f60',310464000,NULL,NULL,'00007a158b003fcca20c9fcaa8d73a556f0206bc9a7ab3e5c566ea1bda8648cb','a2d52f28e9736310150dfe4ffa1de76982d6ae53b13219ab6dd63b7d61aee8e2','b316cc77dc508c8187e44d9904a96d039d7d57786ab6ba469f15948864c65b61'); -INSERT INTO blocks VALUES(310465,'5686aaff2718a688b9a69411e237912869699f756c3eb7bf7c3cf2b9e3756b3d',310465000,NULL,NULL,'09c407870b056db90148a9e4cb8ada003898ff28c584bec6a5be90514758a851','6f697514367c7db6c79bb38c6ebc9c75391a105ef2a549ca26bfa791d6d75ea0','454947ff727b0ad198a206cf883906a98cde006e8273c8ef29b965d1a428e950'); -INSERT INTO blocks VALUES(310466,'8a68637850c014116da671bb544fb5deddda7682223055a58bdcf7b2e79501fc',310466000,NULL,NULL,'23bcfdbb44d8fc2ae6a86ea073ab080158014f04516b256a70d846399e7383cd','2ab1ee84837b0168059b0f15ec0c53d6936daa4af908316677d91e1ac92f0245','654d2afe7edbcfe164dc4d4362c452802e5665ab3e32287997337dc4862a1a1b'); -INSERT INTO blocks VALUES(310467,'d455a803e714bb6bd9e582edc34e624e7e3d80ee6c7b42f7207d763fff5c2bd3',310467000,NULL,NULL,'a43abeddb61ad99d57f208cb0c6cc3e0b05a200009e6d90641a2bc7aac707adf','bbb745a74368cbbb197cc4e014b58c11ff3753c6fdc4a347ca3d09afadacbab0','f2cf06bca7c41faf6ddc31d2d781b50f365808f3fe124349ecae0d6b9802e065'); -INSERT INTO blocks VALUES(310468,'d84dfd2fcf6d8005aeeac01e03b287af788c81955612375510e37a4ab5766891',310468000,NULL,NULL,'fc909facd6ba38fa0908fd49a6e2f25bd8284de5265ef761497b8a2d595344b3','856cb39b89535d6409b2e95efc30606b54f9097cfaf3de3899b937792859e911','947c9e48d1441d177adb8c58978cfbb0ba9b24f8c5db01603b2a2912c2735f90'); -INSERT INTO blocks VALUES(310469,'2fbbf2724f537d539b675acb6a479e530c7aac5f93b4045f4356ea4b0f8a8755',310469000,NULL,NULL,'09f0d1c9bde8cdd63544fbb5eab46c2954654d32f3736f9975cf860588aa65cf','4a0385bea6a64441bf0cdf873a256c9d0c81ed168921b8f557ba42ddb717fc2f','85d7e8d57c66094c882cac8f9df6c158b08ccdb5f5ffc9532ec2e7d724777466'); -INSERT INTO blocks VALUES(310470,'ebb7c8e3fbe0b123a456d753b85b8c123ca3b315da14a00379ebd34784b28921',310470000,NULL,NULL,'41832b12459e778621b8f576e597b9f639390338605b30e5be28423b016b199a','d19e14fe6eedddb69a9fb12ef1decf59ed9af236e864e1149ca629d5e9efa6c0','84b321e4e3968a082eedbb79f47726ac223606dc1e4651c9179faeef007c9d89'); -INSERT INTO blocks VALUES(310471,'fc6f8162c55ecffeaabb09f70f071fd0cb7a9ef1bccaafaf27fe9a936defb739',310471000,NULL,NULL,'bf701017153742cb597353349c90ec66f790f222dd98d617d98a0117f1de3274','9de099424725ade78ff256a2890f0dafe8bafe36002c3f06960bbbf3853597bd','5eb25c9c72d1c997ee201c87262d16288152fee9d515ea8873d4e607cd71a86f'); -INSERT INTO blocks VALUES(310472,'57ee5dec5e95b3d9c65a21c407294a32ed538658a6910b16124f18020f16bdf7',310472000,NULL,NULL,'2a162bbd5a20f89a39156995658fd0c4715881bc130922d0edf95b60ece60b9c','6b285a619970b68a21ab77556a6d9e3cd600bb8b2fca93b72027c62b96ebe75a','f08351bce87a6f94ef278cc9844ef6cefbaba427888634d748ab2365c614d79a'); -INSERT INTO blocks VALUES(310473,'33994c8f6d06134f886b47e14cb4b5af8fc0fd66e6bd60b3a71986622483e095',310473000,NULL,NULL,'1ce10996ec9e37d8ddc204f038542c6781da88d2d45bae1952a88ab993b81e88','c3c43c999494c3dbfec7cb3f5acc42cf6f958b0780aa15fc74dc2511ee4c717a','af336214162bc6b839eb7167adb0b9c9ecdbc5960c532a8837847c2cd74e9747'); -INSERT INTO blocks VALUES(310474,'312ee99e9526e9c240d76e3c3d1fe4c0a21f58156a15f2789605b3e7f7794a09',310474000,NULL,NULL,'5ae424c24ca30aad5aca8298a13ae9371f55b15bc789c7731d833c6e7c7cb04e','82d23939db01e3636c6ab7c9c6f584ca3bcb0adde02c0752c95de310d63e46a1','645dc29ab43ba971453e1b22288443680010f266e89024ce6f8790b031347d47'); -INSERT INTO blocks VALUES(310475,'bb9289bcd79075962117aef1161b333dbc403efebd593d93fc315146a2f040eb',310475000,NULL,NULL,'b9b257efe76a36c340629ceb265822dd10449a08eadc69667a8ea05af5c052f8','9cd0bd09a5d26d4073537905108433f8291d1dda717fb84282de462fa1500e2f','7ab319581051eb1352fc20bd63734b48c44f8f77d234091856e1a57661caeb2e'); -INSERT INTO blocks VALUES(310476,'3712e1ebd195749e0dc92f32f7f451dd76f499bf16d709462309ce358a9370d0',310476000,NULL,NULL,'070c06b36f3a77c04fb4bcc3ab1045e95f198f3f970846e59c35db0d03cdaf2c','ae366fe8193cd3c629805348e5d5e06e34666174592506e50bf420be6885ea89','b51d0021e6ebfc2f74566f014984311d5ee590c5c2d8eb91d79e321c716c47df'); -INSERT INTO blocks VALUES(310477,'7381973c554ac2bbdc849e8ea8c4a0ecbb46e7967d322446d0d83c3f9deab918',310477000,NULL,NULL,'4954596dd44d112fd0407c215be3c9534a348d6f708ae4a1e66527d1ac2830b1','183cd8f34601182c048a54b35fd9005e18de6c2a8bcd60ba90d2061d842b8c7b','016cf95f5ef186b54858ea4801da021894563c1b14d071d313b2f879996c12d1'); -INSERT INTO blocks VALUES(310478,'c09ee871af7f2a611d43e6130aed171e301c23c5d1a29d183d40bf15898b4fa0',310478000,NULL,NULL,'d9cac2e29863569bc96aaf022437906a534968a17bf965c54bf59931cd92e590','e6c44a25aa534d92a958e71892fd17171576a0bee6906188969999d3d5f0ea2d','e963f73fa3c84d27a8d061890564ba5bc36c7c5bce4bd0ccc2c19a7fd34abf93'); -INSERT INTO blocks VALUES(310479,'f3d691ce35f62df56d142160b6e2cdcba19d4995c01f802da6ce30bfe8d30030',310479000,NULL,NULL,'2e48a89a55b6f368745e1c022683e93c20bdd920011518f18fd936f2190ac5e0','4eca0ec6a908073e1f8c33d892e8710b99846e0615194a9649ff6240e038794d','8af23b95499afb3e32fdc640eff0bef799f9b1bce7d3ab106bff09b514dc4afb'); -INSERT INTO blocks VALUES(310480,'2694e89a62b3abd03a38dfd318c05eb5871f1be00a6e1bf06826fd54d142e681',310480000,NULL,NULL,'aa54124d86e74bebd14ea481ac2a5a5186236ffe214747f1af11ac370565525c','573ab72a761fca920bb30b326cdafa359b25fab5d60881433db23dfe078c6e15','72499c23c9910f40c523fa9d358bef815b83bad3513357e89027517b3cd98472'); -INSERT INTO blocks VALUES(310481,'db37d8f98630ebc61767736ae2c523e4e930095bf54259c01de4d36fd60b6f4a',310481000,NULL,NULL,'fbbe1266bb773e5a3f5b48e82566ff75bc74bfea9424f81f670952565db15c59','f23cc99c10d4249f7e82c2495feb2e2936af4eb7aea97320cac79bb58b4d2090','71fb1334a443cc2b9f6b3cd268d2f4d6c010d4b7ce28a64fca88e16b7370ab41'); -INSERT INTO blocks VALUES(310482,'2e27db87dfb6439c006637734e876cc662d1ca74c717756f90f0e535df0787d6',310482000,NULL,NULL,'bd28a97e90054319c4c301c3e99d68aaa5e1bf5a145a8f2c4529040bb8137209','666eb4e0c4fa24ef3af9f7b17c9ac2f9ef530ba77b8a2599444c64704a26c678','e42808663dbeb7fb489d9be0ac242316fb6c63c51cbb0d412f3cdb0ab1c2ecd1'); -INSERT INTO blocks VALUES(310483,'013bac61f8e33c8d8d0f60f5e6a4ec3de9b16696703dea9802f64a258601c460',310483000,NULL,NULL,'fbbeacec99c9ed99a7fc37cdd5673fe8bdce08eba7fcb25b696e262af29ca5d8','400287028df5fb8f313db35bedf95fa863f0de11f9b8386c7245613387aa3e0d','f43a6fba7b7be41943d46060d2482130af2f673d9ddcb6da5fd7f0b142945f77'); -INSERT INTO blocks VALUES(310484,'7cac2b3630c31b592fa0497792bed58d3c41120c009471c348b16b5578b3aa2b',310484000,NULL,NULL,'310bc7c61c1325ee3f97e888658fd74e1fe4adccef4924abb6978150fe6f3dad','7a5198442a1005e4730c979c433914561d23e2ee572c20104b163786b14944f2','560f1904b436ef07d19d2321be9e7608697d9223f045a74241743cbed742d417'); -INSERT INTO blocks VALUES(310485,'eab5febc9668cd438178496417b22da5f77ceaed5bb6e01fc0f04bef1f5b4478',310485000,NULL,NULL,'b7f66db9ea5838b65286422d0cac262f6b81bbd5a7397adf7b8d85b21354dbcd','069fd63fe9ad0e55767edb6dff81c5953732dcce30e3aa2ace62283da5b8811e','a7689d50ebe654cf0e04b6e1f57673298c8caf8570123db8debd2264b439f645'); -INSERT INTO blocks VALUES(310486,'d4fbe610cc60987f2d1d35c7d8ad3ce32156ee5fe36ef8cc4f08b46836388862',310486000,NULL,NULL,'0f829769e4da773089d7b05047a499db5f6d1b17795d4fba912882caee9813e0','27246d612f84feff6e5a061d193c949af6c1437acb9e69b2272ee36152af0ecc','acd127b9760bfd4cf56445c96f206111437f463d45ddacb4de05c47320c06de9'); -INSERT INTO blocks VALUES(310487,'32aa1b132d0643350bbb62dbd5f38ae0c270d8f491a2012c83b99158d58e464f',310487000,NULL,NULL,'4b4d7a79843342e96e5d9d71bbc49690245b3098be75e7b86f273021d526216d','916fda8dc753b14ba391417ff484d833248ddf45eb3198c31df06f4bfc643c67','0bcd4c3ba27b52370eebe564f3b7abb2bf7e3b659d1aec3fe72fc37183b309c0'); -INSERT INTO blocks VALUES(310488,'80b8dd5d7ce2e4886e6721095b892a39fb699980fe2bc1c17e747f822f4c4b1b',310488000,NULL,NULL,'2d7e59026ea4c8933e9c7474936931ca49d4af91f9b9985f3c76085fb3a69104','83a5940261b37c4aee43abe70e94380b0692c0828a018f6390df0d070dbfb96d','7a42ffbfed613243b4ec478f130c103e3b5752aae46c755f20c0a33762c7e345'); -INSERT INTO blocks VALUES(310489,'2efdb36f986b3e3ccc6cc9b0c1c3cdcb07429fb43cbc0cc3b6c87d1b33f258b6',310489000,NULL,NULL,'716354a370f344980e98785a444b56b21188bc699e7fbd0c877b6f2fabf35efc','e5d62c71154e8a0f81a521470ff2a72696589d100f71063086220190880625c8','6ef6e3fe07dd6721997a621b6a2ddb8f461f0d89b8bdaf7f5faa13d445fad6b1'); -INSERT INTO blocks VALUES(310490,'e2cb04b8a7368c95359c9d5ff33e64209200fb606de0d64b7c0f67bb1cb8d87c',310490000,NULL,NULL,'906a38f4256f50312891119c99721537992438af85421e317574ce1810e2b909','9cbde7b2c3fa85a09f1a100659a13a41db7dfb9a6d100048ff24dee837fe546a','6997a9533f8bc2b67f623288e944459711c3ed05bbeac97169e08583f7dd2184'); -INSERT INTO blocks VALUES(310491,'811abd7cf2b768cfdaa84ab44c63f4463c96a368ead52125bf149cf0c7447b16',310491000,NULL,NULL,'3114d8091cfcaa9944c6fab49d51950535c4ef269877d58c372ed80b2b472ec6','77c53eb01eeb99a712bb8cc8013fed4dbc918fd3a3dad81717d07cea5d77f36a','61d1f921131c30184a631c159352732bace2366359bd8f335430d85b9503a80e'); -INSERT INTO blocks VALUES(310492,'8a09b2faf0a7ad67eb4ab5c948b9769fc87eb2ec5e16108f2cde8bd9e6cf7607',310492000,NULL,NULL,'98af18583618fdeed545347c013763d068e8294405d265911cc5e1bc420bc740','5ffd5a36e3748d4a2de46184f9b7473dff9da7f461cff5eb2039e86362e1ea25','54e39ac0cee587ff52c65fcc34a6b2b78dc40b310a44b00f02a1f2343a7c8f2f'); -INSERT INTO blocks VALUES(310493,'c19e2915b750279b2be4b52e57e5ce29f63dffb4e14d9aad30c9e820affc0cbf',310493000,NULL,NULL,'29119cd30a4733916fbfd0551506eaa16f7bb1bdfbdf8d17ac4e5bb20d1cb09c','f25deae56ede44d1ec9d4fd282c99b5a5a723230c6ab6fa4126004d5a12bd72f','ddc083f979895849be1e37a4ce77122af621a9db288eb8fd15fdeac4a609ceaa'); -INSERT INTO blocks VALUES(310494,'7dda1d3e12785313d5651ee5314d0aecf17588196f9150b10c55695dbaebee5d',310494000,NULL,NULL,'72d71bd72263699ea9f2b097ad141be5bc394f49d8b0b0a6b2ff6a87b0ee3919','a18a699232e62a58f87c5b1d24d1753916ff3ec1b3bbb2676318f54d7305b5f8','9446af38205016d801c7ca2587d8944021eee0425c9a9eee368c4eb3c27b6675'); -INSERT INTO blocks VALUES(310495,'4769aa7030f28a05a137a85ef4ee0c1765c37013773212b93ec90f1227168b67',310495000,NULL,NULL,'5a7e5a36882466373d576bb5f4ccd1bc72ecaf548b9589baa803a7275a7a24cd','5f582341738669c30569b0a1e7930e128b43b897d76d3441e04a3c6b5cf5e8d3','ad4876ab119297bcc3b86b3cb9bc96c72b74842f2356aa405c4d8f6cb1d851d0'); -INSERT INTO blocks VALUES(310496,'65884816927e8c566655e85c07bc2bc2c7ee26e625742f219939d43238fb31f8',310496000,NULL,NULL,'7ac6121c624b634f44695172761830926afe76bb18c4cc9195773f3a26966941','2f78db67dc720f820dd1eb2422638ae828996f893af843edff0e18c649536e18','2d5dc3d4408cc8fea56feefa35c1f0558761ed3d50c5e0ece61651266e28aea5'); -INSERT INTO blocks VALUES(310497,'f1118591fe79b8bf52ccf0c5de9826bfd266b1fdc24b44676cf22bbcc76d464e',310497000,NULL,NULL,'28c6e92b2299b9cbbb5953f8b7ff3de0fe962d15642ba27e43faa64e1935e819','2802fef5b6f878a4d82b8bdb65c41b91518aa4343c254875ed03fdb3fb9add27','b31594651e8d38353910b63503393f51945452786fef60e198fe4f2a28273f30'); -INSERT INTO blocks VALUES(310498,'b7058b6d1ddc325a10bf33144937e06ce6025215b416518ae120da9440ae279e',310498000,NULL,NULL,'5fe6cdb0828379bf240fad99c68bba34e1889bbc19605ce5c297b82352264414','f5e38f106f3b01c9f9f1411ce6a6d5b6175729ff3948099ab530dcef30f07164','8493ce8a902a7a8862f40a2545e2cac6a4536f11b37437b6b541a6e829a4bdbc'); -INSERT INTO blocks VALUES(310499,'1950e1a4d7fc820ed9603f6df6819c3c953c277c726340dec2a4253e261a1764',310499000,NULL,NULL,'b9fcbdafddd46fdda061f6e9f8744b426b6ca37e32b315df1098cbc7899ae9b9','362e1dca37ace8ff1153d9d0718caad5a6e4abbac810b5ae3dad26566490f8e8','78d740a346a018f1aa02da3694f8d57ef9b531e068a533f5dddf48dab1d0c60a'); -INSERT INTO blocks VALUES(310500,'54aeaf47d5387964e2d51617bf3af50520a0449410e0d096cf8c2aa9dad5550b',310500000,NULL,NULL,'5ffefc7a2724be6bd697796bb82638ec913c5cbb73627153d1a13b48c7a6c02d','230349742d5a3e30b568712a54171da4f71de21d5c6fd353cdc59c6270afdc7e','42dc71a72aceaecf8874b326cf83858cac52f83fb0edc4769ff3aa6191a915cf'); -INSERT INTO blocks VALUES(310501,'9d9019d15a1d878f2c39c7e3de4340a043a4a31aebb298acdf8e913284ae26ba',310501000,NULL,NULL,NULL,NULL,NULL); --- Triggers and indices on blocks -CREATE INDEX block_index_idx ON blocks (block_index); -CREATE INDEX index_hash_idx ON blocks (block_index, block_hash); - --- Table broadcasts -DROP TABLE IF EXISTS broadcasts; -CREATE TABLE broadcasts( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - timestamp INTEGER, - value REAL, - fee_fraction_int INTEGER, - text TEXT, - locked BOOL, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO broadcasts VALUES(18,'3330c302fd75cb6b9e4d08ccc8821fee8f6f88c8a42123386941193813653c7a',310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000000,1.0,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(19,'a9d599c0f1669b071bf107f7e90f88fe692d56ca00b81e57c71a56530590e7ee',310018,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH',0,NULL,NULL,NULL,1,'valid'); -INSERT INTO broadcasts VALUES(103,'8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8',310102,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000002,1.0,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(112,'510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186',310111,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',1388000002,1.0,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(487,'096883e142a87377d3a4103f4702556e25824f1e23667aceb1690f66e1417062',310486,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',1388000000,1.0,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(489,'9b1cad827c97c463c2b39cc9d550693c438010ef85a10ee04d3db8699193e906',310488,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',1388000002,1.0,0,'options 0',0,'valid'); -INSERT INTO broadcasts VALUES(490,'9a39bade308462ec65be3c8420a0f2189b1d4e947d4c7950a37176de71de4f87',310489,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',0,NULL,NULL,NULL,1,'valid'); -INSERT INTO broadcasts VALUES(491,'4b233a74b9db14a8619ee8ec5558149e53ab033be31e803257f760aa9ef2f3b9',310490,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',1388000004,1.0,0,'options 1',0,'valid'); --- Triggers and indices on broadcasts -CREATE TRIGGER _broadcasts_delete BEFORE DELETE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO broadcasts(rowid,tx_index,tx_hash,block_index,source,timestamp,value,fee_fraction_int,text,locked,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.timestamp)||','||quote(old.value)||','||quote(old.fee_fraction_int)||','||quote(old.text)||','||quote(old.locked)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _broadcasts_insert AFTER INSERT ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM broadcasts WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _broadcasts_update AFTER UPDATE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE broadcasts SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',timestamp='||quote(old.timestamp)||',value='||quote(old.value)||',fee_fraction_int='||quote(old.fee_fraction_int)||',text='||quote(old.text)||',locked='||quote(old.locked)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_source_idx ON broadcasts (status, source); -CREATE INDEX status_source_index_idx ON broadcasts (status, source, tx_index); -CREATE INDEX timestamp_idx ON broadcasts (timestamp); - --- Table btcpays -DROP TABLE IF EXISTS btcpays; -CREATE TABLE btcpays( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - order_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on btcpays -CREATE TRIGGER _btcpays_delete BEFORE DELETE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO btcpays(rowid,tx_index,tx_hash,block_index,source,destination,btc_amount,order_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.btc_amount)||','||quote(old.order_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _btcpays_insert AFTER INSERT ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM btcpays WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _btcpays_update AFTER UPDATE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE btcpays SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',btc_amount='||quote(old.btc_amount)||',order_match_id='||quote(old.order_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table burns -DROP TABLE IF EXISTS burns; -CREATE TABLE burns( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - burned INTEGER, - earned INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO burns VALUES(1,'6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',310000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',62000000,93000000000,'valid'); -INSERT INTO burns VALUES(104,'65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b',310103,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',62000000,92999138821,'valid'); -INSERT INTO burns VALUES(105,'95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff',310104,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b',62000000,92999130460,'valid'); -INSERT INTO burns VALUES(106,'e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa',310105,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',62000000,92999122099,'valid'); -INSERT INTO burns VALUES(107,'bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3',310106,'mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK',10000,14999857,'valid'); -INSERT INTO burns VALUES(109,'93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73',310108,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',31000000,46499548508,'valid'); -INSERT INTO burns VALUES(117,'27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9',310116,'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx',62000000,92999030129,'valid'); -INSERT INTO burns VALUES(494,'c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a',310493,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH',62000000,92995878046,'valid'); --- Triggers and indices on burns -CREATE TRIGGER _burns_delete BEFORE DELETE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO burns(rowid,tx_index,tx_hash,block_index,source,burned,earned,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.burned)||','||quote(old.earned)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _burns_insert AFTER INSERT ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM burns WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _burns_update AFTER UPDATE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE burns SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',burned='||quote(old.burned)||',earned='||quote(old.earned)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table cancels -DROP TABLE IF EXISTS cancels; -CREATE TABLE cancels( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - offer_hash TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on cancels -CREATE TRIGGER _cancels_delete BEFORE DELETE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO cancels(rowid,tx_index,tx_hash,block_index,source,offer_hash,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.offer_hash)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _cancels_insert AFTER INSERT ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM cancels WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _cancels_update AFTER UPDATE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE cancels SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',offer_hash='||quote(old.offer_hash)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX cancels_block_index_idx ON cancels (block_index); - --- Table credits -DROP TABLE IF EXISTS credits; -CREATE TABLE credits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - calling_function TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO credits VALUES(310000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',93000000000,'burn','6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597'); -INSERT INTO credits VALUES(310001,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000000,'issuance','9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e'); -INSERT INTO credits VALUES(310002,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',1000,'issuance','2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73'); -INSERT INTO credits VALUES(310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','CALLABLE',1000,'issuance','4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb'); -INSERT INTO credits VALUES(310004,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','LOCKED',1000,'issuance','e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1'); -INSERT INTO credits VALUES(310007,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000,'send','95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef'); -INSERT INTO credits VALUES(310008,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'send','8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc'); -INSERT INTO credits VALUES(310012,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000,'send','1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568'); -INSERT INTO credits VALUES(310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000,'send','62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd'); -INSERT INTO credits VALUES(310014,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5,'send','9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba'); -INSERT INTO credits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10,'send','62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4'); -INSERT INTO credits VALUES(310016,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','MAXI',9223372036854775807,'issuance','19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93'); -INSERT INTO credits VALUES(310020,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'filled','acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0'); -INSERT INTO credits VALUES(310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',0,'filled','acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0'); -INSERT INTO credits VALUES(310102,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',9,'bet settled','8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8'); -INSERT INTO credits VALUES(310102,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',9,'bet settled','8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8'); -INSERT INTO credits VALUES(310102,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'feed fee','8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8'); -INSERT INTO credits VALUES(310103,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138821,'burn','65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b'); -INSERT INTO credits VALUES(310104,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130460,'burn','95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff'); -INSERT INTO credits VALUES(310105,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92999122099,'burn','e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa'); -INSERT INTO credits VALUES(310106,'mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','XCP',14999857,'burn','bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3'); -INSERT INTO credits VALUES(310108,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46499548508,'burn','93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73'); -INSERT INTO credits VALUES(310109,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','PAYTOSCRIPT',1000,'issuance','ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e'); -INSERT INTO credits VALUES(310110,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000,'send','f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481'); -INSERT INTO credits VALUES(310113,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','LOCKEDPREV',1000,'issuance','5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9'); -INSERT INTO credits VALUES(310116,'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','XCP',92999030129,'burn','27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9'); -INSERT INTO credits VALUES(310481,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'send','b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5'); -INSERT INTO credits VALUES(310482,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'send','c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34'); -INSERT INTO credits VALUES(310493,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92995878046,'burn','c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a'); -INSERT INTO credits VALUES(310494,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',100,'issuance','4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5'); -INSERT INTO credits VALUES(310495,'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10,'send','129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc'); -INSERT INTO credits VALUES(310496,'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046,'send','1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6'); -INSERT INTO credits VALUES(310497,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','PARENT',100000000,'issuance','076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f'); -INSERT INTO credits VALUES(310498,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','A95428956661682277',100000000,'issuance','0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf'); --- Triggers and indices on credits -CREATE TRIGGER _credits_delete BEFORE DELETE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO credits(rowid,block_index,address,asset,quantity,calling_function,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.calling_function)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _credits_insert AFTER INSERT ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM credits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _credits_update AFTER UPDATE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE credits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',calling_function='||quote(old.calling_function)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; - --- Table debits -DROP TABLE IF EXISTS debits; -CREATE TABLE debits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - action TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO debits VALUES(310001,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e'); -INSERT INTO debits VALUES(310002,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73'); -INSERT INTO debits VALUES(310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb'); -INSERT INTO debits VALUES(310004,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1'); -INSERT INTO debits VALUES(310005,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'issuance fee','1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579'); -INSERT INTO debits VALUES(310006,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3'); -INSERT INTO debits VALUES(310007,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000,'send','95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef'); -INSERT INTO debits VALUES(310008,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'send','8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc'); -INSERT INTO debits VALUES(310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391'); -INSERT INTO debits VALUES(310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145'); -INSERT INTO debits VALUES(310012,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',300000000,'send','1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568'); -INSERT INTO debits VALUES(310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',1000000000,'send','62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd'); -INSERT INTO debits VALUES(310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',5,'send','9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba'); -INSERT INTO debits VALUES(310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',10,'send','62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4'); -INSERT INTO debits VALUES(310016,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93'); -INSERT INTO debits VALUES(310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',9,'bet','c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d'); -INSERT INTO debits VALUES(310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',9,'bet','acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0'); -INSERT INTO debits VALUES(310101,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',10,'bet','aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305'); -INSERT INTO debits VALUES(310107,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',100,'open dispenser','9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec'); -INSERT INTO debits VALUES(310109,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',50000000,'issuance fee','ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e'); -INSERT INTO debits VALUES(310110,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000,'send','f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481'); -INSERT INTO debits VALUES(310112,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',10,'bet','d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048'); -INSERT INTO debits VALUES(310113,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',50000000,'issuance fee','5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9'); -INSERT INTO debits VALUES(310114,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',0,'issuance fee','74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe'); -INSERT INTO debits VALUES(310115,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',0,'issuance fee','214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d'); -INSERT INTO debits VALUES(310481,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'send','b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5'); -INSERT INTO debits VALUES(310482,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'send','c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34'); -INSERT INTO debits VALUES(310487,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',9,'bet','2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275'); -INSERT INTO debits VALUES(310491,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09'); -INSERT INTO debits VALUES(310494,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',50000000,'issuance fee','4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5'); -INSERT INTO debits VALUES(310495,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',10,'send','129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc'); -INSERT INTO debits VALUES(310496,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92945878046,'send','1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6'); -INSERT INTO debits VALUES(310497,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f'); -INSERT INTO debits VALUES(310498,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',25000000,'issuance fee','0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf'); --- Triggers and indices on debits -CREATE TRIGGER _debits_delete BEFORE DELETE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO debits(rowid,block_index,address,asset,quantity,action,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.action)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _debits_insert AFTER INSERT ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM debits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _debits_update AFTER UPDATE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE debits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',action='||quote(old.action)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_idx ON debits (address); -CREATE INDEX asset_idx ON debits (asset); - --- Table destructions -DROP TABLE IF EXISTS destructions; -CREATE TABLE destructions( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset INTEGER, - quantity INTEGER, - tag TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on destructions -CREATE TRIGGER _destructions_delete BEFORE DELETE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO destructions(rowid,tx_index,tx_hash,block_index,source,asset,quantity,tag,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.tag)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _destructions_insert AFTER INSERT ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM destructions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _destructions_update AFTER UPDATE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE destructions SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',tag='||quote(old.tag)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_idx ON destructions (status); - --- Table dispensers -DROP TABLE IF EXISTS dispensers; -CREATE TABLE dispensers( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - give_quantity INTEGER, - escrow_quantity INTEGER, - satoshirate INTEGER, - status INTEGER, - give_remaining INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO dispensers VALUES(108,'9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec',310107,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',100,100,100,0,100); --- Triggers and indices on dispensers -CREATE TRIGGER _dispensers_delete BEFORE DELETE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispensers(rowid,tx_index,tx_hash,block_index,source,asset,give_quantity,escrow_quantity,satoshirate,status,give_remaining) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.give_quantity)||','||quote(old.escrow_quantity)||','||quote(old.satoshirate)||','||quote(old.status)||','||quote(old.give_remaining)||')'); - END; -CREATE TRIGGER _dispensers_insert AFTER INSERT ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispensers WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispensers_update AFTER UPDATE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispensers SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',give_quantity='||quote(old.give_quantity)||',escrow_quantity='||quote(old.escrow_quantity)||',satoshirate='||quote(old.satoshirate)||',status='||quote(old.status)||',give_remaining='||quote(old.give_remaining)||' WHERE rowid='||old.rowid); - END; - --- Table dispenses -DROP TABLE IF EXISTS dispenses; -CREATE TABLE dispenses( - tx_index INTEGER, - dispense_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - dispense_quantity INTEGER, - dispenser_tx_hash TEXT, - PRIMARY KEY (tx_index, dispense_index, source, destination), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispenses -CREATE TRIGGER _dispenses_delete BEFORE DELETE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispenses(rowid,tx_index,dispense_index,tx_hash,block_index,source,destination,asset,dispense_quantity,dispenser_tx_hash) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.dispense_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.dispense_quantity)||','||quote(old.dispenser_tx_hash)||')'); - END; -CREATE TRIGGER _dispenses_insert AFTER INSERT ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispenses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispenses_update AFTER UPDATE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispenses SET tx_index='||quote(old.tx_index)||',dispense_index='||quote(old.dispense_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',dispense_quantity='||quote(old.dispense_quantity)||',dispenser_tx_hash='||quote(old.dispenser_tx_hash)||' WHERE rowid='||old.rowid); - END; - --- Table dividends -DROP TABLE IF EXISTS dividends; -CREATE TABLE dividends( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - dividend_asset TEXT, - quantity_per_unit INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dividends -CREATE TRIGGER _dividends_delete BEFORE DELETE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dividends(rowid,tx_index,tx_hash,block_index,source,asset,dividend_asset,quantity_per_unit,fee_paid,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.dividend_asset)||','||quote(old.quantity_per_unit)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _dividends_insert AFTER INSERT ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dividends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dividends_update AFTER UPDATE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dividends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',dividend_asset='||quote(old.dividend_asset)||',quantity_per_unit='||quote(old.quantity_per_unit)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table issuances -DROP TABLE IF EXISTS issuances; -CREATE TABLE "issuances"( - tx_index INTEGER, - tx_hash TEXT, - msg_index INTEGER DEFAULT 0, - block_index INTEGER, - asset TEXT, - quantity INTEGER, - divisible BOOL, - source TEXT, - issuer TEXT, - transfer BOOL, - callable BOOL, - call_date INTEGER, - call_price REAL, - description TEXT, - fee_paid INTEGER, - locked BOOL, - status TEXT, - asset_longname TEXT, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index)); -INSERT INTO issuances VALUES(2,'9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e',0,310001,'DIVISIBLE',100000000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Divisible asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(3,'2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73',0,310002,'NODIVISIBLE',1000,0,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'No divisible asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(4,'4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb',0,310003,'CALLABLE',1000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Callable asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(5,'e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1',0,310004,'LOCKED',1000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Locked asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(6,'1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579',0,310005,'LOCKED',0,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Locked asset',0,1,'valid',NULL); -INSERT INTO issuances VALUES(17,'19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93',0,310016,'MAXI',9223372036854775807,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Maximum quantity',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(110,'ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e',0,310109,'PAYTOSCRIPT',1000,0,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',0,0,0,0.0,'PSH issued asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(114,'5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9',0,310113,'LOCKEDPREV',1000,1,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',0,0,0,0.0,'Locked asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(115,'74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe',0,310114,'LOCKEDPREV',0,1,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',0,0,0,0.0,'Locked asset',0,1,'valid',NULL); -INSERT INTO issuances VALUES(116,'214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d',0,310115,'LOCKEDPREV',0,1,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',0,0,0,0.0,'changed',0,0,'valid',NULL); -INSERT INTO issuances VALUES(495,'4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5',0,310494,'DIVIDEND',100,1,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH',0,0,0,0.0,'Test dividend',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(498,'076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f',0,310497,'PARENT',100000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Parent asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(499,'0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf',0,310498,'A95428956661682277',100000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Child of parent',25000000,0,'valid','PARENT.already.issued'); --- Triggers and indices on issuances -CREATE TRIGGER _issuances_delete BEFORE DELETE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO issuances(rowid,tx_index,tx_hash,msg_index,block_index,asset,quantity,divisible,source,issuer,transfer,callable,call_date,call_price,description,fee_paid,locked,status,asset_longname) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.msg_index)||','||quote(old.block_index)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.divisible)||','||quote(old.source)||','||quote(old.issuer)||','||quote(old.transfer)||','||quote(old.callable)||','||quote(old.call_date)||','||quote(old.call_price)||','||quote(old.description)||','||quote(old.fee_paid)||','||quote(old.locked)||','||quote(old.status)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _issuances_insert AFTER INSERT ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM issuances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _issuances_update AFTER UPDATE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE issuances SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',msg_index='||quote(old.msg_index)||',block_index='||quote(old.block_index)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',divisible='||quote(old.divisible)||',source='||quote(old.source)||',issuer='||quote(old.issuer)||',transfer='||quote(old.transfer)||',callable='||quote(old.callable)||',call_date='||quote(old.call_date)||',call_price='||quote(old.call_price)||',description='||quote(old.description)||',fee_paid='||quote(old.fee_paid)||',locked='||quote(old.locked)||',status='||quote(old.status)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_asset_idx ON issuances (asset, status); - --- Table mempool -DROP TABLE IF EXISTS mempool; -CREATE TABLE mempool( - tx_hash TEXT, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); - --- Table messages -DROP TABLE IF EXISTS messages; -CREATE TABLE messages( - message_index INTEGER PRIMARY KEY, - block_index INTEGER, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); -INSERT INTO messages VALUES(0,310000,'insert','credits','{"action": "burn", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310000, "event": "6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597", "quantity": 93000000000}',0); -INSERT INTO messages VALUES(1,310000,'insert','burns','{"block_index": 310000, "burned": 62000000, "earned": 93000000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597", "tx_index": 1}',0); -INSERT INTO messages VALUES(2,310001,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310001, "event": "9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e", "quantity": 50000000}',0); -INSERT INTO messages VALUES(3,310001,'insert','issuances','{"asset": "DIVISIBLE", "asset_longname": null, "block_index": 310001, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Divisible asset", "divisible": true, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 100000000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e", "tx_index": 2}',0); -INSERT INTO messages VALUES(4,310001,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "DIVISIBLE", "block_index": 310001, "event": "9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e", "quantity": 100000000000}',0); -INSERT INTO messages VALUES(5,310002,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310002, "event": "2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73", "quantity": 50000000}',0); -INSERT INTO messages VALUES(6,310002,'insert','issuances','{"asset": "NODIVISIBLE", "asset_longname": null, "block_index": 310002, "call_date": 0, "call_price": 0.0, "callable": false, "description": "No divisible asset", "divisible": false, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 1000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73", "tx_index": 3}',0); -INSERT INTO messages VALUES(7,310002,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "NODIVISIBLE", "block_index": 310002, "event": "2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73", "quantity": 1000}',0); -INSERT INTO messages VALUES(8,310003,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310003, "event": "4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb", "quantity": 50000000}',0); -INSERT INTO messages VALUES(9,310003,'insert','issuances','{"asset": "CALLABLE", "asset_longname": null, "block_index": 310003, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Callable asset", "divisible": true, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 1000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb", "tx_index": 4}',0); -INSERT INTO messages VALUES(10,310003,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "CALLABLE", "block_index": 310003, "event": "4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb", "quantity": 1000}',0); -INSERT INTO messages VALUES(11,310004,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310004, "event": "e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1", "quantity": 50000000}',0); -INSERT INTO messages VALUES(12,310004,'insert','issuances','{"asset": "LOCKED", "asset_longname": null, "block_index": 310004, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Locked asset", "divisible": true, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 1000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1", "tx_index": 5}',0); -INSERT INTO messages VALUES(13,310004,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "LOCKED", "block_index": 310004, "event": "e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1", "quantity": 1000}',0); -INSERT INTO messages VALUES(14,310005,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310005, "event": "1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579", "quantity": 0}',0); -INSERT INTO messages VALUES(15,310005,'insert','issuances','{"asset": "LOCKED", "asset_longname": null, "block_index": 310005, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Locked asset", "divisible": true, "fee_paid": 0, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": true, "quantity": 0, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579", "tx_index": 6}',0); -INSERT INTO messages VALUES(16,310006,'insert','debits','{"action": "open order", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310006, "event": "b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3", "quantity": 100000000}',0); -INSERT INTO messages VALUES(17,310006,'insert','orders','{"block_index": 310006, "expiration": 2000, "expire_index": 312006, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "DIVISIBLE", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "XCP", "give_quantity": 100000000, "give_remaining": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "tx_hash": "b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3", "tx_index": 7}',0); -INSERT INTO messages VALUES(18,310007,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "DIVISIBLE", "block_index": 310007, "event": "95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef", "quantity": 100000000}',0); -INSERT INTO messages VALUES(19,310007,'insert','credits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "DIVISIBLE", "block_index": 310007, "event": "95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef", "quantity": 100000000}',0); -INSERT INTO messages VALUES(20,310007,'insert','sends','{"asset": "DIVISIBLE", "block_index": 310007, "destination": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "quantity": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef", "tx_index": 8}',0); -INSERT INTO messages VALUES(21,310008,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310008, "event": "8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc", "quantity": 100000000}',0); -INSERT INTO messages VALUES(22,310008,'insert','credits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310008, "event": "8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc", "quantity": 100000000}',0); -INSERT INTO messages VALUES(23,310008,'insert','sends','{"asset": "XCP", "block_index": 310008, "destination": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "quantity": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc", "tx_index": 9}',0); -INSERT INTO messages VALUES(24,310009,'insert','debits','{"action": "open order", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310009, "event": "d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391", "quantity": 100000000}',0); -INSERT INTO messages VALUES(25,310009,'insert','orders','{"block_index": 310009, "expiration": 2000, "expire_index": 312009, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "DIVISIBLE", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "XCP", "give_quantity": 100000000, "give_remaining": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "tx_hash": "d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391", "tx_index": 10}',0); -INSERT INTO messages VALUES(26,310010,'insert','debits','{"action": "open order", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310010, "event": "c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145", "quantity": 100000000}',0); -INSERT INTO messages VALUES(27,310010,'insert','orders','{"block_index": 310010, "expiration": 2000, "expire_index": 312010, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 900000, "fee_required_remaining": 900000, "get_asset": "BTC", "get_quantity": 1000000, "get_remaining": 1000000, "give_asset": "XCP", "give_quantity": 100000000, "give_remaining": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "tx_hash": "c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145", "tx_index": 11}',0); -INSERT INTO messages VALUES(28,310011,'insert','orders','{"block_index": 310011, "expiration": 2000, "expire_index": 312011, "fee_provided": 1000000, "fee_provided_remaining": 1000000, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "BTC", "give_quantity": 666667, "give_remaining": 666667, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "tx_hash": "601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e", "tx_index": 12}',0); -INSERT INTO messages VALUES(29,310012,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310012, "event": "1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568", "quantity": 300000000}',0); -INSERT INTO messages VALUES(30,310012,'insert','credits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310012, "event": "1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568", "quantity": 300000000}',0); -INSERT INTO messages VALUES(31,310012,'insert','sends','{"asset": "XCP", "block_index": 310012, "destination": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 300000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568", "tx_index": 13}',0); -INSERT INTO messages VALUES(32,310013,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "DIVISIBLE", "block_index": 310013, "event": "62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd", "quantity": 1000000000}',0); -INSERT INTO messages VALUES(33,310013,'insert','credits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "DIVISIBLE", "block_index": 310013, "event": "62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd", "quantity": 1000000000}',0); -INSERT INTO messages VALUES(34,310013,'insert','sends','{"asset": "DIVISIBLE", "block_index": 310013, "destination": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 1000000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd", "tx_index": 14}',0); -INSERT INTO messages VALUES(35,310014,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "NODIVISIBLE", "block_index": 310014, "event": "9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba", "quantity": 5}',0); -INSERT INTO messages VALUES(36,310014,'insert','credits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "NODIVISIBLE", "block_index": 310014, "event": "9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba", "quantity": 5}',0); -INSERT INTO messages VALUES(37,310014,'insert','sends','{"asset": "NODIVISIBLE", "block_index": 310014, "destination": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "quantity": 5, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba", "tx_index": 15}',0); -INSERT INTO messages VALUES(38,310015,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "NODIVISIBLE", "block_index": 310015, "event": "62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4", "quantity": 10}',0); -INSERT INTO messages VALUES(39,310015,'insert','credits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "NODIVISIBLE", "block_index": 310015, "event": "62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4", "quantity": 10}',0); -INSERT INTO messages VALUES(40,310015,'insert','sends','{"asset": "NODIVISIBLE", "block_index": 310015, "destination": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 10, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4", "tx_index": 16}',0); -INSERT INTO messages VALUES(41,310016,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310016, "event": "19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93", "quantity": 50000000}',0); -INSERT INTO messages VALUES(42,310016,'insert','issuances','{"asset": "MAXI", "asset_longname": null, "block_index": 310016, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Maximum quantity", "divisible": true, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 9223372036854775807, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93", "tx_index": 17}',0); -INSERT INTO messages VALUES(43,310016,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "MAXI", "block_index": 310016, "event": "19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93", "quantity": 9223372036854775807}',0); -INSERT INTO messages VALUES(44,310017,'insert','broadcasts','{"block_index": 310017, "fee_fraction_int": 5000000, "locked": false, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "text": "Unit Test", "timestamp": 1388000000, "tx_hash": "3330c302fd75cb6b9e4d08ccc8821fee8f6f88c8a42123386941193813653c7a", "tx_index": 18, "value": 1.0}',0); -INSERT INTO messages VALUES(45,310018,'insert','broadcasts','{"block_index": 310018, "fee_fraction_int": null, "locked": true, "source": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "status": "valid", "text": null, "timestamp": 0, "tx_hash": "a9d599c0f1669b071bf107f7e90f88fe692d56ca00b81e57c71a56530590e7ee", "tx_index": 19, "value": null}',0); -INSERT INTO messages VALUES(46,310019,'insert','debits','{"action": "bet", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310019, "event": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d", "quantity": 9}',0); -INSERT INTO messages VALUES(47,310019,'insert','bets','{"bet_type": 1, "block_index": 310019, "counterwager_quantity": 9, "counterwager_remaining": 9, "deadline": 1388000001, "expiration": 100, "expire_index": 310119, "fee_fraction_int": 5000000.0, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "leverage": 5040, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "target_value": 0.0, "tx_hash": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d", "tx_index": 20, "wager_quantity": 9, "wager_remaining": 9}',0); -INSERT INTO messages VALUES(48,310020,'insert','debits','{"action": "bet", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310020, "event": "acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "quantity": 9}',0); -INSERT INTO messages VALUES(49,310020,'insert','bets','{"bet_type": 0, "block_index": 310020, "counterwager_quantity": 9, "counterwager_remaining": 9, "deadline": 1388000001, "expiration": 100, "expire_index": 310120, "fee_fraction_int": 5000000.0, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "leverage": 5040, "source": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "status": "open", "target_value": 0.0, "tx_hash": "acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "tx_index": 21, "wager_quantity": 9, "wager_remaining": 9}',0); -INSERT INTO messages VALUES(50,310020,'insert','credits','{"action": "filled", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310020, "event": "acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "quantity": 0}',0); -INSERT INTO messages VALUES(51,310020,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(52,310020,'insert','credits','{"action": "filled", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310020, "event": "acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "quantity": 0}',0); -INSERT INTO messages VALUES(53,310020,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(54,310020,'insert','bet_matches','{"backward_quantity": 9, "block_index": 310020, "deadline": 1388000001, "fee_fraction_int": 5000000, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "forward_quantity": 9, "id": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "initial_value": 1.0, "leverage": 5040, "match_expire_index": 310119, "status": "pending", "target_value": 0.0, "tx0_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "tx0_bet_type": 1, "tx0_block_index": 310019, "tx0_expiration": 100, "tx0_hash": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d", "tx0_index": 20, "tx1_address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "tx1_bet_type": 0, "tx1_block_index": 310020, "tx1_expiration": 100, "tx1_hash": "acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "tx1_index": 21}',0); -INSERT INTO messages VALUES(55,310101,'insert','debits','{"action": "bet", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310101, "event": "aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305", "quantity": 10}',0); -INSERT INTO messages VALUES(56,310101,'insert','bets','{"bet_type": 3, "block_index": 310101, "counterwager_quantity": 10, "counterwager_remaining": 10, "deadline": 1388000200, "expiration": 1000, "expire_index": 311101, "fee_fraction_int": 5000000.0, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "leverage": 5040, "source": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "status": "open", "target_value": 0.0, "tx_hash": "aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305", "tx_index": 102, "wager_quantity": 10, "wager_remaining": 10}',0); -INSERT INTO messages VALUES(57,310102,'insert','broadcasts','{"block_index": 310102, "fee_fraction_int": 5000000, "locked": false, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "text": "Unit Test", "timestamp": 1388000002, "tx_hash": "8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8", "tx_index": 103, "value": 1.0}',0); -INSERT INTO messages VALUES(58,310102,'insert','credits','{"action": "bet settled", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310102, "event": "8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8", "quantity": 9}',0); -INSERT INTO messages VALUES(59,310102,'insert','credits','{"action": "bet settled", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310102, "event": "8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8", "quantity": 9}',0); -INSERT INTO messages VALUES(60,310102,'insert','credits','{"action": "feed fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310102, "event": "8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8", "quantity": 0}',0); -INSERT INTO messages VALUES(61,310102,'insert','bet_match_resolutions','{"bear_credit": 9, "bet_match_id": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "bet_match_type_id": 1, "block_index": 310102, "bull_credit": 9, "escrow_less_fee": null, "fee": 0, "settled": true, "winner": null}',0); -INSERT INTO messages VALUES(62,310102,'update','bet_matches','{"bet_match_id": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "status": "settled"}',0); -INSERT INTO messages VALUES(63,310103,'insert','credits','{"action": "burn", "address": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "asset": "XCP", "block_index": 310103, "event": "65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b", "quantity": 92999138821}',0); -INSERT INTO messages VALUES(64,310103,'insert','burns','{"block_index": 310103, "burned": 62000000, "earned": 92999138821, "source": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "status": "valid", "tx_hash": "65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b", "tx_index": 104}',0); -INSERT INTO messages VALUES(65,310104,'insert','credits','{"action": "burn", "address": "munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b", "asset": "XCP", "block_index": 310104, "event": "95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff", "quantity": 92999130460}',0); -INSERT INTO messages VALUES(66,310104,'insert','burns','{"block_index": 310104, "burned": 62000000, "earned": 92999130460, "source": "munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b", "status": "valid", "tx_hash": "95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff", "tx_index": 105}',0); -INSERT INTO messages VALUES(67,310105,'insert','credits','{"action": "burn", "address": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "asset": "XCP", "block_index": 310105, "event": "e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa", "quantity": 92999122099}',0); -INSERT INTO messages VALUES(68,310105,'insert','burns','{"block_index": 310105, "burned": 62000000, "earned": 92999122099, "source": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "status": "valid", "tx_hash": "e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa", "tx_index": 106}',0); -INSERT INTO messages VALUES(69,310106,'insert','credits','{"action": "burn", "address": "mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK", "asset": "XCP", "block_index": 310106, "event": "bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3", "quantity": 14999857}',0); -INSERT INTO messages VALUES(70,310106,'insert','burns','{"block_index": 310106, "burned": 10000, "earned": 14999857, "source": "mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK", "status": "valid", "tx_hash": "bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3", "tx_index": 107}',0); -INSERT INTO messages VALUES(71,310107,'insert','debits','{"action": "open dispenser", "address": "munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b", "asset": "XCP", "block_index": 310107, "event": "9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec", "quantity": 100}',0); -INSERT INTO messages VALUES(72,310107,'insert','dispensers','{"asset": "XCP", "block_index": 310107, "escrow_quantity": 100, "give_quantity": 100, "give_remaining": 100, "satoshirate": 100, "source": "munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b", "status": 0, "tx_hash": "9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec", "tx_index": 108}',0); -INSERT INTO messages VALUES(73,310108,'insert','credits','{"action": "burn", "address": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "asset": "XCP", "block_index": 310108, "event": "93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73", "quantity": 46499548508}',0); -INSERT INTO messages VALUES(74,310108,'insert','burns','{"block_index": 310108, "burned": 31000000, "earned": 46499548508, "source": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "status": "valid", "tx_hash": "93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73", "tx_index": 109}',0); -INSERT INTO messages VALUES(75,310109,'insert','debits','{"action": "issuance fee", "address": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "asset": "XCP", "block_index": 310109, "event": "ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e", "quantity": 50000000}',0); -INSERT INTO messages VALUES(76,310109,'insert','issuances','{"asset": "PAYTOSCRIPT", "asset_longname": null, "block_index": 310109, "call_date": 0, "call_price": 0.0, "callable": false, "description": "PSH issued asset", "divisible": false, "fee_paid": 50000000, "issuer": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "locked": false, "quantity": 1000, "source": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "status": "valid", "transfer": false, "tx_hash": "ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e", "tx_index": 110}',0); -INSERT INTO messages VALUES(77,310109,'insert','credits','{"action": "issuance", "address": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "asset": "PAYTOSCRIPT", "block_index": 310109, "event": "ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e", "quantity": 1000}',0); -INSERT INTO messages VALUES(78,310110,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "DIVISIBLE", "block_index": 310110, "event": "f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481", "quantity": 100000000}',0); -INSERT INTO messages VALUES(79,310110,'insert','credits','{"action": "send", "address": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "asset": "DIVISIBLE", "block_index": 310110, "event": "f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481", "quantity": 100000000}',0); -INSERT INTO messages VALUES(80,310110,'insert','sends','{"asset": "DIVISIBLE", "block_index": 310110, "destination": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "quantity": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481", "tx_index": 111}',0); -INSERT INTO messages VALUES(81,310111,'insert','broadcasts','{"block_index": 310111, "fee_fraction_int": 5000000, "locked": false, "source": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "status": "valid", "text": "Unit Test", "timestamp": 1388000002, "tx_hash": "510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186", "tx_index": 112, "value": 1.0}',0); -INSERT INTO messages VALUES(82,310112,'insert','debits','{"action": "bet", "address": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "asset": "XCP", "block_index": 310112, "event": "d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048", "quantity": 10}',0); -INSERT INTO messages VALUES(83,310112,'insert','bets','{"bet_type": 3, "block_index": 310112, "counterwager_quantity": 10, "counterwager_remaining": 10, "deadline": 1388000200, "expiration": 1000, "expire_index": 311112, "fee_fraction_int": 5000000.0, "feed_address": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "leverage": 5040, "source": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "status": "open", "target_value": 0.0, "tx_hash": "d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048", "tx_index": 113, "wager_quantity": 10, "wager_remaining": 10}',0); -INSERT INTO messages VALUES(84,310113,'insert','debits','{"action": "issuance fee", "address": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "asset": "XCP", "block_index": 310113, "event": "5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9", "quantity": 50000000}',0); -INSERT INTO messages VALUES(85,310113,'insert','issuances','{"asset": "LOCKEDPREV", "asset_longname": null, "block_index": 310113, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Locked asset", "divisible": true, "fee_paid": 50000000, "issuer": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "locked": false, "quantity": 1000, "source": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "status": "valid", "transfer": false, "tx_hash": "5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9", "tx_index": 114}',0); -INSERT INTO messages VALUES(86,310113,'insert','credits','{"action": "issuance", "address": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "asset": "LOCKEDPREV", "block_index": 310113, "event": "5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9", "quantity": 1000}',0); -INSERT INTO messages VALUES(87,310114,'insert','debits','{"action": "issuance fee", "address": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "asset": "XCP", "block_index": 310114, "event": "74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe", "quantity": 0}',0); -INSERT INTO messages VALUES(88,310114,'insert','issuances','{"asset": "LOCKEDPREV", "asset_longname": null, "block_index": 310114, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Locked asset", "divisible": true, "fee_paid": 0, "issuer": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "locked": true, "quantity": 0, "source": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "status": "valid", "transfer": false, "tx_hash": "74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe", "tx_index": 115}',0); -INSERT INTO messages VALUES(89,310115,'insert','debits','{"action": "issuance fee", "address": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "asset": "XCP", "block_index": 310115, "event": "214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d", "quantity": 0}',0); -INSERT INTO messages VALUES(90,310115,'insert','issuances','{"asset": "LOCKEDPREV", "asset_longname": null, "block_index": 310115, "call_date": 0, "call_price": 0.0, "callable": false, "description": "changed", "divisible": true, "fee_paid": 0, "issuer": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "locked": false, "quantity": 0, "source": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "status": "valid", "transfer": false, "tx_hash": "214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d", "tx_index": 116}',0); -INSERT INTO messages VALUES(91,310116,'insert','credits','{"action": "burn", "address": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx", "asset": "XCP", "block_index": 310116, "event": "27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9", "quantity": 92999030129}',0); -INSERT INTO messages VALUES(92,310116,'insert','burns','{"block_index": 310116, "burned": 62000000, "earned": 92999030129, "source": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx", "status": "valid", "tx_hash": "27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9", "tx_index": 117}',0); -INSERT INTO messages VALUES(93,310481,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310481, "event": "b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5", "quantity": 100000000}',0); -INSERT INTO messages VALUES(94,310481,'insert','credits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310481, "event": "b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5", "quantity": 100000000}',0); -INSERT INTO messages VALUES(95,310481,'insert','sends','{"asset": "XCP", "block_index": 310481, "destination": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "memo": "68656c6c6f", "quantity": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5", "tx_index": 482}',0); -INSERT INTO messages VALUES(96,310482,'insert','debits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310482, "event": "c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34", "quantity": 100000000}',0); -INSERT INTO messages VALUES(97,310482,'insert','credits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310482, "event": "c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34", "quantity": 100000000}',0); -INSERT INTO messages VALUES(98,310482,'insert','sends','{"asset": "XCP", "block_index": 310482, "destination": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "memo": "fade0001", "quantity": 100000000, "source": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "status": "valid", "tx_hash": "c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34", "tx_index": 483}',0); -INSERT INTO messages VALUES(99,310486,'insert','broadcasts','{"block_index": 310486, "fee_fraction_int": 5000000, "locked": false, "source": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "status": "valid", "text": "Unit Test", "timestamp": 1388000000, "tx_hash": "096883e142a87377d3a4103f4702556e25824f1e23667aceb1690f66e1417062", "tx_index": 487, "value": 1.0}',0); -INSERT INTO messages VALUES(100,310487,'insert','debits','{"action": "bet", "address": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "asset": "XCP", "block_index": 310487, "event": "2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275", "quantity": 9}',0); -INSERT INTO messages VALUES(101,310487,'insert','bets','{"bet_type": 1, "block_index": 310487, "counterwager_quantity": 9, "counterwager_remaining": 9, "deadline": 1388000001, "expiration": 100, "expire_index": 310587, "fee_fraction_int": 5000000.0, "feed_address": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "leverage": 5040, "source": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "status": "open", "target_value": 0.0, "tx_hash": "2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275", "tx_index": 488, "wager_quantity": 9, "wager_remaining": 9}',0); -INSERT INTO messages VALUES(102,310488,'insert','broadcasts','{"block_index": 310488, "fee_fraction_int": 0, "locked": false, "source": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "status": "valid", "text": "options 0", "timestamp": 1388000002, "tx_hash": "9b1cad827c97c463c2b39cc9d550693c438010ef85a10ee04d3db8699193e906", "tx_index": 489, "value": 1.0}',0); -INSERT INTO messages VALUES(103,310488,'insert','replace','{"address": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "block_index": 310488, "options": 0}',0); -INSERT INTO messages VALUES(104,310489,'insert','broadcasts','{"block_index": 310489, "fee_fraction_int": null, "locked": true, "source": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "status": "valid", "text": null, "timestamp": 0, "tx_hash": "9a39bade308462ec65be3c8420a0f2189b1d4e947d4c7950a37176de71de4f87", "tx_index": 490, "value": null}',0); -INSERT INTO messages VALUES(105,310490,'insert','broadcasts','{"block_index": 310490, "fee_fraction_int": 0, "locked": false, "source": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "status": "valid", "text": "options 1", "timestamp": 1388000004, "tx_hash": "4b233a74b9db14a8619ee8ec5558149e53ab033be31e803257f760aa9ef2f3b9", "tx_index": 491, "value": 1.0}',0); -INSERT INTO messages VALUES(106,310490,'insert','replace','{"address": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "block_index": 310490, "options": 1}',0); -INSERT INTO messages VALUES(107,310491,'insert','debits','{"action": "open order", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310491, "event": "9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09", "quantity": 100000000}',0); -INSERT INTO messages VALUES(108,310491,'insert','orders','{"block_index": 310491, "expiration": 2000, "expire_index": 312491, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 900000, "fee_required_remaining": 900000, "get_asset": "BTC", "get_quantity": 800000, "get_remaining": 800000, "give_asset": "XCP", "give_quantity": 100000000, "give_remaining": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "tx_hash": "9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09", "tx_index": 492}',0); -INSERT INTO messages VALUES(109,310492,'insert','orders','{"block_index": 310492, "expiration": 2000, "expire_index": 312492, "fee_provided": 1000000, "fee_provided_remaining": 1000000, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "BTC", "give_quantity": 800000, "give_remaining": 800000, "source": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "status": "open", "tx_hash": "2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4", "tx_index": 493}',0); -INSERT INTO messages VALUES(110,310492,'update','orders','{"fee_provided_remaining": 6800, "fee_required_remaining": 892800, "get_remaining": 0, "give_remaining": 0, "status": "open", "tx_hash": "9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09"}',0); -INSERT INTO messages VALUES(111,310492,'update','orders','{"fee_provided_remaining": 992800, "fee_required_remaining": 0, "get_remaining": 0, "give_remaining": 0, "status": "open", "tx_hash": "2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4"}',0); -INSERT INTO messages VALUES(112,310492,'insert','order_matches','{"backward_asset": "BTC", "backward_quantity": 800000, "block_index": 310492, "fee_paid": 7200, "forward_asset": "XCP", "forward_quantity": 100000000, "id": "9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09_2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4", "match_expire_index": 310512, "status": "pending", "tx0_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "tx0_block_index": 310491, "tx0_expiration": 2000, "tx0_hash": "9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09", "tx0_index": 492, "tx1_address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "tx1_block_index": 310492, "tx1_expiration": 2000, "tx1_hash": "2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4", "tx1_index": 493}',0); -INSERT INTO messages VALUES(113,310493,'insert','credits','{"action": "burn", "address": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "asset": "XCP", "block_index": 310493, "event": "c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a", "quantity": 92995878046}',0); -INSERT INTO messages VALUES(114,310493,'insert','burns','{"block_index": 310493, "burned": 62000000, "earned": 92995878046, "source": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "status": "valid", "tx_hash": "c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a", "tx_index": 494}',0); -INSERT INTO messages VALUES(115,310494,'insert','debits','{"action": "issuance fee", "address": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "asset": "XCP", "block_index": 310494, "event": "4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5", "quantity": 50000000}',0); -INSERT INTO messages VALUES(116,310494,'insert','issuances','{"asset": "DIVIDEND", "asset_longname": null, "block_index": 310494, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Test dividend", "divisible": true, "fee_paid": 50000000, "issuer": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "locked": false, "quantity": 100, "source": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "status": "valid", "transfer": false, "tx_hash": "4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5", "tx_index": 495}',0); -INSERT INTO messages VALUES(117,310494,'insert','credits','{"action": "issuance", "address": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "asset": "DIVIDEND", "block_index": 310494, "event": "4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5", "quantity": 100}',0); -INSERT INTO messages VALUES(118,310495,'insert','debits','{"action": "send", "address": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "asset": "DIVIDEND", "block_index": 310495, "event": "129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc", "quantity": 10}',0); -INSERT INTO messages VALUES(119,310495,'insert','credits','{"action": "send", "address": "mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj", "asset": "DIVIDEND", "block_index": 310495, "event": "129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc", "quantity": 10}',0); -INSERT INTO messages VALUES(120,310495,'insert','sends','{"asset": "DIVIDEND", "block_index": 310495, "destination": "mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj", "quantity": 10, "source": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "status": "valid", "tx_hash": "129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc", "tx_index": 496}',0); -INSERT INTO messages VALUES(121,310496,'insert','debits','{"action": "send", "address": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "asset": "XCP", "block_index": 310496, "event": "1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6", "quantity": 92945878046}',0); -INSERT INTO messages VALUES(122,310496,'insert','credits','{"action": "send", "address": "mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj", "asset": "XCP", "block_index": 310496, "event": "1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6", "quantity": 92945878046}',0); -INSERT INTO messages VALUES(123,310496,'insert','sends','{"asset": "XCP", "block_index": 310496, "destination": "mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj", "quantity": 92945878046, "source": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "status": "valid", "tx_hash": "1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6", "tx_index": 497}',0); -INSERT INTO messages VALUES(124,310497,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310497, "event": "076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f", "quantity": 50000000}',0); -INSERT INTO messages VALUES(125,310497,'insert','issuances','{"asset": "PARENT", "asset_longname": null, "block_index": 310497, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Parent asset", "divisible": true, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f", "tx_index": 498}',0); -INSERT INTO messages VALUES(126,310497,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "PARENT", "block_index": 310497, "event": "076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f", "quantity": 100000000}',0); -INSERT INTO messages VALUES(127,310498,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310498, "event": "0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf", "quantity": 25000000}',0); -INSERT INTO messages VALUES(128,310498,'insert','issuances','{"asset": "A95428956661682277", "asset_longname": "PARENT.already.issued", "block_index": 310498, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Child of parent", "divisible": true, "fee_paid": 25000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf", "tx_index": 499}',0); -INSERT INTO messages VALUES(129,310498,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "A95428956661682277", "block_index": 310498, "event": "0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf", "quantity": 100000000}',0); --- Triggers and indices on messages -CREATE INDEX block_index_message_index_idx ON messages (block_index, message_index); - --- Table order_expirations -DROP TABLE IF EXISTS order_expirations; -CREATE TABLE order_expirations( - order_index INTEGER PRIMARY KEY, - order_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (order_index, order_hash) REFERENCES orders(tx_index, tx_hash)); --- Triggers and indices on order_expirations -CREATE TRIGGER _order_expirations_delete BEFORE DELETE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_expirations(rowid,order_index,order_hash,source,block_index) VALUES('||old.rowid||','||quote(old.order_index)||','||quote(old.order_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_expirations_insert AFTER INSERT ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_expirations_update AFTER UPDATE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_expirations SET order_index='||quote(old.order_index)||',order_hash='||quote(old.order_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_match_expirations -DROP TABLE IF EXISTS order_match_expirations; -CREATE TABLE order_match_expirations( - order_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (order_match_id) REFERENCES order_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on order_match_expirations -CREATE TRIGGER _order_match_expirations_delete BEFORE DELETE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_match_expirations(rowid,order_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.order_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_match_expirations_insert AFTER INSERT ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_match_expirations_update AFTER UPDATE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_match_expirations SET order_match_id='||quote(old.order_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_matches -DROP TABLE IF EXISTS order_matches; -CREATE TABLE order_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - forward_asset TEXT, - forward_quantity INTEGER, - backward_asset TEXT, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO order_matches VALUES('9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09_2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4',492,'9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',493,'2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'BTC',800000,310491,310492,310492,2000,2000,310512,7200,'pending'); --- Triggers and indices on order_matches -CREATE TRIGGER _order_matches_delete BEFORE DELETE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,forward_asset,forward_quantity,backward_asset,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_paid,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.forward_asset)||','||quote(old.forward_quantity)||','||quote(old.backward_asset)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _order_matches_insert AFTER INSERT ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_matches_update AFTER UPDATE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',forward_asset='||quote(old.forward_asset)||',forward_quantity='||quote(old.forward_quantity)||',backward_asset='||quote(old.backward_asset)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX backward_status_idx ON order_matches (backward_asset, status); -CREATE INDEX forward_status_idx ON order_matches (forward_asset, status); -CREATE INDEX match_expire_idx ON order_matches (status, match_expire_index); -CREATE INDEX tx0_address_idx ON order_matches (tx0_address); -CREATE INDEX tx1_address_idx ON order_matches (tx1_address); - --- Table orders -DROP TABLE IF EXISTS orders; -CREATE TABLE orders( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - give_asset TEXT, - give_quantity INTEGER, - give_remaining INTEGER, - get_asset TEXT, - get_quantity INTEGER, - get_remaining INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_required INTEGER, - fee_required_remaining INTEGER, - fee_provided INTEGER, - fee_provided_remaining INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO orders VALUES(7,'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3',310006,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'DIVISIBLE',100000000,100000000,2000,312006,0,0,6800,6800,'open'); -INSERT INTO orders VALUES(10,'d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391',310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'DIVISIBLE',100000000,100000000,2000,312009,0,0,6800,6800,'open'); -INSERT INTO orders VALUES(11,'c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145',310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'BTC',1000000,1000000,2000,312010,900000,900000,6800,6800,'open'); -INSERT INTO orders VALUES(12,'601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e',310011,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BTC',666667,666667,'XCP',100000000,100000000,2000,312011,0,0,1000000,1000000,'open'); -INSERT INTO orders VALUES(492,'9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09',310491,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,0,'BTC',800000,0,2000,312491,900000,892800,6800,6800,'open'); -INSERT INTO orders VALUES(493,'2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4',310492,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BTC',800000,0,'XCP',100000000,0,2000,312492,0,0,1000000,992800,'open'); --- Triggers and indices on orders -CREATE TRIGGER _orders_delete BEFORE DELETE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO orders(rowid,tx_index,tx_hash,block_index,source,give_asset,give_quantity,give_remaining,get_asset,get_quantity,get_remaining,expiration,expire_index,fee_required,fee_required_remaining,fee_provided,fee_provided_remaining,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.give_asset)||','||quote(old.give_quantity)||','||quote(old.give_remaining)||','||quote(old.get_asset)||','||quote(old.get_quantity)||','||quote(old.get_remaining)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_required)||','||quote(old.fee_required_remaining)||','||quote(old.fee_provided)||','||quote(old.fee_provided_remaining)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _orders_insert AFTER INSERT ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM orders WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _orders_update AFTER UPDATE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE orders SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',give_asset='||quote(old.give_asset)||',give_quantity='||quote(old.give_quantity)||',give_remaining='||quote(old.give_remaining)||',get_asset='||quote(old.get_asset)||',get_quantity='||quote(old.get_quantity)||',get_remaining='||quote(old.get_remaining)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_required='||quote(old.fee_required)||',fee_required_remaining='||quote(old.fee_required_remaining)||',fee_provided='||quote(old.fee_provided)||',fee_provided_remaining='||quote(old.fee_provided_remaining)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX expire_idx ON orders (expire_index, status); -CREATE INDEX give_asset_idx ON orders (give_asset); -CREATE INDEX give_get_status_idx ON orders (get_asset, give_asset, status); -CREATE INDEX give_status_idx ON orders (give_asset, status); -CREATE INDEX source_give_status_idx ON orders (source, give_asset, status); - --- Table rps -DROP TABLE IF EXISTS rps; -CREATE TABLE rps( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - possible_moves INTEGER, - wager INTEGER, - move_random_hash TEXT, - expiration INTEGER, - expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); --- Triggers and indices on rps -CREATE TRIGGER _rps_delete BEFORE DELETE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps(rowid,tx_index,tx_hash,block_index,source,possible_moves,wager,move_random_hash,expiration,expire_index,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.possible_moves)||','||quote(old.wager)||','||quote(old.move_random_hash)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_insert AFTER INSERT ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_update AFTER UPDATE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',possible_moves='||quote(old.possible_moves)||',wager='||quote(old.wager)||',move_random_hash='||quote(old.move_random_hash)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX matching_idx ON rps (wager, possible_moves); - --- Table rps_expirations -DROP TABLE IF EXISTS rps_expirations; -CREATE TABLE rps_expirations( - rps_index INTEGER PRIMARY KEY, - rps_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (rps_index, rps_hash) REFERENCES rps(tx_index, tx_hash)); --- Triggers and indices on rps_expirations -CREATE TRIGGER _rps_expirations_delete BEFORE DELETE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_expirations(rowid,rps_index,rps_hash,source,block_index) VALUES('||old.rowid||','||quote(old.rps_index)||','||quote(old.rps_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_expirations_insert AFTER INSERT ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_expirations_update AFTER UPDATE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_expirations SET rps_index='||quote(old.rps_index)||',rps_hash='||quote(old.rps_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_match_expirations -DROP TABLE IF EXISTS rps_match_expirations; -CREATE TABLE rps_match_expirations( - rps_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (rps_match_id) REFERENCES rps_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on rps_match_expirations -CREATE TRIGGER _rps_match_expirations_delete BEFORE DELETE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_match_expirations(rowid,rps_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.rps_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_match_expirations_insert AFTER INSERT ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_match_expirations_update AFTER UPDATE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_match_expirations SET rps_match_id='||quote(old.rps_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_matches -DROP TABLE IF EXISTS rps_matches; -CREATE TABLE rps_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_move_random_hash TEXT, - tx1_move_random_hash TEXT, - wager INTEGER, - possible_moves INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rps_matches -CREATE TRIGGER _rps_matches_delete BEFORE DELETE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_move_random_hash,tx1_move_random_hash,wager,possible_moves,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_move_random_hash)||','||quote(old.tx1_move_random_hash)||','||quote(old.wager)||','||quote(old.possible_moves)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_matches_insert AFTER INSERT ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_matches_update AFTER UPDATE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_move_random_hash='||quote(old.tx0_move_random_hash)||',tx1_move_random_hash='||quote(old.tx1_move_random_hash)||',wager='||quote(old.wager)||',possible_moves='||quote(old.possible_moves)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_expire_idx ON rps_matches (status, match_expire_index); -CREATE INDEX rps_tx0_address_idx ON rps_matches (tx0_address); -CREATE INDEX rps_tx1_address_idx ON rps_matches (tx1_address); - --- Table rpsresolves -DROP TABLE IF EXISTS rpsresolves; -CREATE TABLE rpsresolves( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - move INTEGER, - random TEXT, - rps_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rpsresolves -CREATE TRIGGER _rpsresolves_delete BEFORE DELETE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rpsresolves(rowid,tx_index,tx_hash,block_index,source,move,random,rps_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.move)||','||quote(old.random)||','||quote(old.rps_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rpsresolves_insert AFTER INSERT ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rpsresolves WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rpsresolves_update AFTER UPDATE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rpsresolves SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',move='||quote(old.move)||',random='||quote(old.random)||',rps_match_id='||quote(old.rps_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_id_idx ON rpsresolves (rps_match_id); - --- Table sends -DROP TABLE IF EXISTS sends; -CREATE TABLE "sends"( - tx_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - quantity INTEGER, - status TEXT, - msg_index INTEGER DEFAULT 0, memo BLOB, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); -INSERT INTO sends VALUES(8,'95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef',310007,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000,'valid',0,NULL); -INSERT INTO sends VALUES(9,'8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc',310008,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'valid',0,NULL); -INSERT INTO sends VALUES(13,'1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568',310012,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000,'valid',0,NULL); -INSERT INTO sends VALUES(14,'62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd',310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000,'valid',0,NULL); -INSERT INTO sends VALUES(15,'9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba',310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5,'valid',0,NULL); -INSERT INTO sends VALUES(16,'62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4',310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10,'valid',0,NULL); -INSERT INTO sends VALUES(111,'f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481',310110,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000,'valid',0,NULL); -INSERT INTO sends VALUES(482,'b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5',310481,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'valid',0,X'68656C6C6F'); -INSERT INTO sends VALUES(483,'c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34',310482,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'valid',0,X'FADE0001'); -INSERT INTO sends VALUES(496,'129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc',310495,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10,'valid',0,NULL); -INSERT INTO sends VALUES(497,'1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6',310496,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046,'valid',0,NULL); --- Triggers and indices on sends -CREATE TRIGGER _sends_delete BEFORE DELETE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sends(rowid,tx_index,tx_hash,block_index,source,destination,asset,quantity,status,msg_index,memo) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.status)||','||quote(old.msg_index)||','||quote(old.memo)||')'); - END; -CREATE TRIGGER _sends_insert AFTER INSERT ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sends_update AFTER UPDATE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',status='||quote(old.status)||',msg_index='||quote(old.msg_index)||',memo='||quote(old.memo)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX destination_idx ON sends (destination); -CREATE INDEX memo_idx ON sends (memo); -CREATE INDEX source_idx ON sends (source); - --- Table sweeps -DROP TABLE IF EXISTS sweeps; -CREATE TABLE sweeps( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - flags INTEGER, - status TEXT, - memo BLOB, - fee_paid INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on sweeps -CREATE TRIGGER _sweeps_delete BEFORE DELETE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sweeps(rowid,tx_index,tx_hash,block_index,source,destination,flags,status,memo,fee_paid) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.flags)||','||quote(old.status)||','||quote(old.memo)||','||quote(old.fee_paid)||')'); - END; -CREATE TRIGGER _sweeps_insert AFTER INSERT ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sweeps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sweeps_update AFTER UPDATE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sweeps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',flags='||quote(old.flags)||',status='||quote(old.status)||',memo='||quote(old.memo)||',fee_paid='||quote(old.fee_paid)||' WHERE rowid='||old.rowid); - END; - --- Table transactions -DROP TABLE IF EXISTS transactions; -CREATE TABLE transactions( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - block_hash TEXT, - block_time INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - fee INTEGER, - data BLOB, - supported BOOL DEFAULT 1, - FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), - PRIMARY KEY (tx_index, tx_hash, block_index)); -INSERT INTO transactions VALUES(1,'6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); -INSERT INTO transactions VALUES(2,'9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'00000014000000A25BE34B66000000174876E800010000000000000000000F446976697369626C65206173736574',1); -INSERT INTO transactions VALUES(3,'2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'000000140006CAD8DC7F0B6600000000000003E800000000000000000000124E6F20646976697369626C65206173736574',1); -INSERT INTO transactions VALUES(4,'4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001400000003C58E5C5600000000000003E8010000000000000000000E43616C6C61626C65206173736574',1); -INSERT INTO transactions VALUES(5,'e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001400000000082C82E300000000000003E8010000000000000000000C4C6F636B6564206173736574',1); -INSERT INTO transactions VALUES(6,'1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001400000000082C82E3000000000000000001000000000000000000044C4F434B',1); -INSERT INTO transactions VALUES(7,'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000A25BE34B660000000005F5E10007D00000000000000000',1); -INSERT INTO transactions VALUES(8,'95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'00000000000000A25BE34B660000000005F5E100',1); -INSERT INTO transactions VALUES(9,'8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'0000000000000000000000010000000005F5E100',1); -INSERT INTO transactions VALUES(10,'d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000A25BE34B660000000005F5E10007D00000000000000000',1); -INSERT INTO transactions VALUES(11,'c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000000000000000000000000F424007D000000000000DBBA0',1); -INSERT INTO transactions VALUES(12,'601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,1000000,X'0000000A000000000000000000000000000A2C2B00000000000000010000000005F5E10007D00000000000000000',1); -INSERT INTO transactions VALUES(13,'1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'0000000000000000000000010000000011E1A300',1); -INSERT INTO transactions VALUES(14,'62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000000000000A25BE34B66000000003B9ACA00',1); -INSERT INTO transactions VALUES(15,'9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'000000000006CAD8DC7F0B660000000000000005',1); -INSERT INTO transactions VALUES(16,'62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'000000000006CAD8DC7F0B66000000000000000A',1); -INSERT INTO transactions VALUES(17,'19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'000000140000000000033A3E7FFFFFFFFFFFFFFF01000000000000000000104D6178696D756D207175616E74697479',1); -INSERT INTO transactions VALUES(18,'3330c302fd75cb6b9e4d08ccc8821fee8f6f88c8a42123386941193813653c7a',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB33003FF0000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(19,'a9d599c0f1669b071bf107f7e90f88fe692d56ca00b81e57c71a56530590e7ee',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','',0,6800,X'0000001E4CC552003FF000000000000000000000046C6F636B',1); -INSERT INTO transactions VALUES(20,'c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000152BB3301000000000000000900000000000000090000000000000000000013B000000064',1); -INSERT INTO transactions VALUES(21,'acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000052BB3301000000000000000900000000000000090000000000000000000013B000000064',1); -INSERT INTO transactions VALUES(102,'aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305',310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000352BB33C8000000000000000A000000000000000A0000000000000000000013B0000003E8',1); -INSERT INTO transactions VALUES(103,'8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8',310102,'11e25883fd0479b78ddb1953ef67e3c3d1ffc82bd1f9e918a75c2194f7137f99',310102000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB33023FF0000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(104,'65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b',310103,'559a208afea6dd27b8bfeb031f1bd8f57182dcab6cf55c4089a6c49fb4744f17',310103000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,-99994375,X'',1); -INSERT INTO transactions VALUES(105,'95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff',310104,'55b82e631b61d22a8524981ff3b5e3ab4ad7b732b7d1a06191064334b8f2dfd2',310104000,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,-99994375,X'',1); -INSERT INTO transactions VALUES(106,'e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa',310105,'1d72cdf6c4a02a5f973e6eaa53c28e9e13014b4f5bb13f91621a911b27fe936a',310105000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,-99994375,X'',1); -INSERT INTO transactions VALUES(107,'bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3',310106,'9d39cbe8c8a5357fc56e5c2f95bf132382ddad14cbc8abd54e549d58248140ff',310106000,'mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','mvCounterpartyXXXXXXXXXXXXXXW24Hef',10000,5625,X'',1); -INSERT INTO transactions VALUES(108,'9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec',310107,'51cc04005e49fa49e661946a0e147240b0e5aac174252c96481ab7ddd5487435',310107000,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','',0,6150,X'0000000C000000000000000100000000000000640000000000000064000000000000006400',1); -INSERT INTO transactions VALUES(109,'93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73',310108,'8f2d3861aa42f8e75dc14a23d6046bd89feef0d81996b6e1adc2a2828fbc8b34',310108000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','mvCounterpartyXXXXXXXXXXXXXXW24Hef',31000000,5625,X'',1); -INSERT INTO transactions VALUES(110,'ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e',310109,'d23aaaae55e6a912eaaa8d20fe2a9ad4819fe9dc1ed58977265af58fad89d8f9',310109000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','',0,6800,X'0000001400078A8FE2E5E44100000000000003E8000000000000000000001050534820697373756564206173736574',1); -INSERT INTO transactions VALUES(111,'f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481',310110,'cecc8e4791bd3081995bd9fd67acb6b97415facfd2b68f926a70b22d9a258382',310110000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',5430,7650,X'00000000000000A25BE34B660000000005F5E100',1); -INSERT INTO transactions VALUES(112,'510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186',310111,'fde71b9756d5ba0b6d8b230ee885af01f9c4461a55dbde8678279166a21b20ae',310111000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','',0,5975,X'0000001E52BB33023FF0000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(113,'d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048',310112,'5b06f69bfdde1083785cf68ebc2211b464839033c30a099d3227b490bf3ab251',310112000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',5430,7124,X'00000028000352BB33C8000000000000000A000000000000000A0000000000000000000013B0000003E8',1); -INSERT INTO transactions VALUES(114,'5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9',310113,'63914cf376d3076b697b9234810dfc084ed5a885d5cd188dd5462560da25d5e7',310113000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'00000014000038FEDF6D2C6900000000000003E8010000000000000000000C4C6F636B6564206173736574',1); -INSERT INTO transactions VALUES(115,'74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe',310114,'24fc2dded4f811eff58b32cda85d90fb5773e81b9267e9a03c359bc730d82283',310114000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'00000014000038FEDF6D2C69000000000000000001000000000000000000044C4F434B',1); -INSERT INTO transactions VALUES(116,'214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d',310115,'a632d67ff5f832fe9c3c675f855f08a4969c6d78c0211e71b2a24fe04be5656a',310115000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'00000014000038FEDF6D2C69000000000000000001000000000000000000076368616E676564',1); -INSERT INTO transactions VALUES(117,'27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9',310116,'8495ba36b331473c4f3529681a118a4cc4fa4d51cd9b8dccb1f13e5ef841dd84',310116000,'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); -INSERT INTO transactions VALUES(482,'b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5',310481,'db37d8f98630ebc61767736ae2c523e4e930095bf54259c01de4d36fd60b6f4a',310481000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6375,X'0000000200000000000000010000000005F5E1006F8D6AE8A3B381663118B4E1EFF4CFC7D0954DD6EC68656C6C6F',1); -INSERT INTO transactions VALUES(483,'c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34',310482,'2e27db87dfb6439c006637734e876cc662d1ca74c717756f90f0e535df0787d6',310482000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','',0,6350,X'0000000200000000000000010000000005F5E1006F4838D8B3588C4C7BA7C1D06F866E9B3739C63037FADE0001',1); -INSERT INTO transactions VALUES(487,'096883e142a87377d3a4103f4702556e25824f1e23667aceb1690f66e1417062',310486,'d4fbe610cc60987f2d1d35c7d8ad3ce32156ee5fe36ef8cc4f08b46836388862',310486000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','',0,6800,X'0000001E52BB33003FF0000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(488,'2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275',310487,'32aa1b132d0643350bbb62dbd5f38ae0c270d8f491a2012c83b99158d58e464f',310487000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',5430,7650,X'00000028000152BB3301000000000000000900000000000000090000000000000000000013B000000064',1); -INSERT INTO transactions VALUES(489,'9b1cad827c97c463c2b39cc9d550693c438010ef85a10ee04d3db8699193e906',310488,'80b8dd5d7ce2e4886e6721095b892a39fb699980fe2bc1c17e747f822f4c4b1b',310488000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','',0,6800,X'0000001E52BB33023FF000000000000000000000096F7074696F6E732030',1); -INSERT INTO transactions VALUES(490,'9a39bade308462ec65be3c8420a0f2189b1d4e947d4c7950a37176de71de4f87',310489,'2efdb36f986b3e3ccc6cc9b0c1c3cdcb07429fb43cbc0cc3b6c87d1b33f258b6',310489000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','',0,6800,X'0000001E52BB33033FF000000000000000000000046C6F636B',1); -INSERT INTO transactions VALUES(491,'4b233a74b9db14a8619ee8ec5558149e53ab033be31e803257f760aa9ef2f3b9',310490,'e2cb04b8a7368c95359c9d5ff33e64209200fb606de0d64b7c0f67bb1cb8d87c',310490000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'0000001E52BB33043FF000000000000000000000096F7074696F6E732031',1); -INSERT INTO transactions VALUES(492,'9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09',310491,'811abd7cf2b768cfdaa84ab44c63f4463c96a368ead52125bf149cf0c7447b16',310491000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000000000000000000000000C350007D000000000000DBBA0',1); -INSERT INTO transactions VALUES(493,'2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4',310492,'8a09b2faf0a7ad67eb4ab5c948b9769fc87eb2ec5e16108f2cde8bd9e6cf7607',310492000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','',0,1000000,X'0000000A000000000000000000000000000C350000000000000000010000000005F5E10007D00000000000000000',1); -INSERT INTO transactions VALUES(494,'c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a',310493,'c19e2915b750279b2be4b52e57e5ce29f63dffb4e14d9aad30c9e820affc0cbf',310493000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); -INSERT INTO transactions VALUES(495,'4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5',310494,'7dda1d3e12785313d5651ee5314d0aecf17588196f9150b10c55695dbaebee5d',310494000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','',0,6800,X'00000014000000063E985FFD0000000000000064010000000000000000000D54657374206469766964656E64',1); -INSERT INTO transactions VALUES(496,'129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc',310495,'4769aa7030f28a05a137a85ef4ee0c1765c37013773212b93ec90f1227168b67',310495000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj',5430,7650,X'00000000000000063E985FFD000000000000000A',1); -INSERT INTO transactions VALUES(497,'1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6',310496,'65884816927e8c566655e85c07bc2bc2c7ee26e625742f219939d43238fb31f8',310496000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj',5430,7650,X'00000000000000000000000100000015A4018C1E',1); -INSERT INTO transactions VALUES(498,'076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f',310497,'f1118591fe79b8bf52ccf0c5de9826bfd266b1fdc24b44676cf22bbcc76d464e',310497000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6300,X'00000014000000000AA4097D0000000005F5E100010000000000000000000C506172656E74206173736574',1); -INSERT INTO transactions VALUES(499,'0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf',310498,'b7058b6d1ddc325a10bf33144937e06ce6025215b416518ae120da9440ae279e',310498000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6550,X'0000001501530821671B10650000000005F5E10001108E90A57DBA9967C422E83080F22F0C684368696C64206F6620706172656E74',1); --- Triggers and indices on transactions -CREATE INDEX index_hash_index_idx ON transactions (tx_index, tx_hash, block_index); -CREATE INDEX index_index_idx ON transactions (block_index, tx_index); -CREATE INDEX tx_hash_idx ON transactions (tx_hash); -CREATE INDEX tx_index_idx ON transactions (tx_index); - --- Table undolog -DROP TABLE IF EXISTS undolog; -CREATE TABLE undolog( - undo_index INTEGER PRIMARY KEY AUTOINCREMENT, - sql TEXT); -INSERT INTO undolog VALUES(152,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92050000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(153,'DELETE FROM debits WHERE rowid=26'); -INSERT INTO undolog VALUES(154,'UPDATE balances SET address=''mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'',asset=''XCP'',quantity=99999990 WHERE rowid=7'); -INSERT INTO undolog VALUES(155,'DELETE FROM credits WHERE rowid=27'); -INSERT INTO undolog VALUES(156,'DELETE FROM sends WHERE rowid=8'); -INSERT INTO undolog VALUES(157,'UPDATE balances SET address=''mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'',asset=''XCP'',quantity=199999990 WHERE rowid=7'); -INSERT INTO undolog VALUES(158,'DELETE FROM debits WHERE rowid=27'); -INSERT INTO undolog VALUES(159,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=91950000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(160,'DELETE FROM credits WHERE rowid=28'); -INSERT INTO undolog VALUES(161,'DELETE FROM sends WHERE rowid=9'); -INSERT INTO undolog VALUES(162,'DELETE FROM broadcasts WHERE rowid=487'); -INSERT INTO undolog VALUES(163,'UPDATE balances SET address=''myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM'',asset=''XCP'',quantity=92999138821 WHERE rowid=13'); -INSERT INTO undolog VALUES(164,'DELETE FROM debits WHERE rowid=28'); -INSERT INTO undolog VALUES(165,'DELETE FROM bets WHERE rowid=5'); -INSERT INTO undolog VALUES(166,'DELETE FROM broadcasts WHERE rowid=489'); -INSERT INTO undolog VALUES(167,'DELETE FROM addresses WHERE rowid=1'); -INSERT INTO undolog VALUES(168,'DELETE FROM broadcasts WHERE rowid=490'); -INSERT INTO undolog VALUES(169,'DELETE FROM broadcasts WHERE rowid=491'); -INSERT INTO undolog VALUES(170,'DELETE FROM addresses WHERE rowid=2'); -INSERT INTO undolog VALUES(171,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92050000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(172,'DELETE FROM debits WHERE rowid=29'); -INSERT INTO undolog VALUES(173,'DELETE FROM orders WHERE rowid=5'); -INSERT INTO undolog VALUES(174,'DELETE FROM orders WHERE rowid=6'); -INSERT INTO undolog VALUES(175,'UPDATE orders SET tx_index=492,tx_hash=''9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09'',block_index=310491,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',give_asset=''XCP'',give_quantity=100000000,give_remaining=100000000,get_asset=''BTC'',get_quantity=800000,get_remaining=800000,expiration=2000,expire_index=312491,fee_required=900000,fee_required_remaining=900000,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=5'); -INSERT INTO undolog VALUES(176,'UPDATE orders SET tx_index=493,tx_hash=''2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4'',block_index=310492,source=''mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'',give_asset=''BTC'',give_quantity=800000,give_remaining=800000,get_asset=''XCP'',get_quantity=100000000,get_remaining=100000000,expiration=2000,expire_index=312492,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=1000000,status=''open'' WHERE rowid=6'); -INSERT INTO undolog VALUES(177,'DELETE FROM order_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(178,'DELETE FROM balances WHERE rowid=22'); -INSERT INTO undolog VALUES(179,'DELETE FROM credits WHERE rowid=29'); -INSERT INTO undolog VALUES(180,'DELETE FROM burns WHERE rowid=494'); -INSERT INTO undolog VALUES(181,'UPDATE balances SET address=''mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH'',asset=''XCP'',quantity=92995878046 WHERE rowid=22'); -INSERT INTO undolog VALUES(182,'DELETE FROM debits WHERE rowid=30'); -INSERT INTO undolog VALUES(183,'DELETE FROM assets WHERE rowid=10'); -INSERT INTO undolog VALUES(184,'DELETE FROM issuances WHERE rowid=11'); -INSERT INTO undolog VALUES(185,'DELETE FROM balances WHERE rowid=23'); -INSERT INTO undolog VALUES(186,'DELETE FROM credits WHERE rowid=30'); -INSERT INTO undolog VALUES(187,'UPDATE balances SET address=''mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH'',asset=''DIVIDEND'',quantity=100 WHERE rowid=23'); -INSERT INTO undolog VALUES(188,'DELETE FROM debits WHERE rowid=31'); -INSERT INTO undolog VALUES(189,'DELETE FROM balances WHERE rowid=24'); -INSERT INTO undolog VALUES(190,'DELETE FROM credits WHERE rowid=31'); -INSERT INTO undolog VALUES(191,'DELETE FROM sends WHERE rowid=10'); -INSERT INTO undolog VALUES(192,'UPDATE balances SET address=''mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH'',asset=''XCP'',quantity=92945878046 WHERE rowid=22'); -INSERT INTO undolog VALUES(193,'DELETE FROM debits WHERE rowid=32'); -INSERT INTO undolog VALUES(194,'DELETE FROM balances WHERE rowid=25'); -INSERT INTO undolog VALUES(195,'DELETE FROM credits WHERE rowid=32'); -INSERT INTO undolog VALUES(196,'DELETE FROM sends WHERE rowid=11'); -INSERT INTO undolog VALUES(197,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=91950000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(198,'DELETE FROM debits WHERE rowid=33'); -INSERT INTO undolog VALUES(199,'DELETE FROM assets WHERE rowid=11'); -INSERT INTO undolog VALUES(200,'DELETE FROM issuances WHERE rowid=12'); -INSERT INTO undolog VALUES(201,'DELETE FROM balances WHERE rowid=26'); -INSERT INTO undolog VALUES(202,'DELETE FROM credits WHERE rowid=33'); -INSERT INTO undolog VALUES(203,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=91900000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(204,'DELETE FROM debits WHERE rowid=34'); -INSERT INTO undolog VALUES(205,'DELETE FROM assets WHERE rowid=12'); -INSERT INTO undolog VALUES(206,'DELETE FROM issuances WHERE rowid=13'); -INSERT INTO undolog VALUES(207,'DELETE FROM balances WHERE rowid=27'); -INSERT INTO undolog VALUES(208,'DELETE FROM credits WHERE rowid=34'); - --- Table undolog_block -DROP TABLE IF EXISTS undolog_block; -CREATE TABLE undolog_block( - block_index INTEGER PRIMARY KEY, - first_undo_index INTEGER); -INSERT INTO undolog_block VALUES(310400,152); -INSERT INTO undolog_block VALUES(310401,152); -INSERT INTO undolog_block VALUES(310402,152); -INSERT INTO undolog_block VALUES(310403,152); -INSERT INTO undolog_block VALUES(310404,152); -INSERT INTO undolog_block VALUES(310405,152); -INSERT INTO undolog_block VALUES(310406,152); -INSERT INTO undolog_block VALUES(310407,152); -INSERT INTO undolog_block VALUES(310408,152); -INSERT INTO undolog_block VALUES(310409,152); -INSERT INTO undolog_block VALUES(310410,152); -INSERT INTO undolog_block VALUES(310411,152); -INSERT INTO undolog_block VALUES(310412,152); -INSERT INTO undolog_block VALUES(310413,152); -INSERT INTO undolog_block VALUES(310414,152); -INSERT INTO undolog_block VALUES(310415,152); -INSERT INTO undolog_block VALUES(310416,152); -INSERT INTO undolog_block VALUES(310417,152); -INSERT INTO undolog_block VALUES(310418,152); -INSERT INTO undolog_block VALUES(310419,152); -INSERT INTO undolog_block VALUES(310420,152); -INSERT INTO undolog_block VALUES(310421,152); -INSERT INTO undolog_block VALUES(310422,152); -INSERT INTO undolog_block VALUES(310423,152); -INSERT INTO undolog_block VALUES(310424,152); -INSERT INTO undolog_block VALUES(310425,152); -INSERT INTO undolog_block VALUES(310426,152); -INSERT INTO undolog_block VALUES(310427,152); -INSERT INTO undolog_block VALUES(310428,152); -INSERT INTO undolog_block VALUES(310429,152); -INSERT INTO undolog_block VALUES(310430,152); -INSERT INTO undolog_block VALUES(310431,152); -INSERT INTO undolog_block VALUES(310432,152); -INSERT INTO undolog_block VALUES(310433,152); -INSERT INTO undolog_block VALUES(310434,152); -INSERT INTO undolog_block VALUES(310435,152); -INSERT INTO undolog_block VALUES(310436,152); -INSERT INTO undolog_block VALUES(310437,152); -INSERT INTO undolog_block VALUES(310438,152); -INSERT INTO undolog_block VALUES(310439,152); -INSERT INTO undolog_block VALUES(310440,152); -INSERT INTO undolog_block VALUES(310441,152); -INSERT INTO undolog_block VALUES(310442,152); -INSERT INTO undolog_block VALUES(310443,152); -INSERT INTO undolog_block VALUES(310444,152); -INSERT INTO undolog_block VALUES(310445,152); -INSERT INTO undolog_block VALUES(310446,152); -INSERT INTO undolog_block VALUES(310447,152); -INSERT INTO undolog_block VALUES(310448,152); -INSERT INTO undolog_block VALUES(310449,152); -INSERT INTO undolog_block VALUES(310450,152); -INSERT INTO undolog_block VALUES(310451,152); -INSERT INTO undolog_block VALUES(310452,152); -INSERT INTO undolog_block VALUES(310453,152); -INSERT INTO undolog_block VALUES(310454,152); -INSERT INTO undolog_block VALUES(310455,152); -INSERT INTO undolog_block VALUES(310456,152); -INSERT INTO undolog_block VALUES(310457,152); -INSERT INTO undolog_block VALUES(310458,152); -INSERT INTO undolog_block VALUES(310459,152); -INSERT INTO undolog_block VALUES(310460,152); -INSERT INTO undolog_block VALUES(310461,152); -INSERT INTO undolog_block VALUES(310462,152); -INSERT INTO undolog_block VALUES(310463,152); -INSERT INTO undolog_block VALUES(310464,152); -INSERT INTO undolog_block VALUES(310465,152); -INSERT INTO undolog_block VALUES(310466,152); -INSERT INTO undolog_block VALUES(310467,152); -INSERT INTO undolog_block VALUES(310468,152); -INSERT INTO undolog_block VALUES(310469,152); -INSERT INTO undolog_block VALUES(310470,152); -INSERT INTO undolog_block VALUES(310471,152); -INSERT INTO undolog_block VALUES(310472,152); -INSERT INTO undolog_block VALUES(310473,152); -INSERT INTO undolog_block VALUES(310474,152); -INSERT INTO undolog_block VALUES(310475,152); -INSERT INTO undolog_block VALUES(310476,152); -INSERT INTO undolog_block VALUES(310477,152); -INSERT INTO undolog_block VALUES(310478,152); -INSERT INTO undolog_block VALUES(310479,152); -INSERT INTO undolog_block VALUES(310480,152); -INSERT INTO undolog_block VALUES(310481,152); -INSERT INTO undolog_block VALUES(310482,157); -INSERT INTO undolog_block VALUES(310483,162); -INSERT INTO undolog_block VALUES(310484,162); -INSERT INTO undolog_block VALUES(310485,162); -INSERT INTO undolog_block VALUES(310486,162); -INSERT INTO undolog_block VALUES(310487,163); -INSERT INTO undolog_block VALUES(310488,166); -INSERT INTO undolog_block VALUES(310489,168); -INSERT INTO undolog_block VALUES(310490,169); -INSERT INTO undolog_block VALUES(310491,171); -INSERT INTO undolog_block VALUES(310492,174); -INSERT INTO undolog_block VALUES(310493,178); -INSERT INTO undolog_block VALUES(310494,181); -INSERT INTO undolog_block VALUES(310495,187); -INSERT INTO undolog_block VALUES(310496,192); -INSERT INTO undolog_block VALUES(310497,197); -INSERT INTO undolog_block VALUES(310498,203); -INSERT INTO undolog_block VALUES(310499,209); -INSERT INTO undolog_block VALUES(310500,209); - --- For primary key autoincrements the next id to use is stored in --- sqlite_sequence -DELETE FROM main.sqlite_sequence WHERE name='undolog'; -INSERT INTO main.sqlite_sequence VALUES ('undolog', 208); - -COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/simplesig.log b/counterpartylib/test/fixtures/scenarios/simplesig.log deleted file mode 100644 index 413b5a8764..0000000000 --- a/counterpartylib/test/fixtures/scenarios/simplesig.log +++ /dev/null @@ -1,258 +0,0 @@ -Creating connection to `:memory:`. -Checking database integrity. -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.99909140; txid: ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1; vout: 0; confirmations: 75'] -Fee/KB 0.00025000 -New input: amount: 1.99909140; txid: ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1; vout: 0; confirmations: 75 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 1.37903515 BTC -Credit: 930.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #burn# <6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597> -Burn: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc burned 0.62 BTC for 930.0 XCP (6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37903515; txid: 6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37903515; txid: 6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.37882635 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# -Credit: 0.5 XCP to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# -Send: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (e535051ed7386995cc9152ea2d403f8460a59a5d084d4443158e466d743b3d63) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37882635; txid: e535051ed7386995cc9152ea2d403f8460a59a5d084d4443158e466d743b3d63; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37882635; txid: e535051ed7386995cc9152ea2d403f8460a59a5d084d4443158e466d743b3d63; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 1000000 -Size: 272 Fee: 0.01000000 Change quantity: 1.36874835 BTC -Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered 0.5 BTC for 1.0 XCP in 10 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379) [open] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36874835; txid: 507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36874835; txid: 507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.36860235 BTC -Debit: 1.05 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #open order# <178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424> -Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered 1.05 XCP for 0.5 BTC in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424) [open] -Considering: 507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379 -Tx0 Price: 2.0; Tx1 Inverse Price: 2.1 -Potential forward quantities: 50000000, 52500000 -Forward Quantity: 50000000 -Backward Quantity: 100000000 -Tx0 fee provided remaining: 0.01; required fee: 0.00857142 -Order Match: 0.5 BTC for 1.0 XCP (507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379_178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424) [pending] -Order match has only -10 confirmation(s). -data_btc_out=15600 (data_value=7800 len(data_array)=2) -Sorted candidate UTXOs: ['amount: 1.36860235; txid: 178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36860235; txid: 178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 387 final_fee 9675 -Size: 387 Fee: 0.00009675 Change quantity: 0.86834960 BTC -Credit: 1.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #btcpay# <6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82> -Database: set status of order_match 507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379_178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424 to completed. -BTC Payment: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc paid 0.5 BTC to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc for order match 507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379_178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424 (6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86834960; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 3; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.86834960; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 3; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.86820360 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <22c284e49ded9ee4c668a675f1eaf32925992911384db539cfef1b3784ea7cd6> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 10.0 of divisible asset BBBB (22c284e49ded9ee4c668a675f1eaf32925992911384db539cfef1b3784ea7cd6) [valid] -Credit: 10.0 BBBB to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <22c284e49ded9ee4c668a675f1eaf32925992911384db539cfef1b3784ea7cd6> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86820360; txid: 22c284e49ded9ee4c668a675f1eaf32925992911384db539cfef1b3784ea7cd6; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 2'] -Fee/KB 0.00025000 -New input: amount: 0.86820360; txid: 22c284e49ded9ee4c668a675f1eaf32925992911384db539cfef1b3784ea7cd6; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.86805760 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <21fe775c51dee2527cbafa7d5231a22ae988f7428563c2bbaad3692b65a32e28> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 100000 of indivisible asset BBBC (21fe775c51dee2527cbafa7d5231a22ae988f7428563c2bbaad3692b65a32e28) [valid] -Credit: 100000 BBBC to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <21fe775c51dee2527cbafa7d5231a22ae988f7428563c2bbaad3692b65a32e28> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86805760; txid: 21fe775c51dee2527cbafa7d5231a22ae988f7428563c2bbaad3692b65a32e28; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 3'] -Fee/KB 0.00025000 -New input: amount: 0.86805760; txid: 21fe775c51dee2527cbafa7d5231a22ae988f7428563c2bbaad3692b65a32e28; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.86784880 BTC -Debit: 0.04 BBBB from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <611bd2d4fd7dae2282e00873249574cd435052cb274fe70ec9b96a1549d78042> -Credit: 0.04 BBBB to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# <611bd2d4fd7dae2282e00873249574cd435052cb274fe70ec9b96a1549d78042> -Send: 0.04 BBBB from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (611bd2d4fd7dae2282e00873249574cd435052cb274fe70ec9b96a1549d78042) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86784880; txid: 611bd2d4fd7dae2282e00873249574cd435052cb274fe70ec9b96a1549d78042; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 4'] -Fee/KB 0.00025000 -New input: amount: 0.86784880; txid: 611bd2d4fd7dae2282e00873249574cd435052cb274fe70ec9b96a1549d78042; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.86764000 BTC -Debit: 526 BBBC from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <2f40b6b1c699c15fd194fa30a003dcf2a2a4421a92aece4e5a5ee9c4b475d43d> -Credit: 526 BBBC to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# <2f40b6b1c699c15fd194fa30a003dcf2a2a4421a92aece4e5a5ee9c4b475d43d> -Send: 526 BBBC from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (2f40b6b1c699c15fd194fa30a003dcf2a2a4421a92aece4e5a5ee9c4b475d43d) [valid] -Total quantity to be distributed in dividends: 0.00000024 XCP -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86764000; txid: 2f40b6b1c699c15fd194fa30a003dcf2a2a4421a92aece4e5a5ee9c4b475d43d; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 5'] -Fee/KB 0.00025000 -New input: amount: 0.86764000; txid: 2f40b6b1c699c15fd194fa30a003dcf2a2a4421a92aece4e5a5ee9c4b475d43d; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.86749400 BTC -Debit: 0.00000024 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #dividend# <8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e> -Debit: 0.0002 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #dividend fee# <8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e> -Credit: 0.00000024 XCP to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #dividend# <8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e> -Dividend: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc paid 0.000006 XCP per unit of BBBB (8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e) [valid] -Total quantity to be distributed in dividends: 0.004208 XCP -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86749400; txid: 8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 6'] -Fee/KB 0.00025000 -New input: amount: 0.86749400; txid: 8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.86734800 BTC -Debit: 0.004208 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #dividend# <1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b> -Debit: 0.0002 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #dividend fee# <1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b> -Credit: 0.004208 XCP to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #dividend# <1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b> -Dividend: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc paid 0.000008 XCP per unit of BBBC (1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86734800; txid: 1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 7'] -Fee/KB 0.00025000 -New input: amount: 0.86734800; txid: 1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.86720200 BTC -Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:20 with a fee of 99.999999%% (6b219449c3c41b313c6f681d44438af8a5bff98e234f79513f8379550a4cc691) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86720200; txid: 6b219449c3c41b313c6f681d44438af8a5bff98e234f79513f8379550a4cc691; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 8'] -Fee/KB 0.00025000 -New input: amount: 0.86720200; txid: 6b219449c3c41b313c6f681d44438af8a5bff98e234f79513f8379550a4cc691; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.86699320 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet# <72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64> -Bet: 0.5 XCP against 0.25 XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86699320; txid: 72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 9'] -Fee/KB 0.00025000 -New input: amount: 0.86699320; txid: 72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.86678440 BTC -Expired order: 507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379 -Debit: 0.25 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet# -Bet: 0.25 XCP against 0.415 XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc -Considering: 72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64 -Tx0 Inverse Odds: 0.5; Tx1 Odds: 0.6024096385542169 -Potential forward quantities: 50000000, 41500000 -Forward Quantity: 41500000 -Backward Quantity: 20750000 -Credit: 0.0425 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #filled# -Bet Match: BullCFD for 0.415 XCP against BearCFD for 0.2075 XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:35:00 that 0.0 value, leveraged 3.0x (72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64_d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86678440; txid: d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 10'] -Fee/KB 0.00025000 -New input: amount: 0.86678440; txid: d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.86657560 BTC -Credit: 0.05 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #cancel order# <178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424> -Expired order: 178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424 -Debit: 1.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet# -Bet: 1.5 XCP against 3.5 XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86657560; txid: f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 11'] -Fee/KB 0.00025000 -New input: amount: 0.86657560; txid: f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.86636680 BTC -Debit: 3.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet# -Bet: 3.5 XCP against 1.5 XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc -Considering: 72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64 -Skipping: leverages disagree. -Considering: f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93 -Tx0 Inverse Odds: 2.3333333333333335; Tx1 Odds: 2.3333333333333335 -Potential forward quantities: 150000000, 150000000 -Forward Quantity: 150000000 -Backward Quantity: 350000000 -Credit: 0.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #filled# -Credit: 0.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #filled# -Bet Match: BullCFD for 1.5 XCP against BearCFD for 3.5 XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:35:00 that 0.0 value, leveraged 1.0x (f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93_c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86636680; txid: c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 12'] -Fee/KB 0.00025000 -New input: amount: 0.86636680; txid: c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.86615800 BTC -Debit: 7.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet# -Bet: 7.5 XCP against 6.5 XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86615800; txid: a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 13'] -Fee/KB 0.00025000 -New input: amount: 0.86615800; txid: a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.86594920 BTC -Debit: 6.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet# <622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3> -Bet: 6.5 XCP against 7.5 XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc -Considering: a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab -Tx0 Inverse Odds: 0.8666666666666667; Tx1 Odds: 0.8666666666666667 -Potential forward quantities: 750000000, 750000000 -Forward Quantity: 750000000 -Backward Quantity: 650000000 -Credit: 0.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #filled# <622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3> -Credit: 0.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #filled# <622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3> -Bet Match: Equal for 7.5 XCP against NotEqual for 6.5 XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:36:40 that 1.0 value, leveraged 1.0x (a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab_622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86594920; txid: 622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3; vout: 2; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 14'] -Fee/KB 0.00025000 -New input: amount: 0.86594920; txid: 622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.86580320 BTC -Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:34:10 with a fee of 5.0%% (4184216d2afb9be606bd8b5a08ab19c50f4b274c962cf30a3985094f7444f548) [valid] -Credit: 0.591375 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet settled: liquidated for bear# <4184216d2afb9be606bd8b5a08ab19c50f4b274c962cf30a3985094f7444f548> -Credit: 0.031125 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #feed fee# <4184216d2afb9be606bd8b5a08ab19c50f4b274c962cf30a3985094f7444f548> -Bet Match Force‐Liquidated: 0.0 XCP credited to the bull, 0.591375 XCP credited to the bear, and 0.031125 XCP credited to the feed address (72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64_d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda) -Database: set status of bet_match 72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64_d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda to settled: liquidated for bear. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86580320; txid: 4184216d2afb9be606bd8b5a08ab19c50f4b274c962cf30a3985094f7444f548; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 15'] -Fee/KB 0.00025000 -New input: amount: 0.86580320; txid: 4184216d2afb9be606bd8b5a08ab19c50f4b274c962cf30a3985094f7444f548; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.86565720 BTC -Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:35:01 with a fee of 5.0%% (81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d) [valid] -Credit: 1.593 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet settled# <81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d> -Credit: 3.157 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet settled# <81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d> -Credit: 0.25 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #feed fee# <81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d> -Bet Match Settled: 1.593 XCP credited to the bull, 3.157 XCP credited to the bear, and 0.25 XCP credited to the feed address (f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93_c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6) -Database: set status of bet_match f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93_c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6 to settled. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86565720; txid: 81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 16'] -Fee/KB 0.00025000 -New input: amount: 0.86565720; txid: 81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.86551120 BTC -Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:36:41 with a fee of 5.0%% (248e7b3add0f648221a23da67e6e3ab52c12fd50b4ce589ad8273877c89967ad) [valid] -Credit: 13.3 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet settled: for notequal# <248e7b3add0f648221a23da67e6e3ab52c12fd50b4ce589ad8273877c89967ad> -Credit: 0.7 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #feed fee# <248e7b3add0f648221a23da67e6e3ab52c12fd50b4ce589ad8273877c89967ad> -Bet Match Settled: NotEqual won the pot of 13.3 XCP; 0.7 XCP credited to the feed address (a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab_622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3) -Database: set status of bet_match a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab_622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3 to settled: for notequal. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.86551120; txid: 248e7b3add0f648221a23da67e6e3ab52c12fd50b4ce589ad8273877c89967ad; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 17'] -Fee/KB 0.00025000 -New input: amount: 0.86551120; txid: 248e7b3add0f648221a23da67e6e3ab52c12fd50b4ce589ad8273877c89967ad; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.86536520 BTC -Debit: 0.5 BBBB from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #open order# <6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58> -Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered 0.5 BBBB for 0.5 XCP in 10 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58) [open] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 0.86536520; txid: 6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58; vout: 1; confirmations: 1', 'amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 18'] -Fee/KB 0.00025000 -New input: amount: 0.86536520; txid: 6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: -0.13469105 BTC -New input: amount: 0.50000000; txid: 6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82; vout: 0; confirmations: 18 -final_fee inputs: 2 size: 406 final_fee 10150 -Size: 406 Fee: 0.00010150 Change quantity: 0.36526370 BTC -Credit: 569.99887262 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #burn# -Burn: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc burned 0.38 BTC for 569.99887262 XCP (c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.36526370; txid: c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.36526370; txid: c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.36505490 BTC -Credit: 0.085 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #recredit wager remaining# <72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64> -Expired bet: 72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64 -Debit: 10000 BBBC from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <004cbeaac3e999874c19d95a83cde38472c9392c17ae93b49e741ce078694912> -Credit: 10000 BBBC to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# <004cbeaac3e999874c19d95a83cde38472c9392c17ae93b49e741ce078694912> -Send: 10000 BBBC from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (004cbeaac3e999874c19d95a83cde38472c9392c17ae93b49e741ce078694912) [valid] -Credit: 0.5 BBBB to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #cancel order# <6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58> -Expired order: 6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58 diff --git a/counterpartylib/test/fixtures/scenarios/simplesig.sql b/counterpartylib/test/fixtures/scenarios/simplesig.sql deleted file mode 100644 index 2fc44899b6..0000000000 --- a/counterpartylib/test/fixtures/scenarios/simplesig.sql +++ /dev/null @@ -1,1400 +0,0 @@ -PRAGMA page_size=4096; --- PRAGMA encoding='UTF-8'; --- PRAGMA auto_vacuum=NONE; --- PRAGMA max_page_count=1073741823; - -BEGIN TRANSACTION; - --- Table addresses -DROP TABLE IF EXISTS addresses; -CREATE TABLE addresses( - address TEXT UNIQUE, - options INTEGER, - block_index INTEGER); --- Triggers and indices on addresses -CREATE TRIGGER _addresses_delete BEFORE DELETE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO addresses(rowid,address,options,block_index) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.options)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _addresses_insert AFTER INSERT ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM addresses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _addresses_update AFTER UPDATE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE addresses SET address='||quote(old.address)||',options='||quote(old.options)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX addresses_idx ON addresses (address); - --- Table assets -DROP TABLE IF EXISTS assets; -CREATE TABLE assets( - asset_id TEXT UNIQUE, - asset_name TEXT UNIQUE, - block_index INTEGER, - asset_longname TEXT); -INSERT INTO assets VALUES('0','BTC',NULL,NULL); -INSERT INTO assets VALUES('1','XCP',NULL,NULL); -INSERT INTO assets VALUES('18279','BBBB',310005,NULL); -INSERT INTO assets VALUES('18280','BBBC',310006,NULL); --- Triggers and indices on assets -CREATE TRIGGER _assets_delete BEFORE DELETE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO assets(rowid,asset_id,asset_name,block_index,asset_longname) VALUES('||old.rowid||','||quote(old.asset_id)||','||quote(old.asset_name)||','||quote(old.block_index)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _assets_insert AFTER INSERT ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM assets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _assets_update AFTER UPDATE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE assets SET asset_id='||quote(old.asset_id)||',asset_name='||quote(old.asset_name)||',block_index='||quote(old.block_index)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE UNIQUE INDEX asset_longname_idx ON assets(asset_longname); -CREATE INDEX id_idx ON assets (asset_id); -CREATE INDEX name_idx ON assets (asset_name); - --- Table balances -DROP TABLE IF EXISTS balances; -CREATE TABLE balances( - address TEXT, - asset TEXT, - quantity INTEGER); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',149849426438); -INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',50420824); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',996000000); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC',89474); -INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBB',4000000); -INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBC',10526); --- Triggers and indices on balances -CREATE TRIGGER _balances_delete BEFORE DELETE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO balances(rowid,address,asset,quantity) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||')'); - END; -CREATE TRIGGER _balances_insert AFTER INSERT ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM balances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _balances_update AFTER UPDATE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE balances SET address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_asset_idx ON balances (address, asset); - --- Table bet_expirations -DROP TABLE IF EXISTS bet_expirations; -CREATE TABLE bet_expirations( - bet_index INTEGER PRIMARY KEY, - bet_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (bet_index, bet_hash) REFERENCES bets(tx_index, tx_hash)); -INSERT INTO bet_expirations VALUES(13,'72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',310023); --- Triggers and indices on bet_expirations -CREATE TRIGGER _bet_expirations_delete BEFORE DELETE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_expirations(rowid,bet_index,bet_hash,source,block_index) VALUES('||old.rowid||','||quote(old.bet_index)||','||quote(old.bet_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_expirations_insert AFTER INSERT ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_expirations_update AFTER UPDATE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_expirations SET bet_index='||quote(old.bet_index)||',bet_hash='||quote(old.bet_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_expirations -DROP TABLE IF EXISTS bet_match_expirations; -CREATE TABLE bet_match_expirations( - bet_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on bet_match_expirations -CREATE TRIGGER _bet_match_expirations_delete BEFORE DELETE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_expirations(rowid,bet_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_match_expirations_insert AFTER INSERT ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_expirations_update AFTER UPDATE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_expirations SET bet_match_id='||quote(old.bet_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_resolutions -DROP TABLE IF EXISTS bet_match_resolutions; -CREATE TABLE bet_match_resolutions( - bet_match_id TEXT PRIMARY KEY, - bet_match_type_id INTEGER, - block_index INTEGER, - winner TEXT, - settled BOOL, - bull_credit INTEGER, - bear_credit INTEGER, - escrow_less_fee INTEGER, - fee INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO bet_match_resolutions VALUES('72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64_d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda',1,310018,'0',0,59137500,NULL,NULL,3112500); -INSERT INTO bet_match_resolutions VALUES('f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93_c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6',1,310019,'1',159300000,315700000,NULL,NULL,25000000); -INSERT INTO bet_match_resolutions VALUES('a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab_622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3',5,310020,NULL,NULL,NULL,'NotEqual',1330000000,70000000); --- Triggers and indices on bet_match_resolutions -CREATE TRIGGER _bet_match_resolutions_delete BEFORE DELETE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_resolutions(rowid,bet_match_id,bet_match_type_id,block_index,winner,settled,bull_credit,bear_credit,escrow_less_fee,fee) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.bet_match_type_id)||','||quote(old.block_index)||','||quote(old.winner)||','||quote(old.settled)||','||quote(old.bull_credit)||','||quote(old.bear_credit)||','||quote(old.escrow_less_fee)||','||quote(old.fee)||')'); - END; -CREATE TRIGGER _bet_match_resolutions_insert AFTER INSERT ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_resolutions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_resolutions_update AFTER UPDATE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_resolutions SET bet_match_id='||quote(old.bet_match_id)||',bet_match_type_id='||quote(old.bet_match_type_id)||',block_index='||quote(old.block_index)||',winner='||quote(old.winner)||',settled='||quote(old.settled)||',bull_credit='||quote(old.bull_credit)||',bear_credit='||quote(old.bear_credit)||',escrow_less_fee='||quote(old.escrow_less_fee)||',fee='||quote(old.fee)||' WHERE rowid='||old.rowid); - END; - --- Table bet_matches -DROP TABLE IF EXISTS bet_matches; -CREATE TABLE bet_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_bet_type INTEGER, - tx1_bet_type INTEGER, - feed_address TEXT, - initial_value INTEGER, - deadline INTEGER, - target_value REAL, - leverage INTEGER, - forward_quantity INTEGER, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO bet_matches VALUES('72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64_d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda',13,'72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',14,'d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',100,1388000100,0.0,15120,41500000,20750000,310012,310013,310013,10,10,310022,99999999,'settled: liquidated for bear'); -INSERT INTO bet_matches VALUES('f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93_c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6',15,'f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',16,'c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',100,1388000100,0.0,5040,150000000,350000000,310014,310015,310015,10,10,310024,99999999,'settled'); -INSERT INTO bet_matches VALUES('a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab_622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3',17,'a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',18,'622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',2,3,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',100,1388000200,1.0,5040,750000000,650000000,310016,310017,310017,10,10,310026,99999999,'settled: for notequal'); --- Triggers and indices on bet_matches -CREATE TRIGGER _bet_matches_delete BEFORE DELETE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_bet_type,tx1_bet_type,feed_address,initial_value,deadline,target_value,leverage,forward_quantity,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_bet_type)||','||quote(old.tx1_bet_type)||','||quote(old.feed_address)||','||quote(old.initial_value)||','||quote(old.deadline)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.forward_quantity)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bet_matches_insert AFTER INSERT ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_matches_update AFTER UPDATE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_bet_type='||quote(old.tx0_bet_type)||',tx1_bet_type='||quote(old.tx1_bet_type)||',feed_address='||quote(old.feed_address)||',initial_value='||quote(old.initial_value)||',deadline='||quote(old.deadline)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',forward_quantity='||quote(old.forward_quantity)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_feed_idx ON bet_matches (feed_address, status); - --- Table bets -DROP TABLE IF EXISTS bets; -CREATE TABLE bets( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - feed_address TEXT, - bet_type INTEGER, - deadline INTEGER, - wager_quantity INTEGER, - wager_remaining INTEGER, - counterwager_quantity INTEGER, - counterwager_remaining INTEGER, - target_value REAL, - leverage INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO bets VALUES(13,'72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64',310012,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1388000100,50000000,8500000,25000000,4250000,0.0,15120,10,310022,99999999,'expired'); -INSERT INTO bets VALUES(14,'d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda',310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000100,25000000,4250000,41500000,0,0.0,15120,10,310023,99999999,'filled'); -INSERT INTO bets VALUES(15,'f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93',310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1388000100,150000000,0,350000000,0,0.0,5040,10,310024,99999999,'filled'); -INSERT INTO bets VALUES(16,'c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6',310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000100,350000000,0,150000000,0,0.0,5040,10,310025,99999999,'filled'); -INSERT INTO bets VALUES(17,'a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab',310016,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',2,1388000200,750000000,0,650000000,0,1.0,5040,10,310026,99999999,'filled'); -INSERT INTO bets VALUES(18,'622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3',310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',3,1388000200,650000000,0,750000000,0,1.0,5040,10,310027,99999999,'filled'); --- Triggers and indices on bets -CREATE TRIGGER _bets_delete BEFORE DELETE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bets(rowid,tx_index,tx_hash,block_index,source,feed_address,bet_type,deadline,wager_quantity,wager_remaining,counterwager_quantity,counterwager_remaining,target_value,leverage,expiration,expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.feed_address)||','||quote(old.bet_type)||','||quote(old.deadline)||','||quote(old.wager_quantity)||','||quote(old.wager_remaining)||','||quote(old.counterwager_quantity)||','||quote(old.counterwager_remaining)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bets_insert AFTER INSERT ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bets_update AFTER UPDATE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bets SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',feed_address='||quote(old.feed_address)||',bet_type='||quote(old.bet_type)||',deadline='||quote(old.deadline)||',wager_quantity='||quote(old.wager_quantity)||',wager_remaining='||quote(old.wager_remaining)||',counterwager_quantity='||quote(old.counterwager_quantity)||',counterwager_remaining='||quote(old.counterwager_remaining)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX feed_valid_bettype_idx ON bets (feed_address, status, bet_type); - --- Table blocks -DROP TABLE IF EXISTS blocks; -CREATE TABLE blocks( - block_index INTEGER UNIQUE, - block_hash TEXT UNIQUE, - block_time INTEGER, - previous_block_hash TEXT UNIQUE, - difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, - PRIMARY KEY (block_index, block_hash)); -INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); -INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'cf0ea1d313e22ba5f413075b88e07dffc5c00e59f95eeb6d6dec935bd77f5ae4','f06c23e6040a063ed59693baa0d63492dce64e1debc7455b22f5535c9dfbdc67','935966a4190449faefd40145735a17c5733fcd4f80d81fb1b0368cf8c2507bb1'); -INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'bdf1308701712d94da26f53fef4c440ea2fb7b0ef7361f424ba9263e747272bd','9e0d5e4fc106a6878353270467110206677b996e9cd5f9113aec59fde786cb4b','79fe346e58a7d346cb90b8be3404f8eadb410be2a4f8ba338134587847d76e74'); -INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'cf830f949715ebeac09d4441878f60ac04d691c09d6c25c62a0d30fb5886cba9','fe5dc7935d266f1fed9e32780bb64a53d5e915366e79f72e09c69779a9b960d2','81e07c6aa88091db4e9470f0059a583df4162d12f9e236a2b6e6d4a4db874978'); -INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'e881a675a38c4649cd44e6406ddc494996c761671bc349dcdea1de430a84258d','6e07c88646bff4efc740c3f89b6c047c9108ab023a33c9fb0db97094a5779aba','86f08d968c5822f3848d69a39d7e0cae1a85ecd07d2b56b001a7cc4846d48d10'); -INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'13e0c6276f297ff1ca77705f1b18d807ca22f53735fba52f4f5c3766dc4b04e8','e5315b5cf4563080a36b1af9087e795c16f931b08a7de73feeb17453d11b4e36','0cae6a2fdc7cd08c81a0f0f9a9f91b304f5ae81850935ddc9fe73aa4c879e485'); -INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'765896f532b411af9f889687a750d44414296c20002f3e2abed9551a6822937d','5846440bcc5d4269ce9dab206cf09f22338fd4fe12e38fec802225c75945d78a','1f575a287beada91f1ee7f69db6bf6992bc85c521a9ca38acafee35ab7679c38'); -INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'853e3a8d39c4e8bdb36a0ec01a8d20f12335fcc00a00ac271e9d83be471d394f','c20213a509ff7d8684a8240ef3ff5a4c97b242f03573791cc84e8c34ca3e6bce','759434a5f80d4e92dc0157708667e89652aeb05be5d813a1f1d578f0145cf0c3'); -INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'f2b2d250a94afa158f9ed84434c3ac7a0bfc97b4387e5e3c099afc95b8a6ad9c','0200a25ffb1ff9d9bdce14b56489bc35fd785406d84e9f28a4e04bbec212e35a','e50f23d06fe854bc184574609e82d341d223985958aa8fa64ec9226399337815'); -INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'8c44f15f5606b6fe984a9fa7df8d7d5381fe87a6c8b634469804328885668569','c6cfc394523eb1850cfefeb3c72e9bd57f26c8ce994804cb82e3470b78a7e411','fe0a0fdc8b6cc67bce210db50bb9145fd6deed16424306819bcbdcaadd22b349'); -INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'ba378e9192f290d3f9d3dd1e46aeef3a185bd5aff1be809c8974fca8dc142987','41df2e046f40c62b4066075b5f8ba56f472a7c533ffcdf6e2d6223176216abc1','4f4b25e0968ffaad88745cd1b24f550aa2e80be0677a91c9d166d11b99405af3'); -INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'64f78f9eedce2931aedfe413b4f4bdeb728752e1c897e0bd44c7db665976a723','86c7ee6c82354134ef2a1389d6c4f0fdc432062d220ebd8e89b848a69e8c7368','917ef84e78a64aa44dd0369e4a75e1fe84f95c8c127d3971c5020557abd4da6e'); -INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'671a1b4e1edd1f96dcfcc96d521fb2125ae5b9d2d01a76fc66686b7ed20c5662','d9f23ec7e286c4e5af2655eea0e0f0cc9970c7255a95caa5fe25d5f591766f61','d6942ed2452499e096526e560acedb7656dba5984b36fdea468d9e6f29e1c1d1'); -INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'1f5b502c341699b5a59b87566c0fc02b7db5c657919f014e41a00303aa53efc8','398a07a5cdbeb84d0d266987f04e3b93e1c8299c8dc568f284a648c5fb55e3c0','d68374ac242de6b8b0c48ff136b884e5fdf0f3db5d77bae44899895321b7b590'); -INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'cd0cfff6de5dd4381301929c740015d5910339ba915a83eb4229ecb91ae84c17','e2fda2700870f97200d61c49dc46ce99491c5ed17eb6ecac32a28a77849bf503','75473d1b6122de1445003d03b33997829a894bc9b5e842d83efcb5dbc63e8a4b'); -INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'5012d84065c7a39b5563f4fadeaf30670b47df3856f43d40fda74de663753e4e','2ff7e47283556b7761c2bcdc6b306bc5359bcba35508854938a565f6aaab7c3f','180904e761d0e4ae5cf534163fdd68a77b9b50f17bef5a4a56af3335cd4aae90'); -INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'0356494d376b2b65b9f4b066b9d2baf2ae90d82369b87914bb58a67927ced5af','aa7a45eeb0277464394be066291782af302ebe3ac5b3b60a68d6be2bea9dfdc4','995a4219e99c3b7da8e198c9b99bd8f11b880a8dccbcdccca8c34152309662a0'); -INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'c90ff439bd04970ed9e6e25cbfce32160450925a37ba3360f40df8854529b52d','6a9c88fbfc8a33d875ce2db8106ff527c09b5389a11abb72234322d048fda161','be2750863e26dfae9e8e7e89a210d7f5d2bd1dd17b89befd25c0d345e25f5c90'); -INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'19cf18f708dab6a983a2642802deb38d25b6fc205ea663059a0569fa38bdaf8d','75c466d204082492c48b15fe9638194e34fd987bf00b8378af2e485246885195','2629d5e0ea37fbf2105f8d6ed9a56ba87e4a742199956eb03620b40a3ded50a2'); -INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'d9ac565fbe7bf18c1d899dab8e0c98e070880e36fa51710382017d46ddf837cf','987ff99d929657abda723da162f63d6bd976962ba594910eecc110845f9347a3','bfb469204afbdf773d3b3263b55f05ef060ba93f5b415a2282f136ddb57aee65'); -INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'b66661deef419a50557d171cc1bcae04f5bc260ed1f5ff56cf08ef39158617a1','ac152c7b775afa9c89012486c9c046d5475be59ec1219be2951d3d7d4f83ec52','8e0c2eb6422e1da8ab028bb587a7d66fb85fa1fdb61f1392102b03cdd72223e4'); -INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'57a6c53e41338011cb06cd60118961dcec0e800f62a2c4b1e9381c666319680f','1766b2c5a734be49d058e70f1bc3e3df044541528c53c7ff2628a2fba277e300','12319d93a75d1ef1421a0e305f325152ed930bc5464a41c7211f2424da23856a'); -INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'66c16af10125f298796da828f1a6c2b43123cda38e3dfc57ccc25b00f3da17f8','a43edfd5ee290024a68250334e98d171d6d10f1df392f0d31f4c52865ab9f100','0cbe4933febd52d2809ad4bf0ef02cf18335a58de772a98f0d8ea47e7cd91d24'); -INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'43b6213cad601a389aed2a4e912be118dfab6cca5358d86bac03f4bee6765493','d4b3cfcbee07634e1155380acbce2289bf088decc9bee2b67c8c1f85f7a946ee','ea6dd3ffe9ea3e6f4bfc47070bc04e9ab4fb32b8ba86334213e1670833a3782e'); -INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'8a9758963891bbfbdcb6515d8d3e49c941fedba7de82038776e9f8ed65e803c1','663efe628ca7e98800c54fd05a34cd0d56f7b22b824c8b283dae819f0fa5fcc7','e8315e1671354087b334e15cb000adaed84b29e7b218766abce28539ec4911d9'); -INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'cb034ab4a3e252fdfe9973a672e208295741a52634c9332b1501d612e0012e19','87b9b1e7d2bdb1861ebb85323eeba2e2d9fa97219bf7711ece22db41a34c85d5','3132f808d0b3cdb3e91941221b1e359fe072bc0601407a5edd82c39fff41fd2d'); -INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'5addc8253469d5c729cdffc1c637b75d9e8886a633d4406dedf2b1c16ba5b92a','d65351d1aac0c95afd21140063bb5f098993e487dce15539757dba5ec932b6cd','ed8f3ce344bda2ff0cfd0c22fe7a56ba5aa6d36deec9e65412b016bc663d416a'); -INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'8620bd0283c320330631185d1b2351718f174732bd099324a0880719cdfc18c7','6e0066e3518eff0c4c568b1c3498c9943027a0e35c1910716c017d853360fff7','8edc6d59cbe77b6b5bf35d4a353aec1a9ae06194bf4936acef33c444c336e4f3'); -INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'96960e09478184f4f0ad38d1fc03f0c0240e58715a0a29745a6dc58c40003249','99aee2898069b26550c5be3379633c48359371ac9b2d17a253bdeb3e33cb086e','d01c251fbe2936dd18f167cfe1a48d1beb3d3b063147e9b9e65113c50a0a48cb'); -INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'2f556d2528abe1c4e9d31f6ed70d400d94633d4dfb54c9a4f250e1b054f9a384','862f3ebe8beab1fa959fe892a46c354a24b09eb64ead563e27c81d890ba52ac4','69850fd287871936cc9c7638bb256ce62f916f1fbc7b2a7bd28fea7bc4d6f670'); -INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'be195b1f7b7b55dcefb83907d954736d4bf059a9e32055131efd16602d7761d6','847f9acb51ecd5a68480b241833368e43ea6a3f6546ab56aca68ad4644565b46','c65a68d01ab3a51683097c564ef065b87322d09d85656d5ecf3a787fe0b08b20'); -INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'d3a25656dbb63eecf1c89820581fcab193d750f3a09ca8ab34a5008c8d89051d','4d5416142afcd31af5ee25fc53b296217b9aa46cba9d065a5f6d80c3618d88f5','98d2aa571d5fceac163a27d896a229c6347cf94a04dd7df0fa27c844735c5777'); -INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'0edb535f8c6a40062a86e4ea327cf7fb70310b6d55a6654d5a23e54498aa3159','0a1e6e349a99a0542a4aaf98ad2c3710f7dd99626c3697492e2cf3a996009676','90cf5e1e67e30b8f016a1f0e4af2b252d81685015e52cf85f08715b4cfb07b88'); -INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'a9208a1b7f782852d652e5089c6485744031176b4d285ea985bbc1df0ccf49c0','34a5838cd788c8809c54f0883583724d2ee46e6791012dac73245ba8bce03daf','8886adb30848c89cc54c10deef24d14b950f6999813d1d5dccea693c61eb33dc'); -INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'c8a973eb6bdd28dcab4f1b2a5e29e104944745e57a54e6d87b370aafb2e589f6','6129893568d12e9c0ad6149aec4853bcd13eddabca04e35101d573b776a55546','1a63f0f6223a9aa365266337b91bd2c80b02338bad6d61ca19ff3e9dce8e57bb'); -INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'0d7b5809b7a5aa5ff854cfe141490a78c9b33e16f8102a8e804dbf0a0a8c0842','5d8e0f3be874970bcd169a3b7fc9ae03b957cdba4b2a93a29eb8172cc0d82ef5','63d60c682589f94459758ba4bccb319ae9223799e19095328ba12d4b818db645'); -INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'6b4c99289086445a7bf575110172a661c1cd37c418b70afd8ef3be0982041f5e','da8be2d9a1e5f972a83e2c48c6993c97a641556519eed01281ce9f973ff06e70','3136494fa22555237db134767a56c25b7c9de14942dac17370adff74148cd0f5'); -INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'f20b81389b2f4c9c9be4442b3c68f87da881406f1490637c7d93d63539155a7e','55aebb3897de2b0e35e964ed07d9f91d586510f4504a683373ccc7931d7e8676','a7e368ae2de115eec6d80fef626c6d9aecc8f5415235caf020e7cecbb56929c6'); -INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'52d554e6b53b853066a3a8f931fc37779f3596c4388e277a9f66a95e001a09eb','b8c5ca3449554bbbe826126b9e6ddae526c66111e9c6c34ddb9e006caaa165bf','691123f313da9e291919d5e5f085274b25ca11e212cda492a8d76436ef9167c4'); -INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'08a949af614ff73a79313a5a949908b368efe1f8c131eeeb51ed610baf65ac46','396e2dc59a5967d5a73c7d04433a83db4f055af82caaf46b4a50ae9448f82b2a','9b908071a6f094bc949cd24c003a1e78f27832d3402d7feab72bd44f19a6b65b'); -INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'7ff8b2408ee1124a5ee573d31023660aabcdb21599bdcfb4a3bc1895d7910094','842077f944475dc9954840b54fa284e01276ff55625cd4fc9af657e96e5d0a3a','30e02440e85ef5fdb856a22db37529dc9ac69da6b823c77af2ef314e451c397b'); -INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'c687e753c01711e94cfcad1f16d2976a12ef5d6c3731c64db26f969c988fe7c3','5d0a5a1ddfec7a1fe010537e792536bd704f7d94617fc90dc2e55b2b3fe08a60','935ad0542d605234bcfb4bc01e8f007fb284d3882e8cb903bf0add609681eaa5'); -INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'66f493ec8b5cf8140d1f627f008c50624d3069f56828df90286b53a2d6cbf47e','2741508cf7b494f23d15a84bc8991f402374962ad7c1df29fe3bea567614f990','60d4416c9f0d8fa0a7974da534167113e6d19aef74335ea4e16f1762f056faf5'); -INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'33acd319bde452aa81b589435a31ee3add742870a928ef2c15a7a447b4b4e0fa','6a58ffbbc9f2b30f091d274bac329ab5c43cfa0f9aa20cc04878a8e70f4b5572','8c160c8259b83624bdc098e0d3b3d18a47a4fbbcbf3f3e108af6ebbe52272a82'); -INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'83997825aa2597adb0292e265f01e937f621cc75d8cc18e23a4bd0c1fb0920c7','ed73e0d6d4035c75a8b2cb82a35eb06f5a8e41bc6c409aef86f143e0bdfefd13','f88ba92d3a7fadba2f3a8db2b97b2328a47c3363d75bb97492ddcde53f111e22'); -INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'9890bca86442f329b2abf1b3bbf4d94e8ab54d10dfa7823a53f02fcfef030d88','ea869604688664627dd8a13fe50dfd7dddddcb8c738af970638d8d5397b97273','ad002ce5ee34fc96b8db161e19de7a4ecd080d60ee71f17ec5ea221c2d2dd1fa'); -INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'a909f658a8f405ef1f5cd8bbab03cbd865235544ae1c2f4dc20e2a4393181efc','052dc641fa6d55fcb62662e8547a2a0da1bfd870fd5b824eb1543e80fc657152','821b34d44cfa5d4e99a8ca6dee61a1471b166fe7cf138bbe630441117d3e0a7e'); -INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'713d2ccc66a1aa7797ea9b6af18b04245478c7582a8aee76cf2c7f3f3060df3a','e2ba18fb47e7b24f9bab0c09190693b1cff68fe3cf93363b8eeb6c95a34eb002','da8a3ec4d7170877b8c5c4e5c60dfb9655b0c158069fe2c3ae6673b80ef700cb'); -INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'534500ae61a04841771193d57384d27b54fa2bb92c0698beaa46509b3d39eb1c','d7a8df314f183b2c017de59da8d88a3aea3d6671304e5275ed396ea5c2477570','accf7dddcd4bc1021e25ffb5ced8f445e2289e93ddc881d61b6f30bc50c51a05'); -INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'48c8e5d9ab1887f092731ba2881a330d22d4f03f601dccc096fa5147042a3d55','c38e2d454c9bc1e81e6afa693108fc871c75095e946942edf236b027f105a9fa','c3fe6760e0b4d0af715144546a32b266e0d9c185ddd1d1797f2c2800cac67958'); -INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'6c5ec3d2b7d8a724175559db977cb9ab78eecd39b9239688b30d6d3350cb01fe','1b728771ba0ea94862de2b19f1edaaca42cf4906ad578aea4bc9af48dbae5f58','16498ad0b539231fc7d4f6f9500a62fe90eeeaa448c50c353080abef6fdb54f4'); -INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'817dc86594b3820de76f1d2bc2400d702475d558d6ee5bef4313fc154bbdaca2','ea79c9ab94d24c11d06d38443865e1f575ca1b77a40283088c436aa561e6decb','cb48cbe4df44ed985f588b49d2329f6b4b1b8bcf9c71bc4f061ed11e1749424e'); -INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'00916e6bac2f648f953c8d6dff21438a6ec53ad198b33f90667e8d4564e00e78','7609bbedad20b5a409f352c65e8a213ee082444365793deeecb446bb7fe9bf40','dfefe9f4ca6d1c2cc92f8efcf8a55607881924795b4da4909b40f2065543d347'); -INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'959df962b9bc7ef215f1530b886613404adaf81552d6eeb4b1401ea265ad5f4f','ccc3f468b6453fcf16733e9b38aedf7caa15af582ba2675d3c883d26e6e5657d','9adce460ef67ad04b19b7d359e8f2c31808ab3cfd0f71241a32a4e23eed0efca'); -INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'d76b639ebddd434e5269de084de0b502e7f0eaff71b4e99de2d4ebdd1fc61380','16cbb5f82443f0113a81875a52834cb263b00ee63757d1d98388e76a8acaf52f','1423704061ef97630f218bebbf88e974b009ed139aa302e0286d5cdc450d6701'); -INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'525e8cabfc993080d128faf38a5e5c9e9afa61423a5f20a90d68cdcacc96b59b','0fe7d9e543431c6a186da1c131e80cf10fff4e0e9d9ee9028b22c95e06eb6e4a','47e73685a1bddd3a2d656e0aa4ce407bd743030a7c26b9cc0c4c90da94ffeef4'); -INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'155ffdc74a2077a3da7d5c068833468c7d0758dfb525a799f910cdb1543beadb','9d6a175df0331844731f81589c5e338b33494e4385d48999c3c268c5dbf42fbf','e1604c63359fe66fa5748e87452aa337b5fdbb3e3a93e748240fdf110d548b10'); -INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'4f6fe786e34af90927bcd888b4b2a8fc69d3ccdfe4c4bb37edb2007901ce234a','6a76e905668236dc988d75f4209200423cbcf390692408ad2bc99fac359780f4','7a809f6a47487cfcfb97e443eb07b9a0e453f3b8c1a87aafce7c317fff51ff9e'); -INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'30978d87fd8e32d9d27c92a0d4ca19d179b515ed95410fa96bf496b4cd8aa5e2','ef0c7b9672ed2e4ccd90c7f1e0cb1c87cad0dbd96f06523a4ddc9316b4142c2e','555dbe660ee2cef18a8d45f3367baa918270107ac7c833576a152e6887678071'); -INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'a0760bc5d2f04b381cc46aca84aa3788e8e3fbc833379a26ae812807d3a04fc5','fca46c0a8dfce9a247449a1ac54d24100820e68353dc403607911c0f537d621d','6b4bf195fe0606062e8b6872dd269179c0b547cb28dd9813193658c99ed8556b'); -INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'26dcef9e54b1a34b6024f8402ddebb6e9449cd90c270e3db75354a001484b1a1','bd5a242a52a61be4ffaf27381dc92d036575c3cf9214ba6c8de15d651a1819f1','35a4ccf19d9d3a20bfe9e79362333e47a865fb548747a40cfb8db80ca6579526'); -INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'810ebcdb63a08af5a26d1fd4e7a3604afd03bd06ff620d6a86c665e1c81116d2','72319706c9b55d5d78d9e4f19997423453bba58a17250971c3620e76187fb5ce','f64444d615163834061b7996853c8350f18f8c89bc28d3016e0d3b2048cd7e26'); -INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'1edfc24d186c7e7267b11c03b0a29e57926e9ab25f668231a18a499cbd08c702','f81f72461715a49d32b75af9fae499024937ab5a1d6ec59f3377e2ecf2fa421b','98bf9815a3499419e81ababb92f44b416b187b334e532ae83ff1e916739baaec'); -INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'b0de9503f019c9548a97bd198e6b1b58b57d6a7c231ace2d72adb0421b29e9b7','c5b958087bf286b5175bc5d5729ad591b4d5e476f44a279234b608e08d92cf01','9308f06aaba73f811c0ab045bf935b5f849158ba07a5b1e6a5a6cf0c2e17c700'); -INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'62e41caff168eb4b15eb67ab2130510ba3f17ac186f8516cf5b5c6f168988345','9c5161f2593956564bbb61fb6b7e1219b94f0fe24194861c03fd21227195b6f4','f46e8792f25b5466daeebad7ddaa524fc0f6f8be65e926275b2ee9260f7929e7'); -INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'a444b1535d27bb2917478019c4c59abf9474e87128f9ec1e44c20eea1f014f3c','1701b4076dbd76d449a224b8d3f49ed8e3471aece5cecc37eb24fb9619436d0a','0ef515a5ecdf1a34b0c31c372fd06fca79a6b7f70d7d0f3f9b564b5cb686d317'); -INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'0ad978671f587f99e5e1c1b6f68ac3d18bb03a3bd7ea9afb63590bcef25160c8','5fa74971ab61117309769286d99604778f084aa69c959086789d1dfc9a07144b','4132b9db3b4dae110ed20674a0c751281c3ee13fa97786748f8e0e8244daf695'); -INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'a6bb36829770b24fa0b960b85566a0138360a60b52cec62d94d7df8cb0b8f8b4','e535dcbfbba9f5e9a06d5c6dd27d3f85396bb2daa7aac4f14d76237a69b18fa9','acb349f475e4786fd7d8f77bcc309a8001cc10086b8f34aa9ddf1e05cd44b08a'); -INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'9b8ceda9b170429d8b9ed517f0db95487b3058397e20d7e786577c8e46b389b8','d60ca257ee44f06a9091b41e9a1deea199a992b798b702ff276332eaca9c73b6','e6d642b921935a3a76cd5eb37532f4e9067d11bc46bf6101e5392af268770afd'); -INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'cee2e41baf86f1af24d555e9ab4a0c023b5f1ab2b054707d4434b4f60d31862a','670f673f8694eb623c9b53b258f8cbb9098e4e75a5882fa8ca55840e0360c07f','4903bdd41aecba7f646056d82bbcbffeaca8784ef109c3d8aefca4024ba6b77e'); -INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'cbfd7ff728f05ba3f1db5972f1449618a79d3fd0d76bf7fe990aed2eb2316a38','d3b23bec1957757d03bc7652dd72ec20eb6d90eb25972922a5c540fcbcf10d43','0f2403d27ff29235d9a6340ce8aa3bf021e0d2be268c5c379aa07de785c5deb0'); -INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'9af85cd995c83b5a5f0cac66351cabdf9dc9faecfee080638fc76019663faaa6','0da55225babb47d570ea42dfebee95eeb28e2c53c8715f5127337c0b76559032','bacfe2a37fd32453b2a2a508d94cc2144c248eb554873d4380bbdaf291951017'); -INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'a3c547e84db6b29630b87fa566e37796e0632ba616dd6d521d558632c3b55370','0dce7d2ea164e7cd1381cf5f7305a406b477f667ae6a83f50f5d745d85096738','0647a21b64bc3268df717dfabc9d4f1f9617bc328692901c38d9ee30b67d8c3d'); -INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'a0170d8a72a0f8642c0863899bf034e754596e3fd8ddffefa91e7e9a7addf944','3d28c7647cff66a505c02f9e3dc02442a2471e9e8fa9f48f80c818ea7e3ac905','ab25dca2e6d4696918318d5f5015e18b8dd29d7d3d589925799763876f1c5405'); -INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'e0179a21342fcf35fa169567f1ef35bd6b0b1b048a98e90c049fdf3ee58e9da4','3e0087e98ee7d2098137ab3d0b1e3549ab5e5e33eb287b510c758bf134b5e124','f8a257d2ac289289648c678ae2f955f9e1ce2921b594b28ff61b3aab6e89ddf3'); -INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'8855ace296b0b078d90aa24fcd30ca9f9cccf9d3961f3dba4985a3ff187a02ac','920c6f4963ebcfa66ecac7e5c0a16651f3ce8343e90c391b902517e9a6309d13','d0e8e9e501898c145aa0a3aa3cdf024afcf9702280673de17866cbcbb6bfc98c'); -INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'bde3a6c6cc31b96d58f466d3ce0361cc6366c8c239778f21b696d4063cf6d89e','0c34f58c5ef60385263b9bbfbec100a3310e8fd97c0f05291178b4f3cc563ebc','bf88df0ca401608b4be3799665e2d9ae0e0ca947ca3e2dced8d0588f0bd415ac'); -INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'f562851b32a7005ee02b9e2491c0195dddce451e8fecb428209d087e69345303','525c1499fa0c826e0c91adcde6177ce328bf70eb578b673b8d5c7cc87f86eb5c','4a339e23a7d670fc69323c8fa9351893a42fd1ff47eb9b8ca386a16defd3b509'); -INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'996cda7b65e623747deef936d61491cedd0159f44faa1e3536de1b6d6c474097','da2b44e873bbd4832cb39ee3660a085523cd3fc27d753f1c2b8a957977af18f1','17e27610517981c9c7d10533414f1a281f75a06044ae9097ab22f3660e77e88f'); -INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'c8286f73cc3a070f4251b7c59bb485e611437a1916fd39ffac831dc78df54ecd','5cd8c2f804167b46b7b92555338e5a275418446517809ebb0d7f6b441ecff8ab','e0733219ac6bce78ddd98ae9274cb8f7f8700306de94b00d4cba6c89c9e06ba0'); -INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'ef9dab42700918027fac849f2088d2248a6291dc7bc24be583b556f37739631b','76cf40cb064a171239b0ba385ec986c26e3f82f40043ae26071c89c020592c39','086e749549d2e97f3a23d718f36b7c8dce2ac4411715c0effa0446391a0c6bae'); -INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'c6bbc52f1e8f907b2d66378f4352f41ae3d354985aaab5f16d737d75a7e6b1d8','137a4f11a48863ceb47ebb344ce79afd4b386a9a1b7c66ad254fc705462c6b39','1c0e5c6d7b18aca3da2efe9394d504b6c0ff1b405686def21378683200566cc9'); -INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'66f7b7ff8f0217ed62938a5931d4a6a232546e5d58e09dfd3ba5a792c35fa560','83bf3c1ef532255378e92171a20d297e068ebb841947f7d9694c402d00c432f8','d907e8867d27db10a20a8f9fd321f648b2690adad27cd40da9dfebbcb9a255f8'); -INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'2b26c6d901ca9790987331432372046d9620d10ea163f4824208d6b23e8e7a35','f1f489cf1817ced2fd5de0ea033097814f074d618c77f64b6addb0b8d8582025','d89bd6cb6084a55f5483341e52213147a73cae30a50e2d3c5f3a173db4b7466e'); -INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'0d6d774dce93e94e870835005b0e8b04f010fb25158aa69a0fa0321d1577e987','f995bcfd0e742dfaa1cd1de9cf7fee888a67eaf588196ca847c4a74c14b2ea2a','94a09b0e1df1663d44a36154c42b53c55a8519b7dc1eb83b3ec28b8d27bb009e'); -INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'9dbd171e3606b1662f6b576339b1e9aaa3da8a9f8a246bab905af255add4a762','7a8e27efc4ebe3ed3b5519f4c0dcb9b229758acab09ac5e656303f6c88ec7e1c','07d4ff31736993ecc07b773918fc6eab1cd8ae0b38a437ead6ccbbb17df17156'); -INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'db67b5dc6b0c0ddec22d0e716b72aa8cb6fa9702316f2a8e12659ee229094c16','de48489a508b2cb50714881d8787709a29c9dffc99abe2a4c5bd9a9fbf0c24c3','0b7eae5569ac085c629c62e99a0d82d70482ebccff6a0c7bec079c2fb4f3e47e'); -INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'7cf70b5298dbb36efbec2fb880b76e2514e3bad9d5200875fa3eb3ceb7719ee8','36bb7b2de9f8db4bf47e75e042c734004cfff6e2dd5dc3f8ee110c3689d0f68c','f957bf346f2ffe9c151e51916b157065ff15c0724c64be85e16e37bfff6570bc'); -INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'27106f400fe1ee93bde42f3bf3cf39737fb856bbf0df3f90fe0838cf7d38798c','90eb8ca8aaa8f5662fb076eaa29d466218a4f7d20c3d18e6b26c47bb3f801270','333b2e9a0c52a9ae4a4f91a62ab498fbfb6e5be0c0b5ac83b0f76fdba0034b7a'); -INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'28c9833eded6d68967f206e5884616f83bb9ad16b9d7a507031b96480aecc799','10c6509db1a7489fb77dc0ccc01a7180a552202b9024f039e1303ff25e16ef53','0bc3366e7eac5e969d38c80945ef0c7cde98ba7977ef8b7fd5512fc5ca409472'); -INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'cdac6435934ea6e67a311495325c85237158ef30c009ea44c562c2127d79e696','cdc00a00ba82f0ca711d2f849bbe55fd2b911f16150e8f7b804228d3a5f43dc5','02d0cc7f19838ca72cfc3853781adaba584d6466cecd460d15a16a9d81dc57d6'); -INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'cb33e420348e7969a2310445a6c17c79e647d3c6f3106d4fd0c0a1249e11ed6f','c6065a55d0184fb61123a1bf4f4701a576867cb67ba8b458e9dab564ec958006','d8c680cbb7395066e0bd2df2b46c6f7cb440d353739c174a6d467966047ec58f'); -INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'dda2531cf7db78a3f27c1ce70189b3f6efb69ddd24b61639f9deff42566bba2a','19b21db8b7bc5417d7d377f4da324be79640b58f623b678ae4cc52b3a83135af','6d43896527be5a2319668616b6e26ee5e67198098ce6885aac2fda139d7ac4dd'); -INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'9ca7d9e1da0c6e4465d9e1c76990b6c48e62ee3a0b3b83189dc7a0f2c03a3006','ae3a6a34004ed7aefe6256896c27da99ee7a7f1b3402582aedbcf7009103ead5','463ee69293755ec4ae61d2cd67f4694664cb0ab018070566f39d6d421fcec991'); -INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'c6fc005e874909cf0393ac1bee7267f66cc5355c549d8657234a0ed6b429c869','095851ef71c3dd436f24fe2c463c8db9f5f7ca180e517060cff4c05876fcd3c7','b9abf7902b403e49070ebd55b006034c5015983ac5bd38eb8c7831828e82ea04'); -INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'14dacaec0b37ca20f271e500d0ec1837a63006eb464728c067107738ad3167c6','db78ec35324d5b605f19559601dd2c102e5ccf817010760bb91b70d8b1b8b217','a5a9f1be22fbe92d51172095573177e535913d2342ea5dc44bf8d3a4b1e83ad2'); -INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'05bd680c082185147e83785e7464d8890908d1550359b4fac79018b510475e01','ce6e11036b32ca486a16aafe9179a4cb69908029d4a0edd42d964fb822cb0c4f','1ac0d9329f5e1ff024c9d119487af560fe26ec802e264828165b05d4096c11b3'); -INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'b50805d750ebd26f8dbced919948118f1f97ce7d117aa1760e7a3c4895f51e13','c8ccd90d4968bd87b11127a8560bd198c1d609f4803d94765d6bbe5deb0ecde9','c6772559ac338e4d8262ea55b97fe498435b72dec543307a00b2fc6dcb578609'); -INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'dde96405c241e1d57334670e4eff7ed8db92056e6867cae10475a9bc30ba4619','453fa85e5ba56a299d20fe6f154266543e8a3fe964b2a2178a4b0ef18401233d','134dcc4bf9e87e81fee6d81f6e05cebf49754d85275fe18ed739a1be7348c08d'); -INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'613d78fbabba246a4d1cd9d50317e732795a59812df8395472347e15cec1ee9b','0758769a805d3c3a67317b3a8299596486b34c57733bc3a97cdb1b37ecb0fdd2','15c945303ba677cc7b7eb8b8a0cd43a031b57580271dd70878f9b8bb6e98f5a3'); -INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'e535ca5960d2ce7508bd2157dd0cac3ea1f9ab14532a40884d522b4bba0d4979','ae344b00ad8d1c5154ea0c98c2b9c12c3664c2090543c95ea75e14192156daf8','4605cbbdf08efaa540db672ac19aef12e33bd0cc57f5c9457a7c985afcb9fb19'); -INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'970865291b7a6d8173d6ad2ae97335cb2e89d80cbbb7a79bb2328cf6c67fa6cd','2056b1cb96250734f2ad5b0550a0fc5e121f65d44ee980c69a94f95195ad0023','ebd05dfd28a50fb051137b3af77ec5352b6ff0f1a41c8b9119777c24230314ee'); -INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'0741e57ad88cdada65134c9f131ff5bfd9498cb054378d829e34715e8db2aa6d','708056913a2d28a2df702d477e2e5741540a570458fce85464b66cf6de731db1','c82e78f62e2e1a9c99b5f9300a52f6e9ecfbbc1ca39ea1bb091801d8fbf0383d'); --- Triggers and indices on blocks -CREATE INDEX block_index_idx ON blocks (block_index); -CREATE INDEX index_hash_idx ON blocks (block_index, block_hash); - --- Table broadcasts -DROP TABLE IF EXISTS broadcasts; -CREATE TABLE broadcasts( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - timestamp INTEGER, - value REAL, - fee_fraction_int INTEGER, - text TEXT, - locked BOOL, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO broadcasts VALUES(12,'6b219449c3c41b313c6f681d44438af8a5bff98e234f79513f8379550a4cc691',310011,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000000,100.0,99999999,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(19,'4184216d2afb9be606bd8b5a08ab19c50f4b274c962cf30a3985094f7444f548',310018,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000050,99.86166,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(20,'81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d',310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000101,100.343,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(21,'248e7b3add0f648221a23da67e6e3ab52c12fd50b4ce589ad8273877c89967ad',310020,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000201,2.0,5000000,'Unit Test',0,'valid'); --- Triggers and indices on broadcasts -CREATE TRIGGER _broadcasts_delete BEFORE DELETE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO broadcasts(rowid,tx_index,tx_hash,block_index,source,timestamp,value,fee_fraction_int,text,locked,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.timestamp)||','||quote(old.value)||','||quote(old.fee_fraction_int)||','||quote(old.text)||','||quote(old.locked)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _broadcasts_insert AFTER INSERT ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM broadcasts WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _broadcasts_update AFTER UPDATE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE broadcasts SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',timestamp='||quote(old.timestamp)||',value='||quote(old.value)||',fee_fraction_int='||quote(old.fee_fraction_int)||',text='||quote(old.text)||',locked='||quote(old.locked)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_source_idx ON broadcasts (status, source); -CREATE INDEX status_source_index_idx ON broadcasts (status, source, tx_index); -CREATE INDEX timestamp_idx ON broadcasts (timestamp); - --- Table btcpays -DROP TABLE IF EXISTS btcpays; -CREATE TABLE btcpays( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - order_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO btcpays VALUES(5,'6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82',310004,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',50000000,'507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379_178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424','valid'); --- Triggers and indices on btcpays -CREATE TRIGGER _btcpays_delete BEFORE DELETE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO btcpays(rowid,tx_index,tx_hash,block_index,source,destination,btc_amount,order_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.btc_amount)||','||quote(old.order_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _btcpays_insert AFTER INSERT ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM btcpays WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _btcpays_update AFTER UPDATE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE btcpays SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',btc_amount='||quote(old.btc_amount)||',order_match_id='||quote(old.order_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table burns -DROP TABLE IF EXISTS burns; -CREATE TABLE burns( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - burned INTEGER, - earned INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO burns VALUES(1,'6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',310000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',62000000,93000000000,'valid'); -INSERT INTO burns VALUES(23,'c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc',310022,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',38000000,56999887262,'valid'); --- Triggers and indices on burns -CREATE TRIGGER _burns_delete BEFORE DELETE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO burns(rowid,tx_index,tx_hash,block_index,source,burned,earned,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.burned)||','||quote(old.earned)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _burns_insert AFTER INSERT ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM burns WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _burns_update AFTER UPDATE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE burns SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',burned='||quote(old.burned)||',earned='||quote(old.earned)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table cancels -DROP TABLE IF EXISTS cancels; -CREATE TABLE cancels( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - offer_hash TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on cancels -CREATE TRIGGER _cancels_delete BEFORE DELETE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO cancels(rowid,tx_index,tx_hash,block_index,source,offer_hash,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.offer_hash)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _cancels_insert AFTER INSERT ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM cancels WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _cancels_update AFTER UPDATE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE cancels SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',offer_hash='||quote(old.offer_hash)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX cancels_block_index_idx ON cancels (block_index); - --- Table credits -DROP TABLE IF EXISTS credits; -CREATE TABLE credits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - calling_function TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO credits VALUES(310000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',93000000000,'burn','6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597'); -INSERT INTO credits VALUES(310001,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',50000000,'send','e535051ed7386995cc9152ea2d403f8460a59a5d084d4443158e466d743b3d63'); -INSERT INTO credits VALUES(310004,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'btcpay','6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82'); -INSERT INTO credits VALUES(310005,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',1000000000,'issuance','22c284e49ded9ee4c668a675f1eaf32925992911384db539cfef1b3784ea7cd6'); -INSERT INTO credits VALUES(310006,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC',100000,'issuance','21fe775c51dee2527cbafa7d5231a22ae988f7428563c2bbaad3692b65a32e28'); -INSERT INTO credits VALUES(310007,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBB',4000000,'send','611bd2d4fd7dae2282e00873249574cd435052cb274fe70ec9b96a1549d78042'); -INSERT INTO credits VALUES(310008,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBC',526,'send','2f40b6b1c699c15fd194fa30a003dcf2a2a4421a92aece4e5a5ee9c4b475d43d'); -INSERT INTO credits VALUES(310009,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',24,'dividend','8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e'); -INSERT INTO credits VALUES(310010,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',420800,'dividend','1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b'); -INSERT INTO credits VALUES(310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',4250000,'filled','d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda'); -INSERT INTO credits VALUES(310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',5000000,'cancel order','178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424'); -INSERT INTO credits VALUES(310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'filled','c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6'); -INSERT INTO credits VALUES(310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'filled','c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6'); -INSERT INTO credits VALUES(310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'filled','622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3'); -INSERT INTO credits VALUES(310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'filled','622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3'); -INSERT INTO credits VALUES(310018,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',59137500,'bet settled: liquidated for bear','4184216d2afb9be606bd8b5a08ab19c50f4b274c962cf30a3985094f7444f548'); -INSERT INTO credits VALUES(310018,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',3112500,'feed fee','4184216d2afb9be606bd8b5a08ab19c50f4b274c962cf30a3985094f7444f548'); -INSERT INTO credits VALUES(310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',159300000,'bet settled','81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d'); -INSERT INTO credits VALUES(310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',315700000,'bet settled','81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d'); -INSERT INTO credits VALUES(310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',25000000,'feed fee','81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d'); -INSERT INTO credits VALUES(310020,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',1330000000,'bet settled: for notequal','248e7b3add0f648221a23da67e6e3ab52c12fd50b4ce589ad8273877c89967ad'); -INSERT INTO credits VALUES(310020,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',70000000,'feed fee','248e7b3add0f648221a23da67e6e3ab52c12fd50b4ce589ad8273877c89967ad'); -INSERT INTO credits VALUES(310022,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',56999887262,'burn','c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc'); -INSERT INTO credits VALUES(310023,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',8500000,'recredit wager remaining','72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64'); -INSERT INTO credits VALUES(310023,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBC',10000,'send','004cbeaac3e999874c19d95a83cde38472c9392c17ae93b49e741ce078694912'); -INSERT INTO credits VALUES(310032,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',50000000,'cancel order','6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58'); --- Triggers and indices on credits -CREATE TRIGGER _credits_delete BEFORE DELETE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO credits(rowid,block_index,address,asset,quantity,calling_function,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.calling_function)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _credits_insert AFTER INSERT ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM credits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _credits_update AFTER UPDATE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE credits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',calling_function='||quote(old.calling_function)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; - --- Table debits -DROP TABLE IF EXISTS debits; -CREATE TABLE debits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - action TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO debits VALUES(310001,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'send','e535051ed7386995cc9152ea2d403f8460a59a5d084d4443158e466d743b3d63'); -INSERT INTO debits VALUES(310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',105000000,'open order','178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424'); -INSERT INTO debits VALUES(310005,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','22c284e49ded9ee4c668a675f1eaf32925992911384db539cfef1b3784ea7cd6'); -INSERT INTO debits VALUES(310006,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','21fe775c51dee2527cbafa7d5231a22ae988f7428563c2bbaad3692b65a32e28'); -INSERT INTO debits VALUES(310007,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',4000000,'send','611bd2d4fd7dae2282e00873249574cd435052cb274fe70ec9b96a1549d78042'); -INSERT INTO debits VALUES(310008,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC',526,'send','2f40b6b1c699c15fd194fa30a003dcf2a2a4421a92aece4e5a5ee9c4b475d43d'); -INSERT INTO debits VALUES(310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',24,'dividend','8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e'); -INSERT INTO debits VALUES(310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',20000,'dividend fee','8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e'); -INSERT INTO debits VALUES(310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',420800,'dividend','1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b'); -INSERT INTO debits VALUES(310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',20000,'dividend fee','1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b'); -INSERT INTO debits VALUES(310012,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'bet','72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64'); -INSERT INTO debits VALUES(310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',25000000,'bet','d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda'); -INSERT INTO debits VALUES(310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',150000000,'bet','f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93'); -INSERT INTO debits VALUES(310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',350000000,'bet','c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6'); -INSERT INTO debits VALUES(310016,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',750000000,'bet','a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab'); -INSERT INTO debits VALUES(310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',650000000,'bet','622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3'); -INSERT INTO debits VALUES(310021,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',50000000,'open order','6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58'); -INSERT INTO debits VALUES(310023,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC',10000,'send','004cbeaac3e999874c19d95a83cde38472c9392c17ae93b49e741ce078694912'); --- Triggers and indices on debits -CREATE TRIGGER _debits_delete BEFORE DELETE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO debits(rowid,block_index,address,asset,quantity,action,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.action)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _debits_insert AFTER INSERT ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM debits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _debits_update AFTER UPDATE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE debits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',action='||quote(old.action)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_idx ON debits (address); -CREATE INDEX asset_idx ON debits (asset); - --- Table destructions -DROP TABLE IF EXISTS destructions; -CREATE TABLE destructions( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset INTEGER, - quantity INTEGER, - tag TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on destructions -CREATE TRIGGER _destructions_delete BEFORE DELETE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO destructions(rowid,tx_index,tx_hash,block_index,source,asset,quantity,tag,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.tag)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _destructions_insert AFTER INSERT ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM destructions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _destructions_update AFTER UPDATE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE destructions SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',tag='||quote(old.tag)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_idx ON destructions (status); - --- Table dispensers -DROP TABLE IF EXISTS dispensers; -CREATE TABLE dispensers( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - give_quantity INTEGER, - escrow_quantity INTEGER, - satoshirate INTEGER, - status INTEGER, - give_remaining INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispensers -CREATE TRIGGER _dispensers_delete BEFORE DELETE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispensers(rowid,tx_index,tx_hash,block_index,source,asset,give_quantity,escrow_quantity,satoshirate,status,give_remaining) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.give_quantity)||','||quote(old.escrow_quantity)||','||quote(old.satoshirate)||','||quote(old.status)||','||quote(old.give_remaining)||')'); - END; -CREATE TRIGGER _dispensers_insert AFTER INSERT ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispensers WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispensers_update AFTER UPDATE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispensers SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',give_quantity='||quote(old.give_quantity)||',escrow_quantity='||quote(old.escrow_quantity)||',satoshirate='||quote(old.satoshirate)||',status='||quote(old.status)||',give_remaining='||quote(old.give_remaining)||' WHERE rowid='||old.rowid); - END; - --- Table dispenses -DROP TABLE IF EXISTS dispenses; -CREATE TABLE dispenses( - tx_index INTEGER, - dispense_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - dispense_quantity INTEGER, - dispenser_tx_hash TEXT, - PRIMARY KEY (tx_index, dispense_index, source, destination), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispenses -CREATE TRIGGER _dispenses_delete BEFORE DELETE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispenses(rowid,tx_index,dispense_index,tx_hash,block_index,source,destination,asset,dispense_quantity,dispenser_tx_hash) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.dispense_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.dispense_quantity)||','||quote(old.dispenser_tx_hash)||')'); - END; -CREATE TRIGGER _dispenses_insert AFTER INSERT ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispenses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispenses_update AFTER UPDATE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispenses SET tx_index='||quote(old.tx_index)||',dispense_index='||quote(old.dispense_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',dispense_quantity='||quote(old.dispense_quantity)||',dispenser_tx_hash='||quote(old.dispenser_tx_hash)||' WHERE rowid='||old.rowid); - END; - --- Table dividends -DROP TABLE IF EXISTS dividends; -CREATE TABLE dividends( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - dividend_asset TEXT, - quantity_per_unit INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO dividends VALUES(10,'8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e',310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB','XCP',600,20000,'valid'); -INSERT INTO dividends VALUES(11,'1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b',310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBC','XCP',800,20000,'valid'); --- Triggers and indices on dividends -CREATE TRIGGER _dividends_delete BEFORE DELETE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dividends(rowid,tx_index,tx_hash,block_index,source,asset,dividend_asset,quantity_per_unit,fee_paid,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.dividend_asset)||','||quote(old.quantity_per_unit)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _dividends_insert AFTER INSERT ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dividends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dividends_update AFTER UPDATE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dividends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',dividend_asset='||quote(old.dividend_asset)||',quantity_per_unit='||quote(old.quantity_per_unit)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table issuances -DROP TABLE IF EXISTS issuances; -CREATE TABLE "issuances"( - tx_index INTEGER, - tx_hash TEXT, - msg_index INTEGER DEFAULT 0, - block_index INTEGER, - asset TEXT, - quantity INTEGER, - divisible BOOL, - source TEXT, - issuer TEXT, - transfer BOOL, - callable BOOL, - call_date INTEGER, - call_price REAL, - description TEXT, - fee_paid INTEGER, - locked BOOL, - status TEXT, - asset_longname TEXT, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index)); -INSERT INTO issuances VALUES(6,'22c284e49ded9ee4c668a675f1eaf32925992911384db539cfef1b3784ea7cd6',0,310005,'BBBB',1000000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(7,'21fe775c51dee2527cbafa7d5231a22ae988f7428563c2bbaad3692b65a32e28',0,310006,'BBBC',100000,0,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'foobar',50000000,0,'valid',NULL); --- Triggers and indices on issuances -CREATE TRIGGER _issuances_delete BEFORE DELETE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO issuances(rowid,tx_index,tx_hash,msg_index,block_index,asset,quantity,divisible,source,issuer,transfer,callable,call_date,call_price,description,fee_paid,locked,status,asset_longname) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.msg_index)||','||quote(old.block_index)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.divisible)||','||quote(old.source)||','||quote(old.issuer)||','||quote(old.transfer)||','||quote(old.callable)||','||quote(old.call_date)||','||quote(old.call_price)||','||quote(old.description)||','||quote(old.fee_paid)||','||quote(old.locked)||','||quote(old.status)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _issuances_insert AFTER INSERT ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM issuances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _issuances_update AFTER UPDATE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE issuances SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',msg_index='||quote(old.msg_index)||',block_index='||quote(old.block_index)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',divisible='||quote(old.divisible)||',source='||quote(old.source)||',issuer='||quote(old.issuer)||',transfer='||quote(old.transfer)||',callable='||quote(old.callable)||',call_date='||quote(old.call_date)||',call_price='||quote(old.call_price)||',description='||quote(old.description)||',fee_paid='||quote(old.fee_paid)||',locked='||quote(old.locked)||',status='||quote(old.status)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_asset_idx ON issuances (asset, status); - --- Table mempool -DROP TABLE IF EXISTS mempool; -CREATE TABLE mempool( - tx_hash TEXT, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); - --- Table messages -DROP TABLE IF EXISTS messages; -CREATE TABLE messages( - message_index INTEGER PRIMARY KEY, - block_index INTEGER, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); -INSERT INTO messages VALUES(0,310000,'insert','credits','{"action": "burn", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310000, "event": "6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597", "quantity": 93000000000}',0); -INSERT INTO messages VALUES(1,310000,'insert','burns','{"block_index": 310000, "burned": 62000000, "earned": 93000000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597", "tx_index": 1}',0); -INSERT INTO messages VALUES(2,310001,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310001, "event": "e535051ed7386995cc9152ea2d403f8460a59a5d084d4443158e466d743b3d63", "quantity": 50000000}',0); -INSERT INTO messages VALUES(3,310001,'insert','credits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310001, "event": "e535051ed7386995cc9152ea2d403f8460a59a5d084d4443158e466d743b3d63", "quantity": 50000000}',0); -INSERT INTO messages VALUES(4,310001,'insert','sends','{"asset": "XCP", "block_index": 310001, "destination": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "quantity": 50000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "e535051ed7386995cc9152ea2d403f8460a59a5d084d4443158e466d743b3d63", "tx_index": 2}',0); -INSERT INTO messages VALUES(5,310002,'insert','orders','{"block_index": 310002, "expiration": 10, "expire_index": 310012, "fee_provided": 1000000, "fee_provided_remaining": 1000000, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "BTC", "give_quantity": 50000000, "give_remaining": 50000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "tx_hash": "507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379", "tx_index": 3}',0); -INSERT INTO messages VALUES(6,310003,'insert','debits','{"action": "open order", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310003, "event": "178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424", "quantity": 105000000}',0); -INSERT INTO messages VALUES(7,310003,'insert','orders','{"block_index": 310003, "expiration": 10, "expire_index": 310013, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 900000, "fee_required_remaining": 900000, "get_asset": "BTC", "get_quantity": 50000000, "get_remaining": 50000000, "give_asset": "XCP", "give_quantity": 105000000, "give_remaining": 105000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "tx_hash": "178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424", "tx_index": 4}',0); -INSERT INTO messages VALUES(8,310003,'update','orders','{"fee_provided_remaining": 142858, "fee_required_remaining": 0, "get_remaining": 0, "give_remaining": 0, "status": "open", "tx_hash": "507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379"}',0); -INSERT INTO messages VALUES(9,310003,'update','orders','{"fee_provided_remaining": 6800, "fee_required_remaining": 42858, "get_remaining": 0, "give_remaining": 5000000, "status": "open", "tx_hash": "178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424"}',0); -INSERT INTO messages VALUES(10,310003,'insert','order_matches','{"backward_asset": "XCP", "backward_quantity": 100000000, "block_index": 310003, "fee_paid": 857142, "forward_asset": "BTC", "forward_quantity": 50000000, "id": "507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379_178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424", "match_expire_index": 310023, "status": "pending", "tx0_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "tx0_block_index": 310002, "tx0_expiration": 10, "tx0_hash": "507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379", "tx0_index": 3, "tx1_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "tx1_block_index": 310003, "tx1_expiration": 10, "tx1_hash": "178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424", "tx1_index": 4}',0); -INSERT INTO messages VALUES(11,310004,'insert','credits','{"action": "btcpay", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310004, "event": "6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82", "quantity": 100000000}',0); -INSERT INTO messages VALUES(12,310004,'update','order_matches','{"order_match_id": "507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379_178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424", "status": "completed"}',0); -INSERT INTO messages VALUES(13,310004,'insert','btcpays','{"block_index": 310004, "btc_amount": 50000000, "destination": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "order_match_id": "507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379_178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424", "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82", "tx_index": 5}',0); -INSERT INTO messages VALUES(14,310005,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310005, "event": "22c284e49ded9ee4c668a675f1eaf32925992911384db539cfef1b3784ea7cd6", "quantity": 50000000}',0); -INSERT INTO messages VALUES(15,310005,'insert','issuances','{"asset": "BBBB", "asset_longname": null, "block_index": 310005, "call_date": 0, "call_price": 0.0, "callable": false, "description": "", "divisible": true, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 1000000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "22c284e49ded9ee4c668a675f1eaf32925992911384db539cfef1b3784ea7cd6", "tx_index": 6}',0); -INSERT INTO messages VALUES(16,310005,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "BBBB", "block_index": 310005, "event": "22c284e49ded9ee4c668a675f1eaf32925992911384db539cfef1b3784ea7cd6", "quantity": 1000000000}',0); -INSERT INTO messages VALUES(17,310006,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310006, "event": "21fe775c51dee2527cbafa7d5231a22ae988f7428563c2bbaad3692b65a32e28", "quantity": 50000000}',0); -INSERT INTO messages VALUES(18,310006,'insert','issuances','{"asset": "BBBC", "asset_longname": null, "block_index": 310006, "call_date": 0, "call_price": 0.0, "callable": false, "description": "foobar", "divisible": false, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 100000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "21fe775c51dee2527cbafa7d5231a22ae988f7428563c2bbaad3692b65a32e28", "tx_index": 7}',0); -INSERT INTO messages VALUES(19,310006,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "BBBC", "block_index": 310006, "event": "21fe775c51dee2527cbafa7d5231a22ae988f7428563c2bbaad3692b65a32e28", "quantity": 100000}',0); -INSERT INTO messages VALUES(20,310007,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "BBBB", "block_index": 310007, "event": "611bd2d4fd7dae2282e00873249574cd435052cb274fe70ec9b96a1549d78042", "quantity": 4000000}',0); -INSERT INTO messages VALUES(21,310007,'insert','credits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "BBBB", "block_index": 310007, "event": "611bd2d4fd7dae2282e00873249574cd435052cb274fe70ec9b96a1549d78042", "quantity": 4000000}',0); -INSERT INTO messages VALUES(22,310007,'insert','sends','{"asset": "BBBB", "block_index": 310007, "destination": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "quantity": 4000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "611bd2d4fd7dae2282e00873249574cd435052cb274fe70ec9b96a1549d78042", "tx_index": 8}',0); -INSERT INTO messages VALUES(23,310008,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "BBBC", "block_index": 310008, "event": "2f40b6b1c699c15fd194fa30a003dcf2a2a4421a92aece4e5a5ee9c4b475d43d", "quantity": 526}',0); -INSERT INTO messages VALUES(24,310008,'insert','credits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "BBBC", "block_index": 310008, "event": "2f40b6b1c699c15fd194fa30a003dcf2a2a4421a92aece4e5a5ee9c4b475d43d", "quantity": 526}',0); -INSERT INTO messages VALUES(25,310008,'insert','sends','{"asset": "BBBC", "block_index": 310008, "destination": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "quantity": 526, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "2f40b6b1c699c15fd194fa30a003dcf2a2a4421a92aece4e5a5ee9c4b475d43d", "tx_index": 9}',0); -INSERT INTO messages VALUES(26,310009,'insert','debits','{"action": "dividend", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310009, "event": "8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e", "quantity": 24}',0); -INSERT INTO messages VALUES(27,310009,'insert','debits','{"action": "dividend fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310009, "event": "8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e", "quantity": 20000}',0); -INSERT INTO messages VALUES(28,310009,'insert','credits','{"action": "dividend", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310009, "event": "8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e", "quantity": 24}',0); -INSERT INTO messages VALUES(29,310009,'insert','dividends','{"asset": "BBBB", "block_index": 310009, "dividend_asset": "XCP", "fee_paid": 20000, "quantity_per_unit": 600, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e", "tx_index": 10}',0); -INSERT INTO messages VALUES(30,310010,'insert','debits','{"action": "dividend", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310010, "event": "1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b", "quantity": 420800}',0); -INSERT INTO messages VALUES(31,310010,'insert','debits','{"action": "dividend fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310010, "event": "1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b", "quantity": 20000}',0); -INSERT INTO messages VALUES(32,310010,'insert','credits','{"action": "dividend", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310010, "event": "1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b", "quantity": 420800}',0); -INSERT INTO messages VALUES(33,310010,'insert','dividends','{"asset": "BBBC", "block_index": 310010, "dividend_asset": "XCP", "fee_paid": 20000, "quantity_per_unit": 800, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b", "tx_index": 11}',0); -INSERT INTO messages VALUES(34,310011,'insert','broadcasts','{"block_index": 310011, "fee_fraction_int": 99999999, "locked": false, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "text": "Unit Test", "timestamp": 1388000000, "tx_hash": "6b219449c3c41b313c6f681d44438af8a5bff98e234f79513f8379550a4cc691", "tx_index": 12, "value": 100.0}',0); -INSERT INTO messages VALUES(35,310012,'insert','debits','{"action": "bet", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310012, "event": "72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64", "quantity": 50000000}',0); -INSERT INTO messages VALUES(36,310012,'insert','bets','{"bet_type": 0, "block_index": 310012, "counterwager_quantity": 25000000, "counterwager_remaining": 25000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310022, "fee_fraction_int": 99999999.0, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "leverage": 15120, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "target_value": 0.0, "tx_hash": "72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64", "tx_index": 13, "wager_quantity": 50000000, "wager_remaining": 50000000}',0); -INSERT INTO messages VALUES(37,310013,'update','orders','{"status": "expired", "tx_hash": "507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379"}',0); -INSERT INTO messages VALUES(38,310013,'insert','order_expirations','{"block_index": 310013, "order_hash": "507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379", "order_index": 3, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc"}',0); -INSERT INTO messages VALUES(39,310013,'insert','debits','{"action": "bet", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310013, "event": "d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda", "quantity": 25000000}',0); -INSERT INTO messages VALUES(40,310013,'insert','bets','{"bet_type": 1, "block_index": 310013, "counterwager_quantity": 41500000, "counterwager_remaining": 41500000, "deadline": 1388000100, "expiration": 10, "expire_index": 310023, "fee_fraction_int": 99999999.0, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "leverage": 15120, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "target_value": 0.0, "tx_hash": "d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda", "tx_index": 14, "wager_quantity": 25000000, "wager_remaining": 25000000}',0); -INSERT INTO messages VALUES(41,310013,'update','bets','{"counterwager_remaining": 4250000, "status": "open", "tx_hash": "72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64", "wager_remaining": 8500000}',0); -INSERT INTO messages VALUES(42,310013,'insert','credits','{"action": "filled", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310013, "event": "d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda", "quantity": 4250000}',0); -INSERT INTO messages VALUES(43,310013,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda", "wager_remaining": 4250000}',0); -INSERT INTO messages VALUES(44,310013,'insert','bet_matches','{"backward_quantity": 20750000, "block_index": 310013, "deadline": 1388000100, "fee_fraction_int": 99999999, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "forward_quantity": 41500000, "id": "72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64_d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda", "initial_value": 100.0, "leverage": 15120, "match_expire_index": 310022, "status": "pending", "target_value": 0.0, "tx0_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "tx0_bet_type": 0, "tx0_block_index": 310012, "tx0_expiration": 10, "tx0_hash": "72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64", "tx0_index": 13, "tx1_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "tx1_bet_type": 1, "tx1_block_index": 310013, "tx1_expiration": 10, "tx1_hash": "d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda", "tx1_index": 14}',0); -INSERT INTO messages VALUES(45,310014,'update','orders','{"status": "expired", "tx_hash": "178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424"}',0); -INSERT INTO messages VALUES(46,310014,'insert','credits','{"action": "cancel order", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310014, "event": "178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424", "quantity": 5000000}',0); -INSERT INTO messages VALUES(47,310014,'insert','order_expirations','{"block_index": 310014, "order_hash": "178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424", "order_index": 4, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc"}',0); -INSERT INTO messages VALUES(48,310014,'insert','debits','{"action": "bet", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310014, "event": "f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93", "quantity": 150000000}',0); -INSERT INTO messages VALUES(49,310014,'insert','bets','{"bet_type": 0, "block_index": 310014, "counterwager_quantity": 350000000, "counterwager_remaining": 350000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310024, "fee_fraction_int": 99999999.0, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "leverage": 5040, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "target_value": 0.0, "tx_hash": "f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93", "tx_index": 15, "wager_quantity": 150000000, "wager_remaining": 150000000}',0); -INSERT INTO messages VALUES(50,310015,'insert','debits','{"action": "bet", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310015, "event": "c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6", "quantity": 350000000}',0); -INSERT INTO messages VALUES(51,310015,'insert','bets','{"bet_type": 1, "block_index": 310015, "counterwager_quantity": 150000000, "counterwager_remaining": 150000000, "deadline": 1388000100, "expiration": 10, "expire_index": 310025, "fee_fraction_int": 99999999.0, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "leverage": 5040, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "target_value": 0.0, "tx_hash": "c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6", "tx_index": 16, "wager_quantity": 350000000, "wager_remaining": 350000000}',0); -INSERT INTO messages VALUES(52,310015,'insert','credits','{"action": "filled", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310015, "event": "c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6", "quantity": 0}',0); -INSERT INTO messages VALUES(53,310015,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(54,310015,'insert','credits','{"action": "filled", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310015, "event": "c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6", "quantity": 0}',0); -INSERT INTO messages VALUES(55,310015,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(56,310015,'insert','bet_matches','{"backward_quantity": 350000000, "block_index": 310015, "deadline": 1388000100, "fee_fraction_int": 99999999, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "forward_quantity": 150000000, "id": "f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93_c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6", "initial_value": 100.0, "leverage": 5040, "match_expire_index": 310024, "status": "pending", "target_value": 0.0, "tx0_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "tx0_bet_type": 0, "tx0_block_index": 310014, "tx0_expiration": 10, "tx0_hash": "f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93", "tx0_index": 15, "tx1_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "tx1_bet_type": 1, "tx1_block_index": 310015, "tx1_expiration": 10, "tx1_hash": "c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6", "tx1_index": 16}',0); -INSERT INTO messages VALUES(57,310016,'insert','debits','{"action": "bet", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310016, "event": "a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab", "quantity": 750000000}',0); -INSERT INTO messages VALUES(58,310016,'insert','bets','{"bet_type": 2, "block_index": 310016, "counterwager_quantity": 650000000, "counterwager_remaining": 650000000, "deadline": 1388000200, "expiration": 10, "expire_index": 310026, "fee_fraction_int": 99999999.0, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "leverage": 5040, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "target_value": 1.0, "tx_hash": "a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab", "tx_index": 17, "wager_quantity": 750000000, "wager_remaining": 750000000}',0); -INSERT INTO messages VALUES(59,310017,'insert','debits','{"action": "bet", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310017, "event": "622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3", "quantity": 650000000}',0); -INSERT INTO messages VALUES(60,310017,'insert','bets','{"bet_type": 3, "block_index": 310017, "counterwager_quantity": 750000000, "counterwager_remaining": 750000000, "deadline": 1388000200, "expiration": 10, "expire_index": 310027, "fee_fraction_int": 99999999.0, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "leverage": 5040, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "target_value": 1.0, "tx_hash": "622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3", "tx_index": 18, "wager_quantity": 650000000, "wager_remaining": 650000000}',0); -INSERT INTO messages VALUES(61,310017,'insert','credits','{"action": "filled", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310017, "event": "622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3", "quantity": 0}',0); -INSERT INTO messages VALUES(62,310017,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(63,310017,'insert','credits','{"action": "filled", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310017, "event": "622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3", "quantity": 0}',0); -INSERT INTO messages VALUES(64,310017,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(65,310017,'insert','bet_matches','{"backward_quantity": 650000000, "block_index": 310017, "deadline": 1388000200, "fee_fraction_int": 99999999, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "forward_quantity": 750000000, "id": "a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab_622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3", "initial_value": 100.0, "leverage": 5040, "match_expire_index": 310026, "status": "pending", "target_value": 1.0, "tx0_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "tx0_bet_type": 2, "tx0_block_index": 310016, "tx0_expiration": 10, "tx0_hash": "a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab", "tx0_index": 17, "tx1_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "tx1_bet_type": 3, "tx1_block_index": 310017, "tx1_expiration": 10, "tx1_hash": "622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3", "tx1_index": 18}',0); -INSERT INTO messages VALUES(66,310018,'insert','broadcasts','{"block_index": 310018, "fee_fraction_int": 5000000, "locked": false, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "text": "Unit Test", "timestamp": 1388000050, "tx_hash": "4184216d2afb9be606bd8b5a08ab19c50f4b274c962cf30a3985094f7444f548", "tx_index": 19, "value": 99.86166}',0); -INSERT INTO messages VALUES(67,310018,'insert','credits','{"action": "bet settled: liquidated for bear", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310018, "event": "4184216d2afb9be606bd8b5a08ab19c50f4b274c962cf30a3985094f7444f548", "quantity": 59137500}',0); -INSERT INTO messages VALUES(68,310018,'insert','credits','{"action": "feed fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310018, "event": "4184216d2afb9be606bd8b5a08ab19c50f4b274c962cf30a3985094f7444f548", "quantity": 3112500}',0); -INSERT INTO messages VALUES(69,310018,'insert','bet_match_resolutions','{"bear_credit": 59137500, "bet_match_id": "72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64_d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda", "bet_match_type_id": 1, "block_index": 310018, "bull_credit": 0, "escrow_less_fee": null, "fee": 3112500, "settled": false, "winner": null}',0); -INSERT INTO messages VALUES(70,310018,'update','bet_matches','{"bet_match_id": "72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64_d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda", "status": "settled: liquidated for bear"}',0); -INSERT INTO messages VALUES(71,310019,'insert','broadcasts','{"block_index": 310019, "fee_fraction_int": 5000000, "locked": false, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "text": "Unit Test", "timestamp": 1388000101, "tx_hash": "81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d", "tx_index": 20, "value": 100.343}',0); -INSERT INTO messages VALUES(72,310019,'insert','credits','{"action": "bet settled", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310019, "event": "81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d", "quantity": 159300000}',0); -INSERT INTO messages VALUES(73,310019,'insert','credits','{"action": "bet settled", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310019, "event": "81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d", "quantity": 315700000}',0); -INSERT INTO messages VALUES(74,310019,'insert','credits','{"action": "feed fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310019, "event": "81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d", "quantity": 25000000}',0); -INSERT INTO messages VALUES(75,310019,'insert','bet_match_resolutions','{"bear_credit": 315700000, "bet_match_id": "f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93_c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6", "bet_match_type_id": 1, "block_index": 310019, "bull_credit": 159300000, "escrow_less_fee": null, "fee": 25000000, "settled": true, "winner": null}',0); -INSERT INTO messages VALUES(76,310019,'update','bet_matches','{"bet_match_id": "f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93_c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6", "status": "settled"}',0); -INSERT INTO messages VALUES(77,310020,'insert','broadcasts','{"block_index": 310020, "fee_fraction_int": 5000000, "locked": false, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "text": "Unit Test", "timestamp": 1388000201, "tx_hash": "248e7b3add0f648221a23da67e6e3ab52c12fd50b4ce589ad8273877c89967ad", "tx_index": 21, "value": 2.0}',0); -INSERT INTO messages VALUES(78,310020,'insert','credits','{"action": "bet settled: for notequal", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310020, "event": "248e7b3add0f648221a23da67e6e3ab52c12fd50b4ce589ad8273877c89967ad", "quantity": 1330000000}',0); -INSERT INTO messages VALUES(79,310020,'insert','credits','{"action": "feed fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310020, "event": "248e7b3add0f648221a23da67e6e3ab52c12fd50b4ce589ad8273877c89967ad", "quantity": 70000000}',0); -INSERT INTO messages VALUES(80,310020,'insert','bet_match_resolutions','{"bear_credit": null, "bet_match_id": "a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab_622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3", "bet_match_type_id": 5, "block_index": 310020, "bull_credit": null, "escrow_less_fee": 1330000000, "fee": 70000000, "settled": null, "winner": "NotEqual"}',0); -INSERT INTO messages VALUES(81,310020,'update','bet_matches','{"bet_match_id": "a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab_622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3", "status": "settled: for notequal"}',0); -INSERT INTO messages VALUES(82,310021,'insert','debits','{"action": "open order", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "BBBB", "block_index": 310021, "event": "6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58", "quantity": 50000000}',0); -INSERT INTO messages VALUES(83,310021,'insert','orders','{"block_index": 310021, "expiration": 10, "expire_index": 310031, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 50000000, "get_remaining": 50000000, "give_asset": "BBBB", "give_quantity": 50000000, "give_remaining": 50000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "tx_hash": "6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58", "tx_index": 22}',0); -INSERT INTO messages VALUES(84,310022,'insert','credits','{"action": "burn", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310022, "event": "c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc", "quantity": 56999887262}',0); -INSERT INTO messages VALUES(85,310022,'insert','burns','{"block_index": 310022, "burned": 38000000, "earned": 56999887262, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc", "tx_index": 23}',0); -INSERT INTO messages VALUES(86,310023,'update','bets','{"status": "expired", "tx_hash": "72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64"}',0); -INSERT INTO messages VALUES(87,310023,'insert','credits','{"action": "recredit wager remaining", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310023, "event": "72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64", "quantity": 8500000}',0); -INSERT INTO messages VALUES(88,310023,'insert','bet_expirations','{"bet_hash": "72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64", "bet_index": 13, "block_index": 310023, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc"}',0); -INSERT INTO messages VALUES(89,310023,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "BBBC", "block_index": 310023, "event": "004cbeaac3e999874c19d95a83cde38472c9392c17ae93b49e741ce078694912", "quantity": 10000}',0); -INSERT INTO messages VALUES(90,310023,'insert','credits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "BBBC", "block_index": 310023, "event": "004cbeaac3e999874c19d95a83cde38472c9392c17ae93b49e741ce078694912", "quantity": 10000}',0); -INSERT INTO messages VALUES(91,310023,'insert','sends','{"asset": "BBBC", "block_index": 310023, "destination": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "quantity": 10000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "004cbeaac3e999874c19d95a83cde38472c9392c17ae93b49e741ce078694912", "tx_index": 24}',0); -INSERT INTO messages VALUES(92,310032,'update','orders','{"status": "expired", "tx_hash": "6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58"}',0); -INSERT INTO messages VALUES(93,310032,'insert','credits','{"action": "cancel order", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "BBBB", "block_index": 310032, "event": "6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58", "quantity": 50000000}',0); -INSERT INTO messages VALUES(94,310032,'insert','order_expirations','{"block_index": 310032, "order_hash": "6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58", "order_index": 22, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc"}',0); --- Triggers and indices on messages -CREATE INDEX block_index_message_index_idx ON messages (block_index, message_index); - --- Table order_expirations -DROP TABLE IF EXISTS order_expirations; -CREATE TABLE order_expirations( - order_index INTEGER PRIMARY KEY, - order_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (order_index, order_hash) REFERENCES orders(tx_index, tx_hash)); -INSERT INTO order_expirations VALUES(3,'507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',310013); -INSERT INTO order_expirations VALUES(4,'178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',310014); -INSERT INTO order_expirations VALUES(22,'6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',310032); --- Triggers and indices on order_expirations -CREATE TRIGGER _order_expirations_delete BEFORE DELETE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_expirations(rowid,order_index,order_hash,source,block_index) VALUES('||old.rowid||','||quote(old.order_index)||','||quote(old.order_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_expirations_insert AFTER INSERT ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_expirations_update AFTER UPDATE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_expirations SET order_index='||quote(old.order_index)||',order_hash='||quote(old.order_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_match_expirations -DROP TABLE IF EXISTS order_match_expirations; -CREATE TABLE order_match_expirations( - order_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (order_match_id) REFERENCES order_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on order_match_expirations -CREATE TRIGGER _order_match_expirations_delete BEFORE DELETE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_match_expirations(rowid,order_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.order_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_match_expirations_insert AFTER INSERT ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_match_expirations_update AFTER UPDATE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_match_expirations SET order_match_id='||quote(old.order_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_matches -DROP TABLE IF EXISTS order_matches; -CREATE TABLE order_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - forward_asset TEXT, - forward_quantity INTEGER, - backward_asset TEXT, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO order_matches VALUES('507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379_178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424',3,'507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',4,'178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BTC',50000000,'XCP',100000000,310002,310003,310003,10,10,310023,857142,'completed'); --- Triggers and indices on order_matches -CREATE TRIGGER _order_matches_delete BEFORE DELETE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,forward_asset,forward_quantity,backward_asset,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_paid,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.forward_asset)||','||quote(old.forward_quantity)||','||quote(old.backward_asset)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _order_matches_insert AFTER INSERT ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_matches_update AFTER UPDATE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',forward_asset='||quote(old.forward_asset)||',forward_quantity='||quote(old.forward_quantity)||',backward_asset='||quote(old.backward_asset)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX backward_status_idx ON order_matches (backward_asset, status); -CREATE INDEX forward_status_idx ON order_matches (forward_asset, status); -CREATE INDEX match_expire_idx ON order_matches (status, match_expire_index); -CREATE INDEX tx0_address_idx ON order_matches (tx0_address); -CREATE INDEX tx1_address_idx ON order_matches (tx1_address); - --- Table orders -DROP TABLE IF EXISTS orders; -CREATE TABLE orders( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - give_asset TEXT, - give_quantity INTEGER, - give_remaining INTEGER, - get_asset TEXT, - get_quantity INTEGER, - get_remaining INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_required INTEGER, - fee_required_remaining INTEGER, - fee_provided INTEGER, - fee_provided_remaining INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO orders VALUES(3,'507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379',310002,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BTC',50000000,0,'XCP',100000000,0,10,310012,0,0,1000000,142858,'expired'); -INSERT INTO orders VALUES(4,'178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424',310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',105000000,5000000,'BTC',50000000,0,10,310013,900000,42858,6800,6800,'expired'); -INSERT INTO orders VALUES(22,'6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58',310021,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BBBB',50000000,50000000,'XCP',50000000,50000000,10,310031,0,0,6800,6800,'expired'); --- Triggers and indices on orders -CREATE TRIGGER _orders_delete BEFORE DELETE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO orders(rowid,tx_index,tx_hash,block_index,source,give_asset,give_quantity,give_remaining,get_asset,get_quantity,get_remaining,expiration,expire_index,fee_required,fee_required_remaining,fee_provided,fee_provided_remaining,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.give_asset)||','||quote(old.give_quantity)||','||quote(old.give_remaining)||','||quote(old.get_asset)||','||quote(old.get_quantity)||','||quote(old.get_remaining)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_required)||','||quote(old.fee_required_remaining)||','||quote(old.fee_provided)||','||quote(old.fee_provided_remaining)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _orders_insert AFTER INSERT ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM orders WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _orders_update AFTER UPDATE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE orders SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',give_asset='||quote(old.give_asset)||',give_quantity='||quote(old.give_quantity)||',give_remaining='||quote(old.give_remaining)||',get_asset='||quote(old.get_asset)||',get_quantity='||quote(old.get_quantity)||',get_remaining='||quote(old.get_remaining)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_required='||quote(old.fee_required)||',fee_required_remaining='||quote(old.fee_required_remaining)||',fee_provided='||quote(old.fee_provided)||',fee_provided_remaining='||quote(old.fee_provided_remaining)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX expire_idx ON orders (expire_index, status); -CREATE INDEX give_asset_idx ON orders (give_asset); -CREATE INDEX give_get_status_idx ON orders (get_asset, give_asset, status); -CREATE INDEX give_status_idx ON orders (give_asset, status); -CREATE INDEX source_give_status_idx ON orders (source, give_asset, status); - --- Table rps -DROP TABLE IF EXISTS rps; -CREATE TABLE rps( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - possible_moves INTEGER, - wager INTEGER, - move_random_hash TEXT, - expiration INTEGER, - expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); --- Triggers and indices on rps -CREATE TRIGGER _rps_delete BEFORE DELETE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps(rowid,tx_index,tx_hash,block_index,source,possible_moves,wager,move_random_hash,expiration,expire_index,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.possible_moves)||','||quote(old.wager)||','||quote(old.move_random_hash)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_insert AFTER INSERT ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_update AFTER UPDATE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',possible_moves='||quote(old.possible_moves)||',wager='||quote(old.wager)||',move_random_hash='||quote(old.move_random_hash)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX matching_idx ON rps (wager, possible_moves); - --- Table rps_expirations -DROP TABLE IF EXISTS rps_expirations; -CREATE TABLE rps_expirations( - rps_index INTEGER PRIMARY KEY, - rps_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (rps_index, rps_hash) REFERENCES rps(tx_index, tx_hash)); --- Triggers and indices on rps_expirations -CREATE TRIGGER _rps_expirations_delete BEFORE DELETE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_expirations(rowid,rps_index,rps_hash,source,block_index) VALUES('||old.rowid||','||quote(old.rps_index)||','||quote(old.rps_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_expirations_insert AFTER INSERT ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_expirations_update AFTER UPDATE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_expirations SET rps_index='||quote(old.rps_index)||',rps_hash='||quote(old.rps_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_match_expirations -DROP TABLE IF EXISTS rps_match_expirations; -CREATE TABLE rps_match_expirations( - rps_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (rps_match_id) REFERENCES rps_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on rps_match_expirations -CREATE TRIGGER _rps_match_expirations_delete BEFORE DELETE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_match_expirations(rowid,rps_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.rps_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_match_expirations_insert AFTER INSERT ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_match_expirations_update AFTER UPDATE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_match_expirations SET rps_match_id='||quote(old.rps_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_matches -DROP TABLE IF EXISTS rps_matches; -CREATE TABLE rps_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_move_random_hash TEXT, - tx1_move_random_hash TEXT, - wager INTEGER, - possible_moves INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rps_matches -CREATE TRIGGER _rps_matches_delete BEFORE DELETE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_move_random_hash,tx1_move_random_hash,wager,possible_moves,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_move_random_hash)||','||quote(old.tx1_move_random_hash)||','||quote(old.wager)||','||quote(old.possible_moves)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_matches_insert AFTER INSERT ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_matches_update AFTER UPDATE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_move_random_hash='||quote(old.tx0_move_random_hash)||',tx1_move_random_hash='||quote(old.tx1_move_random_hash)||',wager='||quote(old.wager)||',possible_moves='||quote(old.possible_moves)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_expire_idx ON rps_matches (status, match_expire_index); -CREATE INDEX rps_tx0_address_idx ON rps_matches (tx0_address); -CREATE INDEX rps_tx1_address_idx ON rps_matches (tx1_address); - --- Table rpsresolves -DROP TABLE IF EXISTS rpsresolves; -CREATE TABLE rpsresolves( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - move INTEGER, - random TEXT, - rps_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rpsresolves -CREATE TRIGGER _rpsresolves_delete BEFORE DELETE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rpsresolves(rowid,tx_index,tx_hash,block_index,source,move,random,rps_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.move)||','||quote(old.random)||','||quote(old.rps_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rpsresolves_insert AFTER INSERT ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rpsresolves WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rpsresolves_update AFTER UPDATE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rpsresolves SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',move='||quote(old.move)||',random='||quote(old.random)||',rps_match_id='||quote(old.rps_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_id_idx ON rpsresolves (rps_match_id); - --- Table sends -DROP TABLE IF EXISTS sends; -CREATE TABLE "sends"( - tx_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - quantity INTEGER, - status TEXT, - msg_index INTEGER DEFAULT 0, memo BLOB, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); -INSERT INTO sends VALUES(2,'e535051ed7386995cc9152ea2d403f8460a59a5d084d4443158e466d743b3d63',310001,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',50000000,'valid',0,NULL); -INSERT INTO sends VALUES(8,'611bd2d4fd7dae2282e00873249574cd435052cb274fe70ec9b96a1549d78042',310007,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBB',4000000,'valid',0,NULL); -INSERT INTO sends VALUES(9,'2f40b6b1c699c15fd194fa30a003dcf2a2a4421a92aece4e5a5ee9c4b475d43d',310008,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBC',526,'valid',0,NULL); -INSERT INTO sends VALUES(24,'004cbeaac3e999874c19d95a83cde38472c9392c17ae93b49e741ce078694912',310023,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BBBC',10000,'valid',0,NULL); --- Triggers and indices on sends -CREATE TRIGGER _sends_delete BEFORE DELETE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sends(rowid,tx_index,tx_hash,block_index,source,destination,asset,quantity,status,msg_index,memo) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.status)||','||quote(old.msg_index)||','||quote(old.memo)||')'); - END; -CREATE TRIGGER _sends_insert AFTER INSERT ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sends_update AFTER UPDATE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',status='||quote(old.status)||',msg_index='||quote(old.msg_index)||',memo='||quote(old.memo)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX destination_idx ON sends (destination); -CREATE INDEX memo_idx ON sends (memo); -CREATE INDEX source_idx ON sends (source); - --- Table sweeps -DROP TABLE IF EXISTS sweeps; -CREATE TABLE sweeps( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - flags INTEGER, - status TEXT, - memo BLOB, - fee_paid INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on sweeps -CREATE TRIGGER _sweeps_delete BEFORE DELETE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sweeps(rowid,tx_index,tx_hash,block_index,source,destination,flags,status,memo,fee_paid) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.flags)||','||quote(old.status)||','||quote(old.memo)||','||quote(old.fee_paid)||')'); - END; -CREATE TRIGGER _sweeps_insert AFTER INSERT ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sweeps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sweeps_update AFTER UPDATE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sweeps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',flags='||quote(old.flags)||',status='||quote(old.status)||',memo='||quote(old.memo)||',fee_paid='||quote(old.fee_paid)||' WHERE rowid='||old.rowid); - END; - --- Table transactions -DROP TABLE IF EXISTS transactions; -CREATE TABLE transactions( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - block_hash TEXT, - block_time INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - fee INTEGER, - data BLOB, - supported BOOL DEFAULT 1, - FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), - PRIMARY KEY (tx_index, tx_hash, block_index)); -INSERT INTO transactions VALUES(1,'6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); -INSERT INTO transactions VALUES(2,'e535051ed7386995cc9152ea2d403f8460a59a5d084d4443158e466d743b3d63',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'0000000000000000000000010000000002FAF080',1); -INSERT INTO transactions VALUES(3,'507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,1000000,X'0000000A00000000000000000000000002FAF08000000000000000010000000005F5E100000A0000000000000000',1); -INSERT INTO transactions VALUES(4,'178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000006422C4000000000000000000000000002FAF080000A00000000000DBBA0',1); -INSERT INTO transactions VALUES(5,'6a386e57268814b5dd38dce3e6471223e09d29aaca603183c3418fe90df94e82',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',50000000,9675,X'0000000B507FDABA6D6173642277FA3744428FA9AED27C8DC16612AAE6B2AD3A9FBB5379178E4AC45CF71F96A3A09F58739B504348173DA619E567ED0B3C6BC790181424',1); -INSERT INTO transactions VALUES(6,'22c284e49ded9ee4c668a675f1eaf32925992911384db539cfef1b3784ea7cd6',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'000000140000000000004767000000003B9ACA000100000000000000000000',1); -INSERT INTO transactions VALUES(7,'21fe775c51dee2527cbafa7d5231a22ae988f7428563c2bbaad3692b65a32e28',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'00000014000000000000476800000000000186A00000000000000000000006666F6F626172',1); -INSERT INTO transactions VALUES(8,'611bd2d4fd7dae2282e00873249574cd435052cb274fe70ec9b96a1549d78042',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'00000000000000000000476700000000003D0900',1); -INSERT INTO transactions VALUES(9,'2f40b6b1c699c15fd194fa30a003dcf2a2a4421a92aece4e5a5ee9c4b475d43d',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'000000000000000000004768000000000000020E',1); -INSERT INTO transactions VALUES(10,'8d3c3043fd1507d2446705284cb9b08315e4573bb6530eacf091de73bebebd9e',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'00000032000000000000025800000000000047670000000000000001',1); -INSERT INTO transactions VALUES(11,'1330d6ba840f2a7b29cbfb8d7fa1e22450aad4111e2a7ef1fcaaf518dda6490b',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'00000032000000000000032000000000000047680000000000000001',1); -INSERT INTO transactions VALUES(12,'6b219449c3c41b313c6f681d44438af8a5bff98e234f79513f8379550a4cc691',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB3300405900000000000005F5E0FF09556E69742054657374',1); -INSERT INTO transactions VALUES(13,'72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000052BB33640000000002FAF08000000000017D7840000000000000000000003B100000000A',1); -INSERT INTO transactions VALUES(14,'d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000152BB336400000000017D78400000000002793D60000000000000000000003B100000000A',1); -INSERT INTO transactions VALUES(15,'f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000052BB33640000000008F0D1800000000014DC93800000000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(16,'c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000152BB33640000000014DC93800000000008F0D1800000000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(17,'a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000252BB33C8000000002CB417800000000026BE36803FF0000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(18,'622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000352BB33C80000000026BE3680000000002CB417803FF0000000000000000013B00000000A',1); -INSERT INTO transactions VALUES(19,'4184216d2afb9be606bd8b5a08ab19c50f4b274c962cf30a3985094f7444f548',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB33324058F7256FFC115E004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(20,'81c1352495060dcc6b95618054280fbce920365aa025f4903e1840d6902b067d',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB3365405915F3B645A1CB004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(21,'248e7b3add0f648221a23da67e6e3ab52c12fd50b4ce589ad8273877c89967ad',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB33C94000000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(22,'6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58',310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000047670000000002FAF08000000000000000010000000002FAF080000A0000000000000000',1); -INSERT INTO transactions VALUES(23,'c3f73d02e630cb2824f044e6d91f47b1ce351feff0339ea7b85652d24d8ff6bc',310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mvCounterpartyXXXXXXXXXXXXXXW24Hef',100000000,10150,X'',1); -INSERT INTO transactions VALUES(24,'004cbeaac3e999874c19d95a83cde38472c9392c17ae93b49e741ce078694912',310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'0000000000000000000047680000000000002710',1); --- Triggers and indices on transactions -CREATE INDEX index_hash_index_idx ON transactions (tx_index, tx_hash, block_index); -CREATE INDEX index_index_idx ON transactions (block_index, tx_index); -CREATE INDEX tx_hash_idx ON transactions (tx_hash); -CREATE INDEX tx_index_idx ON transactions (tx_index); - --- Table undolog -DROP TABLE IF EXISTS undolog; -CREATE TABLE undolog( - undo_index INTEGER PRIMARY KEY AUTOINCREMENT, - sql TEXT); -INSERT INTO undolog VALUES(4,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=93000000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(5,'DELETE FROM debits WHERE rowid=1'); -INSERT INTO undolog VALUES(6,'DELETE FROM balances WHERE rowid=2'); -INSERT INTO undolog VALUES(7,'DELETE FROM credits WHERE rowid=2'); -INSERT INTO undolog VALUES(8,'DELETE FROM sends WHERE rowid=1'); -INSERT INTO undolog VALUES(9,'DELETE FROM orders WHERE rowid=1'); -INSERT INTO undolog VALUES(10,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92950000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(11,'DELETE FROM debits WHERE rowid=2'); -INSERT INTO undolog VALUES(12,'DELETE FROM orders WHERE rowid=2'); -INSERT INTO undolog VALUES(13,'UPDATE orders SET tx_index=3,tx_hash=''507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379'',block_index=310002,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',give_asset=''BTC'',give_quantity=50000000,give_remaining=50000000,get_asset=''XCP'',get_quantity=100000000,get_remaining=100000000,expiration=10,expire_index=310012,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=1000000,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(14,'UPDATE orders SET tx_index=4,tx_hash=''178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424'',block_index=310003,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',give_asset=''XCP'',give_quantity=105000000,give_remaining=105000000,get_asset=''BTC'',get_quantity=50000000,get_remaining=50000000,expiration=10,expire_index=310013,fee_required=900000,fee_required_remaining=900000,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(15,'DELETE FROM order_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(16,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92845000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(17,'DELETE FROM credits WHERE rowid=3'); -INSERT INTO undolog VALUES(18,'UPDATE order_matches SET id=''507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379_178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424'',tx0_index=3,tx0_hash=''507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379'',tx0_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',tx1_index=4,tx1_hash=''178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424'',tx1_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',forward_asset=''BTC'',forward_quantity=50000000,backward_asset=''XCP'',backward_quantity=100000000,tx0_block_index=310002,tx1_block_index=310003,block_index=310003,tx0_expiration=10,tx1_expiration=10,match_expire_index=310023,fee_paid=857142,status=''pending'' WHERE rowid=1'); -INSERT INTO undolog VALUES(19,'DELETE FROM btcpays WHERE rowid=5'); -INSERT INTO undolog VALUES(20,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92945000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(21,'DELETE FROM debits WHERE rowid=3'); -INSERT INTO undolog VALUES(22,'DELETE FROM assets WHERE rowid=3'); -INSERT INTO undolog VALUES(23,'DELETE FROM issuances WHERE rowid=1'); -INSERT INTO undolog VALUES(24,'DELETE FROM balances WHERE rowid=3'); -INSERT INTO undolog VALUES(25,'DELETE FROM credits WHERE rowid=4'); -INSERT INTO undolog VALUES(26,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92895000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(27,'DELETE FROM debits WHERE rowid=4'); -INSERT INTO undolog VALUES(28,'DELETE FROM assets WHERE rowid=4'); -INSERT INTO undolog VALUES(29,'DELETE FROM issuances WHERE rowid=2'); -INSERT INTO undolog VALUES(30,'DELETE FROM balances WHERE rowid=4'); -INSERT INTO undolog VALUES(31,'DELETE FROM credits WHERE rowid=5'); -INSERT INTO undolog VALUES(32,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''BBBB'',quantity=1000000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(33,'DELETE FROM debits WHERE rowid=5'); -INSERT INTO undolog VALUES(34,'DELETE FROM balances WHERE rowid=5'); -INSERT INTO undolog VALUES(35,'DELETE FROM credits WHERE rowid=6'); -INSERT INTO undolog VALUES(36,'DELETE FROM sends WHERE rowid=2'); -INSERT INTO undolog VALUES(37,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''BBBC'',quantity=100000 WHERE rowid=4'); -INSERT INTO undolog VALUES(38,'DELETE FROM debits WHERE rowid=6'); -INSERT INTO undolog VALUES(39,'DELETE FROM balances WHERE rowid=6'); -INSERT INTO undolog VALUES(40,'DELETE FROM credits WHERE rowid=7'); -INSERT INTO undolog VALUES(41,'DELETE FROM sends WHERE rowid=3'); -INSERT INTO undolog VALUES(42,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92845000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(43,'DELETE FROM debits WHERE rowid=7'); -INSERT INTO undolog VALUES(44,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92844999976 WHERE rowid=1'); -INSERT INTO undolog VALUES(45,'DELETE FROM debits WHERE rowid=8'); -INSERT INTO undolog VALUES(46,'UPDATE balances SET address=''mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'',asset=''XCP'',quantity=50000000 WHERE rowid=2'); -INSERT INTO undolog VALUES(47,'DELETE FROM credits WHERE rowid=8'); -INSERT INTO undolog VALUES(48,'DELETE FROM dividends WHERE rowid=10'); -INSERT INTO undolog VALUES(49,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92844979976 WHERE rowid=1'); -INSERT INTO undolog VALUES(50,'DELETE FROM debits WHERE rowid=9'); -INSERT INTO undolog VALUES(51,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92844559176 WHERE rowid=1'); -INSERT INTO undolog VALUES(52,'DELETE FROM debits WHERE rowid=10'); -INSERT INTO undolog VALUES(53,'UPDATE balances SET address=''mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'',asset=''XCP'',quantity=50000024 WHERE rowid=2'); -INSERT INTO undolog VALUES(54,'DELETE FROM credits WHERE rowid=9'); -INSERT INTO undolog VALUES(55,'DELETE FROM dividends WHERE rowid=11'); -INSERT INTO undolog VALUES(56,'DELETE FROM broadcasts WHERE rowid=12'); -INSERT INTO undolog VALUES(57,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92844539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(58,'DELETE FROM debits WHERE rowid=11'); -INSERT INTO undolog VALUES(59,'DELETE FROM bets WHERE rowid=1'); -INSERT INTO undolog VALUES(60,'UPDATE orders SET tx_index=3,tx_hash=''507fdaba6d6173642277fa3744428fa9aed27c8dc16612aae6b2ad3a9fbb5379'',block_index=310002,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',give_asset=''BTC'',give_quantity=50000000,give_remaining=0,get_asset=''XCP'',get_quantity=100000000,get_remaining=0,expiration=10,expire_index=310012,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=142858,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(61,'DELETE FROM order_expirations WHERE rowid=3'); -INSERT INTO undolog VALUES(62,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92794539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(63,'DELETE FROM debits WHERE rowid=12'); -INSERT INTO undolog VALUES(64,'DELETE FROM bets WHERE rowid=2'); -INSERT INTO undolog VALUES(65,'UPDATE bets SET tx_index=13,tx_hash=''72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64'',block_index=310012,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',feed_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',bet_type=0,deadline=1388000100,wager_quantity=50000000,wager_remaining=50000000,counterwager_quantity=25000000,counterwager_remaining=25000000,target_value=0.0,leverage=15120,expiration=10,expire_index=310022,fee_fraction_int=99999999,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(66,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92769539176 WHERE rowid=1'); -INSERT INTO undolog VALUES(67,'DELETE FROM credits WHERE rowid=10'); -INSERT INTO undolog VALUES(68,'UPDATE bets SET tx_index=14,tx_hash=''d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda'',block_index=310013,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',feed_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',bet_type=1,deadline=1388000100,wager_quantity=25000000,wager_remaining=25000000,counterwager_quantity=41500000,counterwager_remaining=41500000,target_value=0.0,leverage=15120,expiration=10,expire_index=310023,fee_fraction_int=99999999,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(69,'DELETE FROM bet_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(70,'UPDATE orders SET tx_index=4,tx_hash=''178e4ac45cf71f96a3a09f58739b504348173da619e567ed0b3c6bc790181424'',block_index=310003,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',give_asset=''XCP'',give_quantity=105000000,give_remaining=5000000,get_asset=''BTC'',get_quantity=50000000,get_remaining=0,expiration=10,expire_index=310013,fee_required=900000,fee_required_remaining=42858,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=2'); -INSERT INTO undolog VALUES(71,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92773789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(72,'DELETE FROM credits WHERE rowid=11'); -INSERT INTO undolog VALUES(73,'DELETE FROM order_expirations WHERE rowid=4'); -INSERT INTO undolog VALUES(74,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92778789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(75,'DELETE FROM debits WHERE rowid=13'); -INSERT INTO undolog VALUES(76,'DELETE FROM bets WHERE rowid=3'); -INSERT INTO undolog VALUES(77,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92628789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(78,'DELETE FROM debits WHERE rowid=14'); -INSERT INTO undolog VALUES(79,'DELETE FROM bets WHERE rowid=4'); -INSERT INTO undolog VALUES(80,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(81,'DELETE FROM credits WHERE rowid=12'); -INSERT INTO undolog VALUES(82,'UPDATE bets SET tx_index=15,tx_hash=''f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93'',block_index=310014,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',feed_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',bet_type=0,deadline=1388000100,wager_quantity=150000000,wager_remaining=150000000,counterwager_quantity=350000000,counterwager_remaining=350000000,target_value=0.0,leverage=5040,expiration=10,expire_index=310024,fee_fraction_int=99999999,status=''open'' WHERE rowid=3'); -INSERT INTO undolog VALUES(83,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(84,'DELETE FROM credits WHERE rowid=13'); -INSERT INTO undolog VALUES(85,'UPDATE bets SET tx_index=16,tx_hash=''c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6'',block_index=310015,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',feed_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',bet_type=1,deadline=1388000100,wager_quantity=350000000,wager_remaining=350000000,counterwager_quantity=150000000,counterwager_remaining=150000000,target_value=0.0,leverage=5040,expiration=10,expire_index=310025,fee_fraction_int=99999999,status=''open'' WHERE rowid=4'); -INSERT INTO undolog VALUES(86,'DELETE FROM bet_matches WHERE rowid=2'); -INSERT INTO undolog VALUES(87,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92278789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(88,'DELETE FROM debits WHERE rowid=15'); -INSERT INTO undolog VALUES(89,'DELETE FROM bets WHERE rowid=5'); -INSERT INTO undolog VALUES(90,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=91528789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(91,'DELETE FROM debits WHERE rowid=16'); -INSERT INTO undolog VALUES(92,'DELETE FROM bets WHERE rowid=6'); -INSERT INTO undolog VALUES(93,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(94,'DELETE FROM credits WHERE rowid=14'); -INSERT INTO undolog VALUES(95,'UPDATE bets SET tx_index=17,tx_hash=''a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab'',block_index=310016,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',feed_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',bet_type=2,deadline=1388000200,wager_quantity=750000000,wager_remaining=750000000,counterwager_quantity=650000000,counterwager_remaining=650000000,target_value=1.0,leverage=5040,expiration=10,expire_index=310026,fee_fraction_int=99999999,status=''open'' WHERE rowid=5'); -INSERT INTO undolog VALUES(96,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(97,'DELETE FROM credits WHERE rowid=15'); -INSERT INTO undolog VALUES(98,'UPDATE bets SET tx_index=18,tx_hash=''622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3'',block_index=310017,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',feed_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',bet_type=3,deadline=1388000200,wager_quantity=650000000,wager_remaining=650000000,counterwager_quantity=750000000,counterwager_remaining=750000000,target_value=1.0,leverage=5040,expiration=10,expire_index=310027,fee_fraction_int=99999999,status=''open'' WHERE rowid=6'); -INSERT INTO undolog VALUES(99,'DELETE FROM bet_matches WHERE rowid=3'); -INSERT INTO undolog VALUES(100,'DELETE FROM broadcasts WHERE rowid=19'); -INSERT INTO undolog VALUES(101,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=90878789176 WHERE rowid=1'); -INSERT INTO undolog VALUES(102,'DELETE FROM credits WHERE rowid=16'); -INSERT INTO undolog VALUES(103,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=90937926676 WHERE rowid=1'); -INSERT INTO undolog VALUES(104,'DELETE FROM credits WHERE rowid=17'); -INSERT INTO undolog VALUES(105,'DELETE FROM bet_match_resolutions WHERE rowid=1'); -INSERT INTO undolog VALUES(106,'UPDATE bet_matches SET id=''72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64_d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda'',tx0_index=13,tx0_hash=''72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64'',tx0_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',tx1_index=14,tx1_hash=''d966330f429d59a82c6da65f61ef3768d58973f15fa899e9d1c9a981b4fa4bda'',tx1_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',tx0_bet_type=0,tx1_bet_type=1,feed_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',initial_value=100,deadline=1388000100,target_value=0.0,leverage=15120,forward_quantity=41500000,backward_quantity=20750000,tx0_block_index=310012,tx1_block_index=310013,block_index=310013,tx0_expiration=10,tx1_expiration=10,match_expire_index=310022,fee_fraction_int=99999999,status=''pending'' WHERE rowid=1'); -INSERT INTO undolog VALUES(107,'DELETE FROM broadcasts WHERE rowid=20'); -INSERT INTO undolog VALUES(108,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=90941039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(109,'DELETE FROM credits WHERE rowid=18'); -INSERT INTO undolog VALUES(110,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=91100339176 WHERE rowid=1'); -INSERT INTO undolog VALUES(111,'DELETE FROM credits WHERE rowid=19'); -INSERT INTO undolog VALUES(112,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=91416039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(113,'DELETE FROM credits WHERE rowid=20'); -INSERT INTO undolog VALUES(114,'DELETE FROM bet_match_resolutions WHERE rowid=2'); -INSERT INTO undolog VALUES(115,'UPDATE bet_matches SET id=''f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93_c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6'',tx0_index=15,tx0_hash=''f96724f9dcd53ea256e509e6dad698cbc40fc910fac1b598135751c479177f93'',tx0_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',tx1_index=16,tx1_hash=''c4a2b9e027a1d35189e75e410797e61df753f979288aacb5df0b95da7d052ef6'',tx1_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',tx0_bet_type=0,tx1_bet_type=1,feed_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',initial_value=100,deadline=1388000100,target_value=0.0,leverage=5040,forward_quantity=150000000,backward_quantity=350000000,tx0_block_index=310014,tx1_block_index=310015,block_index=310015,tx0_expiration=10,tx1_expiration=10,match_expire_index=310024,fee_fraction_int=99999999,status=''pending'' WHERE rowid=2'); -INSERT INTO undolog VALUES(116,'DELETE FROM broadcasts WHERE rowid=21'); -INSERT INTO undolog VALUES(117,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=91441039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(118,'DELETE FROM credits WHERE rowid=21'); -INSERT INTO undolog VALUES(119,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92771039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(120,'DELETE FROM credits WHERE rowid=22'); -INSERT INTO undolog VALUES(121,'DELETE FROM bet_match_resolutions WHERE rowid=3'); -INSERT INTO undolog VALUES(122,'UPDATE bet_matches SET id=''a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab_622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3'',tx0_index=17,tx0_hash=''a07db7528b9e94adcfb511d01128d3fc7ab19b90b36aebeba8033744b54ba4ab'',tx0_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',tx1_index=18,tx1_hash=''622431499aef08633e77f2978a62842d39764aaa84533c4f44b70cee38aeedf3'',tx1_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',tx0_bet_type=2,tx1_bet_type=3,feed_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',initial_value=100,deadline=1388000200,target_value=1.0,leverage=5040,forward_quantity=750000000,backward_quantity=650000000,tx0_block_index=310016,tx1_block_index=310017,block_index=310017,tx0_expiration=10,tx1_expiration=10,match_expire_index=310026,fee_fraction_int=99999999,status=''pending'' WHERE rowid=3'); -INSERT INTO undolog VALUES(123,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''BBBB'',quantity=996000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(124,'DELETE FROM debits WHERE rowid=17'); -INSERT INTO undolog VALUES(125,'DELETE FROM orders WHERE rowid=3'); -INSERT INTO undolog VALUES(126,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92841039176 WHERE rowid=1'); -INSERT INTO undolog VALUES(127,'DELETE FROM credits WHERE rowid=23'); -INSERT INTO undolog VALUES(128,'DELETE FROM burns WHERE rowid=23'); -INSERT INTO undolog VALUES(129,'UPDATE bets SET tx_index=13,tx_hash=''72d34398a53d7f7273d08b7708da302a396b0b8d1e4fe25eaa9845638b3e3f64'',block_index=310012,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',feed_address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',bet_type=0,deadline=1388000100,wager_quantity=50000000,wager_remaining=8500000,counterwager_quantity=25000000,counterwager_remaining=4250000,target_value=0.0,leverage=15120,expiration=10,expire_index=310022,fee_fraction_int=99999999,status=''open'' WHERE rowid=1'); -INSERT INTO undolog VALUES(130,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=149840926438 WHERE rowid=1'); -INSERT INTO undolog VALUES(131,'DELETE FROM credits WHERE rowid=24'); -INSERT INTO undolog VALUES(132,'DELETE FROM bet_expirations WHERE rowid=13'); -INSERT INTO undolog VALUES(133,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''BBBC'',quantity=99474 WHERE rowid=4'); -INSERT INTO undolog VALUES(134,'DELETE FROM debits WHERE rowid=18'); -INSERT INTO undolog VALUES(135,'UPDATE balances SET address=''mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'',asset=''BBBC'',quantity=526 WHERE rowid=6'); -INSERT INTO undolog VALUES(136,'DELETE FROM credits WHERE rowid=25'); -INSERT INTO undolog VALUES(137,'DELETE FROM sends WHERE rowid=4'); -INSERT INTO undolog VALUES(138,'UPDATE orders SET tx_index=22,tx_hash=''6f890013e2d78bfc0201e4570d2c778487a1b63eb5209f22dd9f89058cc5ac58'',block_index=310021,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',give_asset=''BBBB'',give_quantity=50000000,give_remaining=50000000,get_asset=''XCP'',get_quantity=50000000,get_remaining=50000000,expiration=10,expire_index=310031,fee_required=0,fee_required_remaining=0,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=3'); -INSERT INTO undolog VALUES(139,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''BBBB'',quantity=946000000 WHERE rowid=3'); -INSERT INTO undolog VALUES(140,'DELETE FROM credits WHERE rowid=26'); -INSERT INTO undolog VALUES(141,'DELETE FROM order_expirations WHERE rowid=22'); - --- Table undolog_block -DROP TABLE IF EXISTS undolog_block; -CREATE TABLE undolog_block( - block_index INTEGER PRIMARY KEY, - first_undo_index INTEGER); -INSERT INTO undolog_block VALUES(310001,4); -INSERT INTO undolog_block VALUES(310002,9); -INSERT INTO undolog_block VALUES(310003,10); -INSERT INTO undolog_block VALUES(310004,16); -INSERT INTO undolog_block VALUES(310005,20); -INSERT INTO undolog_block VALUES(310006,26); -INSERT INTO undolog_block VALUES(310007,32); -INSERT INTO undolog_block VALUES(310008,37); -INSERT INTO undolog_block VALUES(310009,42); -INSERT INTO undolog_block VALUES(310010,49); -INSERT INTO undolog_block VALUES(310011,56); -INSERT INTO undolog_block VALUES(310012,57); -INSERT INTO undolog_block VALUES(310013,60); -INSERT INTO undolog_block VALUES(310014,70); -INSERT INTO undolog_block VALUES(310015,77); -INSERT INTO undolog_block VALUES(310016,87); -INSERT INTO undolog_block VALUES(310017,90); -INSERT INTO undolog_block VALUES(310018,100); -INSERT INTO undolog_block VALUES(310019,107); -INSERT INTO undolog_block VALUES(310020,116); -INSERT INTO undolog_block VALUES(310021,123); -INSERT INTO undolog_block VALUES(310022,126); -INSERT INTO undolog_block VALUES(310023,129); -INSERT INTO undolog_block VALUES(310024,138); -INSERT INTO undolog_block VALUES(310025,138); -INSERT INTO undolog_block VALUES(310026,138); -INSERT INTO undolog_block VALUES(310027,138); -INSERT INTO undolog_block VALUES(310028,138); -INSERT INTO undolog_block VALUES(310029,138); -INSERT INTO undolog_block VALUES(310030,138); -INSERT INTO undolog_block VALUES(310031,138); -INSERT INTO undolog_block VALUES(310032,138); -INSERT INTO undolog_block VALUES(310033,142); -INSERT INTO undolog_block VALUES(310034,142); -INSERT INTO undolog_block VALUES(310035,142); -INSERT INTO undolog_block VALUES(310036,142); -INSERT INTO undolog_block VALUES(310037,142); -INSERT INTO undolog_block VALUES(310038,142); -INSERT INTO undolog_block VALUES(310039,142); -INSERT INTO undolog_block VALUES(310040,142); -INSERT INTO undolog_block VALUES(310041,142); -INSERT INTO undolog_block VALUES(310042,142); -INSERT INTO undolog_block VALUES(310043,142); -INSERT INTO undolog_block VALUES(310044,142); -INSERT INTO undolog_block VALUES(310045,142); -INSERT INTO undolog_block VALUES(310046,142); -INSERT INTO undolog_block VALUES(310047,142); -INSERT INTO undolog_block VALUES(310048,142); -INSERT INTO undolog_block VALUES(310049,142); -INSERT INTO undolog_block VALUES(310050,142); -INSERT INTO undolog_block VALUES(310051,142); -INSERT INTO undolog_block VALUES(310052,142); -INSERT INTO undolog_block VALUES(310053,142); -INSERT INTO undolog_block VALUES(310054,142); -INSERT INTO undolog_block VALUES(310055,142); -INSERT INTO undolog_block VALUES(310056,142); -INSERT INTO undolog_block VALUES(310057,142); -INSERT INTO undolog_block VALUES(310058,142); -INSERT INTO undolog_block VALUES(310059,142); -INSERT INTO undolog_block VALUES(310060,142); -INSERT INTO undolog_block VALUES(310061,142); -INSERT INTO undolog_block VALUES(310062,142); -INSERT INTO undolog_block VALUES(310063,142); -INSERT INTO undolog_block VALUES(310064,142); -INSERT INTO undolog_block VALUES(310065,142); -INSERT INTO undolog_block VALUES(310066,142); -INSERT INTO undolog_block VALUES(310067,142); -INSERT INTO undolog_block VALUES(310068,142); -INSERT INTO undolog_block VALUES(310069,142); -INSERT INTO undolog_block VALUES(310070,142); -INSERT INTO undolog_block VALUES(310071,142); -INSERT INTO undolog_block VALUES(310072,142); -INSERT INTO undolog_block VALUES(310073,142); -INSERT INTO undolog_block VALUES(310074,142); -INSERT INTO undolog_block VALUES(310075,142); -INSERT INTO undolog_block VALUES(310076,142); -INSERT INTO undolog_block VALUES(310077,142); -INSERT INTO undolog_block VALUES(310078,142); -INSERT INTO undolog_block VALUES(310079,142); -INSERT INTO undolog_block VALUES(310080,142); -INSERT INTO undolog_block VALUES(310081,142); -INSERT INTO undolog_block VALUES(310082,142); -INSERT INTO undolog_block VALUES(310083,142); -INSERT INTO undolog_block VALUES(310084,142); -INSERT INTO undolog_block VALUES(310085,142); -INSERT INTO undolog_block VALUES(310086,142); -INSERT INTO undolog_block VALUES(310087,142); -INSERT INTO undolog_block VALUES(310088,142); -INSERT INTO undolog_block VALUES(310089,142); -INSERT INTO undolog_block VALUES(310090,142); -INSERT INTO undolog_block VALUES(310091,142); -INSERT INTO undolog_block VALUES(310092,142); -INSERT INTO undolog_block VALUES(310093,142); -INSERT INTO undolog_block VALUES(310094,142); -INSERT INTO undolog_block VALUES(310095,142); -INSERT INTO undolog_block VALUES(310096,142); -INSERT INTO undolog_block VALUES(310097,142); -INSERT INTO undolog_block VALUES(310098,142); -INSERT INTO undolog_block VALUES(310099,142); -INSERT INTO undolog_block VALUES(310100,142); -INSERT INTO undolog_block VALUES(310101,142); - --- For primary key autoincrements the next id to use is stored in --- sqlite_sequence -DELETE FROM main.sqlite_sequence WHERE name='undolog'; -INSERT INTO main.sqlite_sequence VALUES ('undolog', 141); - -COMMIT TRANSACTION; diff --git a/counterpartylib/test/fixtures/scenarios/unittest_fixture.log b/counterpartylib/test/fixtures/scenarios/unittest_fixture.log deleted file mode 100644 index 4236266856..0000000000 --- a/counterpartylib/test/fixtures/scenarios/unittest_fixture.log +++ /dev/null @@ -1,458 +0,0 @@ -Creating connection to `:memory:`. -Checking database integrity. -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.99909140; txid: ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1; vout: 0; confirmations: 75'] -Fee/KB 0.00025000 -New input: amount: 1.99909140; txid: ae241be7be83ebb14902757ad94854f787d9730fc553d6f695346c9375c0d8c1; vout: 0; confirmations: 75 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 1.37903515 BTC -Credit: 930.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #burn# <6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597> -Burn: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc burned 0.62 BTC for 930.0 XCP (6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37903515; txid: 6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37903515; txid: 6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37888915 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1000.0 of divisible asset DIVISIBLE (9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e) [valid] -Credit: 1000.0 DIVISIBLE to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37888915; txid: 9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37888915; txid: 9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37874315 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1000 of indivisible asset NODIVISIBLE (2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73) [valid] -Credit: 1000 NODIVISIBLE to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37874315; txid: 2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37874315; txid: 2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37859715 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 0.00001 of divisible asset CALLABLE (4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb) [valid] -Credit: 0.00001 CALLABLE to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37859715; txid: 4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37859715; txid: 4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37845115 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 0.00001 of divisible asset LOCKED (e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1) [valid] -Credit: 0.00001 LOCKED to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37845115; txid: e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37845115; txid: e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37830515 BTC -Debit: 0.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc locked asset LOCKED (1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37830515; txid: 1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37830515; txid: 1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37815915 BTC -Debit: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #open order# -Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered 1.0 XCP for 1.0 DIVISIBLE in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3) [open] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37815915; txid: b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37815915; txid: b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.37795035 BTC -Debit: 1.0 DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef> -Credit: 1.0 DIVISIBLE to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# <95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef> -Send: 1.0 DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37795035; txid: 95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37795035; txid: 95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.37774155 BTC -Debit: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc> -Credit: 1.0 XCP to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# <8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc> -Send: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37774155; txid: 8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37774155; txid: 8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37759555 BTC -BUMP TXID b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3 -Debit: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #open order# -Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered 1.0 XCP for 1.0 DIVISIBLE in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00000000 BTC (d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391) [open] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37759555; txid: d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37759555; txid: d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.37744955 BTC -Debit: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #open order# -Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered 1.0 XCP for 0.01 BTC in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145) [open] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.37744955; txid: c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.37744955; txid: c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 1000000 -Size: 272 Fee: 0.01000000 Change quantity: 1.36737155 BTC -Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered 0.00666667 BTC for 1.0 XCP in 2000 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e) [open] -Considering: c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145 -Tx0 Price: 0.01; Tx1 Inverse Price: 0.00666667 -Skipping: price mismatch. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36737155; txid: 601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36737155; txid: 601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.36713905 BTC -Debit: 3.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568> -Credit: 3.0 XCP to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568> -Send: 3.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36713905; txid: 1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36713905; txid: 1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.36690655 BTC -Debit: 10.0 DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd> -Credit: 10.0 DIVISIBLE to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd> -Send: 10.0 DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36690655; txid: 62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36690655; txid: 62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.36669775 BTC -Debit: 5 NODIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba> -Credit: 5 NODIVISIBLE to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# <9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba> -Send: 5 NODIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36669775; txid: 9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36669775; txid: 9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.36646525 BTC -Debit: 10 NODIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# <62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4> -Credit: 10 NODIVISIBLE to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 #send# <62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4> -Send: 10 NODIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2 (62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36646525; txid: 62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36646525; txid: 62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.36631925 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 92233720368.54775807 of divisible asset MAXI (19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93) [valid] -Credit: 92233720368.54775807 MAXI to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36631925; txid: 19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36631925; txid: 19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.36617325 BTC -Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:20 with a fee of 5.0%% (3330c302fd75cb6b9e4d08ccc8821fee8f6f88c8a42123386941193813653c7a) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.93427600; txid: dc4f91c42eb79898b266ee237eed0d501b8b1a843f69aed847ad740e1933f85e; vout: 1; confirmations: 25'] -Fee/KB 0.00025000 -New input: amount: 1.93427600; txid: dc4f91c42eb79898b266ee237eed0d501b8b1a843f69aed847ad740e1933f85e; vout: 1; confirmations: 25 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.93413000 BTC -Broadcast: mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH locked his feed (a9d599c0f1669b071bf107f7e90f88fe692d56ca00b81e57c71a56530590e7ee) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36617325; txid: 3330c302fd75cb6b9e4d08ccc8821fee8f6f88c8a42123386941193813653c7a; vout: 1; confirmations: 2'] -Fee/KB 0.00025000 -New input: amount: 1.36617325; txid: 3330c302fd75cb6b9e4d08ccc8821fee8f6f88c8a42123386941193813653c7a; vout: 1; confirmations: 2 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.36596445 BTC -Debit: 0.00000009 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet# -Bet: 0.00000009 XCP against 0.00000009 XCP, by mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.00000000; txid: e43c357b78baf473fd21cbc1481ac450746b60cf1d2702ce3a73a8811811e3eb; vout: 0; confirmations: 23', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 95'] -Fee/KB 0.00025000 -New input: amount: 1.00000000; txid: e43c357b78baf473fd21cbc1481ac450746b60cf1d2702ce3a73a8811811e3eb; vout: 0; confirmations: 23 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.99979120 BTC -Debit: 0.00000009 XCP from mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #bet# -Bet: 0.00000009 XCP against 0.00000009 XCP, by mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc -Considering: c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d -Tx0 Inverse Odds: 1.0; Tx1 Odds: 1.0 -Potential forward quantities: 9, 9 -Forward Quantity: 9 -Backward Quantity: 9 -Credit: 0.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #filled# -Credit: 0.0 XCP to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #filled# -Bet Match: BearCFD for 0.00000009 XCP against BullCFD for 0.00000009 XCP on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:21 that 0.0 value, leveraged 1.0x (c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0) [pending] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.99979120; txid: acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0; vout: 2; confirmations: 81', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 176'] -Fee/KB 0.00025000 -New input: amount: 0.99979120; txid: acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0; vout: 2; confirmations: 81 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.99958240 BTC -Debit: 0.0000001 XCP from mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #bet# -Bet: 0.0000001 XCP against 0.0000001 XCP, by mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns, on mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36596445; txid: c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d; vout: 2; confirmations: 83'] -Fee/KB 0.00025000 -New input: amount: 1.36596445; txid: c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d; vout: 2; confirmations: 83 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.36581845 BTC -Broadcast: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc at 2013-12-25T19:33:22 with a fee of 5.0%% (8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8) [valid] -Credit: 0.00000009 XCP to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #bet settled# <8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8> -Credit: 0.00000009 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #bet settled# <8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8> -Credit: 0.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #feed fee# <8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8> -Bet Match Settled: 0.00000009 XCP credited to the bull, 0.00000009 XCP credited to the bear, and 0.0 XCP credited to the feed address (c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0) -Database: set status of bet_match c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0 to settled. -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.07824570; txid: c018d940b7d338e57e121cbbb1880fdd8f4444d950ea041cdca17016fd320be8; vout: 0; confirmations: 247'] -Fee/KB 0.00025000 -New input: amount: 1.07824570; txid: c018d940b7d338e57e121cbbb1880fdd8f4444d950ea041cdca17016fd320be8; vout: 0; confirmations: 247 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.45818945 BTC -Credit: 929.99138821 XCP to myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM #burn# <65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b> -Burn: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM burned 0.62 BTC for 929.99138821 XCP (65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b) [valid] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.07824570; txid: 1befa135e687812ab8a60678ac17f982daf008cd7094dc95fc65a0b8e4bd955e; vout: 0; confirmations: 248'] -Fee/KB 0.00025000 -New input: amount: 1.07824570; txid: 1befa135e687812ab8a60678ac17f982daf008cd7094dc95fc65a0b8e4bd955e; vout: 0; confirmations: 248 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.45818945 BTC -Credit: 929.9913046 XCP to munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b #burn# <95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff> -Burn: munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b burned 0.62 BTC for 929.9913046 XCP (95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff) [valid] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.07824570; txid: fea12706ef63c7ce57df3e1197b8b33e6a93ef2df07964ff654c14f1b900e17f; vout: 0; confirmations: 249'] -Fee/KB 0.00025000 -New input: amount: 1.07824570; txid: fea12706ef63c7ce57df3e1197b8b33e6a93ef2df07964ff654c14f1b900e17f; vout: 0; confirmations: 249 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.45818945 BTC -Credit: 929.99122099 XCP to mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 #burn# -Burn: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 burned 0.62 BTC for 929.99122099 XCP (e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa) [valid] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 0.05608646; txid: eac206b369d8130892c8be2d52f7bd9e3e0324870262daf3a19264246068ed2b; vout: 0; confirmations: 113'] -Fee/KB 0.00025000 -New input: amount: 0.05608646; txid: eac206b369d8130892c8be2d52f7bd9e3e0324870262daf3a19264246068ed2b; vout: 0; confirmations: 113 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.05593021 BTC -Credit: 0.14999857 XCP to mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK #burn# -Burn: mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK burned 0.0001 BTC for 0.14999857 XCP (bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3) [valid] -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45818945; txid: 95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff; vout: 1; confirmations: 3'] -Fee/KB 0.00025000 -New input: amount: 0.45818945; txid: 95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff; vout: 1; confirmations: 3 -final_fee inputs: 1 size: 246 final_fee 6150 -Size: 246 Fee: 0.00006150 Change quantity: 0.45812795 BTC -Debit: 0.000001 XCP from munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b #open dispenser# <9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec> -Dispenser: munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b opened a dispenser for asset XCP with 100 balance, giving 100 XCP for each 100 BTC -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.00000000; txid: 20ffe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 115'] -Fee/KB 0.00025000 -New input: amount: 1.00000000; txid: 20ffe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 115 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.68994375 BTC -Credit: 464.99548508 XCP to 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy #burn# <93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73> -Burn: 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy burned 0.31 BTC for 464.99548508 XCP (93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.68994375; txid: 93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.68994375; txid: 93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.68979775 BTC -Debit: 0.5 XCP from 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy #issuance fee# -Issuance: 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy created 1000 of indivisible asset PAYTOSCRIPT (ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e) [valid] -Credit: 1000 PAYTOSCRIPT to 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy #issuance# -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36581845; txid: 8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8; vout: 1; confirmations: 8'] -Fee/KB 0.00025000 -New input: amount: 1.36581845; txid: 8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8; vout: 1; confirmations: 8 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.36560965 BTC -Debit: 1.0 DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# -Credit: 1.0 DIVISIBLE to 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy #send# -Send: 1.0 DIVISIBLE from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy (f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481) [valid] -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.68979775; txid: ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e; vout: 1; confirmations: 2'] -Fee/KB 0.00025000 -New input: amount: 0.68979775; txid: ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e; vout: 1; confirmations: 2 -final_fee inputs: 1 size: 239 final_fee 5975 -Size: 239 Fee: 0.00005975 Change quantity: 0.68973800 BTC -Broadcast: 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy at 2013-12-25T19:33:22 with a fee of 5.0%% (510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186) [valid] -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.68973800; txid: 510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.68973800; txid: 510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 285 final_fee 7124 -Size: 285 Fee: 0.00007124 Change quantity: 0.68961246 BTC -Debit: 0.0000001 XCP from 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy #bet# -Bet: 0.0000001 XCP against 0.0000001 XCP, by 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy, on 2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45818945; txid: e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa; vout: 1; confirmations: 8'] -Fee/KB 0.00025000 -New input: amount: 0.45818945; txid: e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa; vout: 1; confirmations: 8 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45804345 BTC -Debit: 0.5 XCP from mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 #issuance fee# <5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9> -Issuance: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 created 0.00001 of divisible asset LOCKEDPREV (5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9) [valid] -Credit: 0.00001 LOCKEDPREV to mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 #issuance# <5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45804345; txid: 5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.45804345; txid: 5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45789745 BTC -Debit: 0.0 XCP from mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 #issuance fee# <74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe> -Issuance: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 locked asset LOCKEDPREV (74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45789745; txid: 74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.45789745; txid: 74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45775145 BTC -Debit: 0.0 XCP from mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 #issuance fee# <214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d> -Issuance: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 created 0.0 of divisible asset LOCKEDPREV (214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d) [valid] -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.00000000; txid: 20efe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 123'] -Fee/KB 0.00025000 -New input: amount: 1.00000000; txid: 20efe4012d5fc638309b2d087a15fb100d9194132633623bc4c23b4c2caf0150; vout: 0; confirmations: 123 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 0.37994375 BTC -Credit: 929.99030129 XCP to tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx #burn# <27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9> -Burn: tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx burned 0.62 BTC for 929.99030129 XCP (27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9) [valid] -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36560965; txid: f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481; vout: 2; confirmations: 371'] -Fee/KB 0.00025000 -New input: amount: 1.36560965; txid: f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481; vout: 2; confirmations: 371 -final_fee inputs: 1 size: 255 final_fee 6375 -Size: 255 Fee: 0.00006375 Change quantity: 1.36554590 BTC -Debit: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# -Credit: 1.0 XCP to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# -Send: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc to mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns (b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5) [valid] -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.99958240; txid: aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305; vout: 2; confirmations: 381', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 557'] -Fee/KB 0.00025000 -New input: amount: 0.99958240; txid: aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305; vout: 2; confirmations: 381 -final_fee inputs: 1 size: 254 final_fee 6350 -Size: 254 Fee: 0.00006350 Change quantity: 0.99951890 BTC -Debit: 1.0 XCP from mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns #send# -Credit: 1.0 XCP to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #send# -Send: 1.0 XCP from mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc (c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45818945; txid: 65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b; vout: 1; confirmations: 383'] -Fee/KB 0.00025000 -New input: amount: 0.45818945; txid: 65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b; vout: 1; confirmations: 383 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45804345 BTC -Broadcast: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM at 2013-12-25T19:33:20 with a fee of 5.0%% (096883e142a87377d3a4103f4702556e25824f1e23667aceb1690f66e1417062) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45804345; txid: 096883e142a87377d3a4103f4702556e25824f1e23667aceb1690f66e1417062; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.45804345; txid: 096883e142a87377d3a4103f4702556e25824f1e23667aceb1690f66e1417062; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 0.45783465 BTC -Debit: 0.00000009 XCP from myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM #bet# <2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275> -Bet: 0.00000009 XCP against 0.00000009 XCP, by myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM, on myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45783465; txid: 2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.45783465; txid: 2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45768865 BTC -Broadcast: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM at 2013-12-25T19:33:22 with a fee of 0.0%% (9b1cad827c97c463c2b39cc9d550693c438010ef85a10ee04d3db8699193e906) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45768865; txid: 9b1cad827c97c463c2b39cc9d550693c438010ef85a10ee04d3db8699193e906; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 0.45768865; txid: 9b1cad827c97c463c2b39cc9d550693c438010ef85a10ee04d3db8699193e906; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45754265 BTC -Broadcast: myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM locked his feed (9a39bade308462ec65be3c8420a0f2189b1d4e947d4c7950a37176de71de4f87) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.45775145; txid: 214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d; vout: 1; confirmations: 375'] -Fee/KB 0.00025000 -New input: amount: 0.45775145; txid: 214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d; vout: 1; confirmations: 375 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 0.45760545 BTC -Broadcast: mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42 at 2013-12-25T19:33:24 with a fee of 0.0%% (4b233a74b9db14a8619ee8ec5558149e53ab033be31e803257f760aa9ef2f3b9) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36554590; txid: b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5; vout: 1; confirmations: 10'] -Fee/KB 0.00025000 -New input: amount: 1.36554590; txid: b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5; vout: 1; confirmations: 10 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.36539990 BTC -Debit: 1.0 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #open order# <9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09> -Order: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc ordered 1.0 XCP for 0.008 BTC in 2000 blocks, with a provided fee of 0.00006800 BTC and a required fee of 0.00900000 BTC (9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09) [open] -Considering: 601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e -Tx0 Price: 149.9999250000375; Tx1 Inverse Price: 125.0 -Skipping: price mismatch. -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 0.99951890; txid: c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34; vout: 1; confirmations: 10', 'amount: 0.11121663; txid: b9fc3aa355b77ecb63282fc96e63912a253e98bf9cf441fbfbecc3fb277c4985; vout: 0; confirmations: 567'] -Fee/KB 0.00025000 -New input: amount: 0.99951890; txid: c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34; vout: 1; confirmations: 10 -final_fee inputs: 1 size: 272 final_fee 1000000 -Size: 272 Fee: 0.01000000 Change quantity: 0.98944090 BTC -Order: mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns ordered 0.008 BTC for 1.0 XCP in 2000 blocks, with a provided fee of 0.01000000 BTC and a required fee of 0.00000000 BTC (2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4) [open] -Considering: 9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09 -Tx0 Price: 0.008; Tx1 Inverse Price: 0.008 -Potential forward quantities: 100000000, 100000000 -Forward Quantity: 100000000 -Backward Quantity: 800000 -Tx1 fee provided remaining: 0.01; required fee: 7.2e-05 -Order Match: 1.0 XCP for 0.008 BTC (9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09_2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4) [pending] -Considering: c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145 -Skipping: negative give quantity remaining -data_btc_out=0 (data_value=0 len(data_array)=0) -Sorted candidate UTXOs: ['amount: 1.93413000; txid: a9d599c0f1669b071bf107f7e90f88fe692d56ca00b81e57c71a56530590e7ee; vout: 1; confirmations: 475'] -Fee/KB 0.00025000 -New input: amount: 1.93413000; txid: a9d599c0f1669b071bf107f7e90f88fe692d56ca00b81e57c71a56530590e7ee; vout: 1; confirmations: 475 -final_fee inputs: 1 size: 225 final_fee 5625 -Size: 225 Fee: 0.00005625 Change quantity: 1.31407375 BTC -Credit: 929.95878046 XCP to mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH #burn# -Burn: mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH burned 0.62 BTC for 929.95878046 XCP (c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.31407375; txid: c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.31407375; txid: c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 272 final_fee 6800 -Size: 272 Fee: 0.00006800 Change quantity: 1.31392775 BTC -Debit: 0.5 XCP from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH #issuance fee# <4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5> -Issuance: mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH created 0.000001 of divisible asset DIVIDEND (4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5) [valid] -Credit: 0.000001 DIVIDEND to mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH #issuance# <4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5> -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.31392775; txid: 4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.31392775; txid: 4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.31371895 BTC -Debit: 0.0000001 DIVIDEND from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH #send# <129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc> -Credit: 0.0000001 DIVIDEND to mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj #send# <129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc> -Send: 0.0000001 DIVIDEND from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH to mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj (129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc) [valid] -data_btc_out=7800 (data_value=7800 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.31371895; txid: 129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc; vout: 2; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.31371895; txid: 129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc; vout: 2; confirmations: 1 -final_fee inputs: 1 size: 306 final_fee 7650 -Size: 306 Fee: 0.00007650 Change quantity: 1.31351015 BTC -Debit: 929.45878046 XCP from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH #send# <1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6> -Credit: 929.45878046 XCP to mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj #send# <1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6> -Send: 929.45878046 XCP from mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH to mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj (1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6) [valid] -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36539990; txid: 9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09; vout: 1; confirmations: 6'] -Fee/KB 0.00025000 -New input: amount: 1.36539990; txid: 9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09; vout: 1; confirmations: 6 -final_fee inputs: 1 size: 252 final_fee 6300 -Size: 252 Fee: 0.00006300 Change quantity: 1.36533690 BTC -Debit: 0.5 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f> -Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1.0 of divisible asset PARENT (076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f) [valid] -Credit: 1.0 PARENT to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f> -data_btc_out=0 (data_value=0 len(data_array)=1) -Sorted candidate UTXOs: ['amount: 1.36533690; txid: 076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f; vout: 1; confirmations: 1'] -Fee/KB 0.00025000 -New input: amount: 1.36533690; txid: 076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f; vout: 1; confirmations: 1 -final_fee inputs: 1 size: 262 final_fee 6550 -Size: 262 Fee: 0.00006550 Change quantity: 1.36527140 BTC -Debit: 0.25 XCP from mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance fee# <0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf> -Subasset Issuance: mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc created 1.0 of divisible subasset PARENT.already.issued as numeric asset A95428956661682277 (0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf) [valid] -Credit: 1.0 A95428956661682277 to mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc #issuance# <0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf> diff --git a/counterpartylib/test/fixtures/scenarios/unittest_fixture.sql b/counterpartylib/test/fixtures/scenarios/unittest_fixture.sql deleted file mode 100644 index b81813f0b7..0000000000 --- a/counterpartylib/test/fixtures/scenarios/unittest_fixture.sql +++ /dev/null @@ -1,1856 +0,0 @@ -PRAGMA page_size=4096; --- PRAGMA encoding='UTF-8'; --- PRAGMA auto_vacuum=NONE; --- PRAGMA max_page_count=1073741823; - -BEGIN TRANSACTION; - --- Table addresses -DROP TABLE IF EXISTS addresses; -CREATE TABLE addresses( - address TEXT UNIQUE, - options INTEGER, - block_index INTEGER); -INSERT INTO addresses VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',0,310488); -INSERT INTO addresses VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',1,310490); --- Triggers and indices on addresses -CREATE TRIGGER _addresses_delete BEFORE DELETE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO addresses(rowid,address,options,block_index) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.options)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _addresses_insert AFTER INSERT ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM addresses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _addresses_update AFTER UPDATE ON addresses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE addresses SET address='||quote(old.address)||',options='||quote(old.options)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX addresses_idx ON addresses (address); - --- Table assets -DROP TABLE IF EXISTS assets; -CREATE TABLE assets( - asset_id TEXT UNIQUE, - asset_name TEXT UNIQUE, - block_index INTEGER, - asset_longname TEXT); -INSERT INTO assets VALUES('0','BTC',NULL,NULL); -INSERT INTO assets VALUES('1','XCP',NULL,NULL); -INSERT INTO assets VALUES('697326324582','DIVISIBLE',310001,NULL); -INSERT INTO assets VALUES('1911882621324134','NODIVISIBLE',310002,NULL); -INSERT INTO assets VALUES('16199343190','CALLABLE',310003,NULL); -INSERT INTO assets VALUES('137134819','LOCKED',310004,NULL); -INSERT INTO assets VALUES('211518','MAXI',310016,NULL); -INSERT INTO assets VALUES('2122675428648001','PAYTOSCRIPT',310109,NULL); -INSERT INTO assets VALUES('62667321322601','LOCKEDPREV',310113,NULL); -INSERT INTO assets VALUES('26819977213','DIVIDEND',310494,NULL); -INSERT INTO assets VALUES('178522493','PARENT',310497,NULL); -INSERT INTO assets VALUES('95428956661682277','A95428956661682277',310498,'PARENT.already.issued'); --- Triggers and indices on assets -CREATE TRIGGER _assets_delete BEFORE DELETE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO assets(rowid,asset_id,asset_name,block_index,asset_longname) VALUES('||old.rowid||','||quote(old.asset_id)||','||quote(old.asset_name)||','||quote(old.block_index)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _assets_insert AFTER INSERT ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM assets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _assets_update AFTER UPDATE ON assets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE assets SET asset_id='||quote(old.asset_id)||',asset_name='||quote(old.asset_name)||',block_index='||quote(old.block_index)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE UNIQUE INDEX asset_longname_idx ON assets(asset_longname); -CREATE INDEX id_idx ON assets (asset_id); -CREATE INDEX name_idx ON assets (asset_name); - --- Table balances -DROP TABLE IF EXISTS balances; -CREATE TABLE balances( - address TEXT, - asset TEXT, - quantity INTEGER); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',91875000000); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',98800000000); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',985); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','CALLABLE',1000); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','LOCKED',1000); -INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000); -INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',99999990); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000); -INSERT INTO balances VALUES('mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5); -INSERT INTO balances VALUES('1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','MAXI',9223372036854775807); -INSERT INTO balances VALUES('myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138812); -INSERT INTO balances VALUES('munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130360); -INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92949122099); -INSERT INTO balances VALUES('mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','XCP',14999857); -INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46449548498); -INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','PAYTOSCRIPT',1000); -INSERT INTO balances VALUES('2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000); -INSERT INTO balances VALUES('mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','LOCKEDPREV',1000); -INSERT INTO balances VALUES('tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','XCP',92999030129); -INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',0); -INSERT INTO balances VALUES('mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',90); -INSERT INTO balances VALUES('mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10); -INSERT INTO balances VALUES('mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','PARENT',100000000); -INSERT INTO balances VALUES('mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','A95428956661682277',100000000); --- Triggers and indices on balances -CREATE TRIGGER _balances_delete BEFORE DELETE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO balances(rowid,address,asset,quantity) VALUES('||old.rowid||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||')'); - END; -CREATE TRIGGER _balances_insert AFTER INSERT ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM balances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _balances_update AFTER UPDATE ON balances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE balances SET address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_asset_idx ON balances (address, asset); - --- Table bet_expirations -DROP TABLE IF EXISTS bet_expirations; -CREATE TABLE bet_expirations( - bet_index INTEGER PRIMARY KEY, - bet_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (bet_index, bet_hash) REFERENCES bets(tx_index, tx_hash)); --- Triggers and indices on bet_expirations -CREATE TRIGGER _bet_expirations_delete BEFORE DELETE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_expirations(rowid,bet_index,bet_hash,source,block_index) VALUES('||old.rowid||','||quote(old.bet_index)||','||quote(old.bet_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_expirations_insert AFTER INSERT ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_expirations_update AFTER UPDATE ON bet_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_expirations SET bet_index='||quote(old.bet_index)||',bet_hash='||quote(old.bet_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_expirations -DROP TABLE IF EXISTS bet_match_expirations; -CREATE TABLE bet_match_expirations( - bet_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on bet_match_expirations -CREATE TRIGGER _bet_match_expirations_delete BEFORE DELETE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_expirations(rowid,bet_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _bet_match_expirations_insert AFTER INSERT ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_expirations_update AFTER UPDATE ON bet_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_expirations SET bet_match_id='||quote(old.bet_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table bet_match_resolutions -DROP TABLE IF EXISTS bet_match_resolutions; -CREATE TABLE bet_match_resolutions( - bet_match_id TEXT PRIMARY KEY, - bet_match_type_id INTEGER, - block_index INTEGER, - winner TEXT, - settled BOOL, - bull_credit INTEGER, - bear_credit INTEGER, - escrow_less_fee INTEGER, - fee INTEGER, - FOREIGN KEY (bet_match_id) REFERENCES bet_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO bet_match_resolutions VALUES('c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0',1,310102,'1',9,9,NULL,NULL,0); --- Triggers and indices on bet_match_resolutions -CREATE TRIGGER _bet_match_resolutions_delete BEFORE DELETE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_match_resolutions(rowid,bet_match_id,bet_match_type_id,block_index,winner,settled,bull_credit,bear_credit,escrow_less_fee,fee) VALUES('||old.rowid||','||quote(old.bet_match_id)||','||quote(old.bet_match_type_id)||','||quote(old.block_index)||','||quote(old.winner)||','||quote(old.settled)||','||quote(old.bull_credit)||','||quote(old.bear_credit)||','||quote(old.escrow_less_fee)||','||quote(old.fee)||')'); - END; -CREATE TRIGGER _bet_match_resolutions_insert AFTER INSERT ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_match_resolutions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_match_resolutions_update AFTER UPDATE ON bet_match_resolutions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_match_resolutions SET bet_match_id='||quote(old.bet_match_id)||',bet_match_type_id='||quote(old.bet_match_type_id)||',block_index='||quote(old.block_index)||',winner='||quote(old.winner)||',settled='||quote(old.settled)||',bull_credit='||quote(old.bull_credit)||',bear_credit='||quote(old.bear_credit)||',escrow_less_fee='||quote(old.escrow_less_fee)||',fee='||quote(old.fee)||' WHERE rowid='||old.rowid); - END; - --- Table bet_matches -DROP TABLE IF EXISTS bet_matches; -CREATE TABLE bet_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_bet_type INTEGER, - tx1_bet_type INTEGER, - feed_address TEXT, - initial_value INTEGER, - deadline INTEGER, - target_value REAL, - leverage INTEGER, - forward_quantity INTEGER, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO bet_matches VALUES('c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0',20,'c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',21,'acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',1,0,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000001,0.0,5040,9,9,310019,310020,310020,100,100,310119,5000000,'settled'); --- Triggers and indices on bet_matches -CREATE TRIGGER _bet_matches_delete BEFORE DELETE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bet_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_bet_type,tx1_bet_type,feed_address,initial_value,deadline,target_value,leverage,forward_quantity,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_bet_type)||','||quote(old.tx1_bet_type)||','||quote(old.feed_address)||','||quote(old.initial_value)||','||quote(old.deadline)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.forward_quantity)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bet_matches_insert AFTER INSERT ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bet_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bet_matches_update AFTER UPDATE ON bet_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bet_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_bet_type='||quote(old.tx0_bet_type)||',tx1_bet_type='||quote(old.tx1_bet_type)||',feed_address='||quote(old.feed_address)||',initial_value='||quote(old.initial_value)||',deadline='||quote(old.deadline)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',forward_quantity='||quote(old.forward_quantity)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_feed_idx ON bet_matches (feed_address, status); - --- Table bets -DROP TABLE IF EXISTS bets; -CREATE TABLE bets( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - feed_address TEXT, - bet_type INTEGER, - deadline INTEGER, - wager_quantity INTEGER, - wager_remaining INTEGER, - counterwager_quantity INTEGER, - counterwager_remaining INTEGER, - target_value REAL, - leverage INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_fraction_int INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO bets VALUES(20,'c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d',310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1,1388000001,9,0,9,0,0.0,5040,100,310119,5000000,'filled'); -INSERT INTO bets VALUES(21,'acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0',310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,1388000001,9,0,9,0,0.0,5040,100,310120,5000000,'filled'); -INSERT INTO bets VALUES(102,'aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305',310101,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',3,1388000200,10,10,10,10,0.0,5040,1000,311101,5000000,'open'); -INSERT INTO bets VALUES(113,'d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048',310112,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',3,1388000200,10,10,10,10,0.0,5040,1000,311112,5000000,'open'); -INSERT INTO bets VALUES(488,'2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275',310487,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',1,1388000001,9,9,9,9,0.0,5040,100,310587,5000000,'open'); --- Triggers and indices on bets -CREATE TRIGGER _bets_delete BEFORE DELETE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO bets(rowid,tx_index,tx_hash,block_index,source,feed_address,bet_type,deadline,wager_quantity,wager_remaining,counterwager_quantity,counterwager_remaining,target_value,leverage,expiration,expire_index,fee_fraction_int,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.feed_address)||','||quote(old.bet_type)||','||quote(old.deadline)||','||quote(old.wager_quantity)||','||quote(old.wager_remaining)||','||quote(old.counterwager_quantity)||','||quote(old.counterwager_remaining)||','||quote(old.target_value)||','||quote(old.leverage)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_fraction_int)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _bets_insert AFTER INSERT ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM bets WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _bets_update AFTER UPDATE ON bets BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE bets SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',feed_address='||quote(old.feed_address)||',bet_type='||quote(old.bet_type)||',deadline='||quote(old.deadline)||',wager_quantity='||quote(old.wager_quantity)||',wager_remaining='||quote(old.wager_remaining)||',counterwager_quantity='||quote(old.counterwager_quantity)||',counterwager_remaining='||quote(old.counterwager_remaining)||',target_value='||quote(old.target_value)||',leverage='||quote(old.leverage)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_fraction_int='||quote(old.fee_fraction_int)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX feed_valid_bettype_idx ON bets (feed_address, status, bet_type); - --- Table blocks -DROP TABLE IF EXISTS blocks; -CREATE TABLE blocks( - block_index INTEGER UNIQUE, - block_hash TEXT UNIQUE, - block_time INTEGER, - previous_block_hash TEXT UNIQUE, - difficulty INTEGER, ledger_hash TEXT, txlist_hash TEXT, messages_hash TEXT, - PRIMARY KEY (block_index, block_hash)); -INSERT INTO blocks VALUES(309999,'8b3bef249cb3b0fa23a4936c1249b6bd41daeadc848c8d2e409ea1cbc10adfe7',309999000,NULL,NULL,'63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223','63f0fef31d02da85fa779e9a0e1b585b1a6a4e59e14564249e288e074e91c223'); -INSERT INTO blocks VALUES(310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,NULL,NULL,'cf0ea1d313e22ba5f413075b88e07dffc5c00e59f95eeb6d6dec935bd77f5ae4','f06c23e6040a063ed59693baa0d63492dce64e1debc7455b22f5535c9dfbdc67','935966a4190449faefd40145735a17c5733fcd4f80d81fb1b0368cf8c2507bb1'); -INSERT INTO blocks VALUES(310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,NULL,NULL,'11461f972c4cd85c87b5abfedb3cee589d09e945570d34564dcde6f4df9d2b57','76dd4e40ce9c89dbe5aaf5f48bb577a6e8ba12530bd770922a697ed0907b8cf4','c59552705d5ce3236c1c6e9562da91a1e7839b67346ba4e446eb6eb937353fb3'); -INSERT INTO blocks VALUES(310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,NULL,NULL,'355d92f841de89a1d97c3b2ea7623959ea4494bb62ea7e67ad359beb68caca8c','34c42a025c5c0592e008ca41de09334728d31822dd2e89e50eb755a0ea6678d6','c4fef0d06ebbf594ba68fed7ae3df3281c064a6a2357a936f4aa7a63e4acec0a'); -INSERT INTO blocks VALUES(310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,NULL,NULL,'edcd7e344fb5cca16999f025594890b8b54543555e61eb3807406bb4204677f2','79fd856561f83ac9b0105c2622817ee95b76b9fe514d43d80bd25eefdeb1f236','7e3ebeec3193d587a99ee4fbe526fa327dc19d1e018eb1be8b8fbec68e20a0e9'); -INSERT INTO blocks VALUES(310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,NULL,NULL,'abd71a31bc1f8a072761b23a5bc2976731ebdf305d1d7d33922e93573f308129','0b4bbfc9c39b628898f8da6fa12859f453583d291a96d5d166c695ca182d54fe','74cf19ce94d2864dcc1596a87ddcfc02c91814411d540bd491af7d6b443ebed0'); -INSERT INTO blocks VALUES(310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,NULL,NULL,'0c3914f9676e506a96e6db793f15200ef33087cd47de4d27628849013a391daa','624bdd0a3d08e2d864df3bce2d7d2c75f9f55ad4c5a7202e7192e0a2297f33fd','d6b54527ae9ffd7171f775fd4711cef29b04f9aa9da2726a41a7582e45003577'); -INSERT INTO blocks VALUES(310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,NULL,NULL,'57ff5f34a9e418b179db9003414c5f3bdfa7feeb538f24071b23d024a3d05df0','2959426283694c4e4154c13cca75e1a6e557b1162213e9af9627564dc7fdd9f1','c5869cefda8d499ce849735b0d61b0276ecf23a0d971eb5907a1122155c4952d'); -INSERT INTO blocks VALUES(310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,NULL,NULL,'bfed530458339aab02ff75ad76738569dc6997c7a35d4452351678b04e022f68','4e5b992fc87b86d8da3f3c106e6020a6882af6a08bdc1e4469c11572e00160bb','b32a3d519494225c43431e6289697f2c1a863f0cf1ae9d231898837ceaf22aba'); -INSERT INTO blocks VALUES(310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,NULL,NULL,'d4feec997754d11a1502e5351ed62fcfbfcafb770e19a37da41d1d88b7b45ed4','adb9877ec3a9377c7c1e66c0d46c09b9beab264cfdfa2eb4c4e43ee3129d7373','f62f60e2657dce8db5f4dc88149fc465feae533b323afbf4ca0fc36d0b7c258e'); -INSERT INTO blocks VALUES(310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,NULL,NULL,'4ab5ff9e71bbc83956557fb5abec98372fa38e5580838fb258b2d831bfc4d9ea','200b2326988ed3928f2a24b416b76065c5bd828df664827fc61b671ba89daec4','5d01ba241632d978e4b949255afe2ea4edc7f294dd36e68a958b0e39cf064b97'); -INSERT INTO blocks VALUES(310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,NULL,NULL,'1909ef40a24263776cb9e0d52a690048b50728855a0fe4b0e1ba3834a9e401c1','a4f430f1766aa11bd3174d89ee2c519aa6dca5c894f647573097db8ae1d88ed4','06bca8e8d7ac50c394a12c1f4d71715c4be37c2082242db4ea97e4946560bf42'); -INSERT INTO blocks VALUES(310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,NULL,NULL,'c3d51a5f2df90c089844ba4de7d5541f6051490aa1389e5945a7bb91d49e3589','bfde60e00f17f996da019002e01e5b20b6611a8c0997b7d777cccfbcf90b9138','966e5c9bf0b4e30a851e99f26bb85db5dcda716dc1ba7b618a42636206fba859'); -INSERT INTO blocks VALUES(310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,NULL,NULL,'a9dc31556d38b118eeb0bcbb3a374a0ed79adec4eb23e00c80c0599ba97c9a7a','e23e7a068bdd41d3b4c8153ac572962a51395f845605266f1a7b876edfcc58a3','d5d206218f993d2109e0ebc7f69e9449ed8a3f978faf339bb4259d069e2c27c1'); -INSERT INTO blocks VALUES(310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,NULL,NULL,'e72be5070d0a5853631d902d334e8b88eddf6e79616373311babc4a0a27dd3d8','70d6d2cc76d6eafd60b108dc08733c70d6b4a018441360ecf006491a98319f2f','f7de539d29aa189b3cbc00a62e0cc816aff925d09d3044bb158e60643be05d7e'); -INSERT INTO blocks VALUES(310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,NULL,NULL,'cb0962222af917dbac2a11465c22cd80770c0b3cdb8bdc0870c99a8116745c9e','682831136b79ae77a003fa69f995aed4e55c2b81c8a61caee22a927d96c92000','60885a44a3931bfa8328147bbf7f0f090185fe6e2002d1bb65d0fbc8c8fbbb34'); -INSERT INTO blocks VALUES(310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,NULL,NULL,'6ff899433f22546c41a15f20b4c66913c747931500fee10d58c4a17b9e2f0c88','e7cc744b750a7fc841644233b9351727ebe529014b7f529c6f5f675d50eac547','043d2845f2668596de7d0468ac41b0a4aec28ab5139df764f4b45da27dc8f6f0'); -INSERT INTO blocks VALUES(310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,NULL,NULL,'ec66a06cde401b66917c6d1d4e1ee8893405cfbf0474560d9997d6960c8af710','837340ff1e2674e4b1b2ad78aa81958d2f9adabeb7565477e5ab006b574530d4','5dcbbf7ba7224408b51e2462090f9e0bd8703565df00ef71ae27ec869153d4d2'); -INSERT INTO blocks VALUES(310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,NULL,NULL,'b2053109bff06dae1705fc32ab0712f38bf9d206fa3517fbf0a938d1b5f33bad','0a580bdbf224df576376785ba419db92b19f3d9ea10996c50fba737e7b1e85eb','30d886f234b03e7e4df9378740cea29e9507bceae5730112c479e936f787f304'); -INSERT INTO blocks VALUES(310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,NULL,NULL,'d7051de4d03fb31bfedf215b407b1edc12789c1f2748abb5a72257ad8f5113ce','a9a1d9f080b85033e8bdc990c66a13242c01c38817febcea4f9ef28b7f44230e','3790cb52ececbd3117b15dc6d951dde4a08b1579e69aa5d9233d5b27d6550f37'); -INSERT INTO blocks VALUES(310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,NULL,NULL,'35c95a70193ded2f9ee18254a91ce5d4834bb162fc3cca85dd432339257539b8','4989f663b6e5c498e616f97e975359c4e45342667491a5698225ddd48805ee95','cf5897204718613f86ec95321eb629f4227cfb867db469f9caa213b204b4a4e8'); -INSERT INTO blocks VALUES(310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,NULL,NULL,'8315de64ee1051c333687ba9fae6244287b85bcc1e3a4b67f3fe7d51b931378b','f055dfbeedebcf6005e7c33acbc1f2597b6cfddceaeb109a4cb90672bcd27c8f','c63295328586975fa42c1e18e7f2238df5706fe4eba3b403197be7fe40221c59'); -INSERT INTO blocks VALUES(310021,'7c2460bb32c5749c856486393239bf7a0ac789587ac71f32e7237910da8097f2',310021000,NULL,NULL,'c2d646bd3f54eec73cd9da6f5da4bc159d0c64e8fb9ad4095dfa58850e65c7b1','b7479a4262c2e37420071d33b88d1133572c551c71d9a555e348b66a650bb1be','ba736bae5e34608e0e1669a912babf7c5169cbfbc149a799779599d8a13b70f8'); -INSERT INTO blocks VALUES(310022,'44435f9a99a0aa12a9bfabdc4cb8119f6ea6a6e1350d2d65445fb66a456db5fc',310022000,NULL,NULL,'619367fb7657e0fb4800acd385eb5593d085ce5cbfbfb098dafa98612d9fd445','8e7180854beea8bbf3719d9cde94c87c0ce4a9435c19c0ca7b92c64ec3c0986b','ecc28315714c3c7af038418963a75a2298cc644c6c06cf31354f53e95a642886'); -INSERT INTO blocks VALUES(310023,'d8cf5bec1bbcab8ca4f495352afde3b6572b7e1d61b3976872ebb8e9d30ccb08',310023000,NULL,NULL,'ba865dbc8263aaf153d7264dfc6a580bebe9391ca0551f15a1c822c6cbe2b8de','cdf5302da97635c682b957d8deb2ef5d041cfac60a859caf0dcec39b8441aad8','1a47d24d871ba2323c3932e70317520b80e2eee6bcb5155ce8187c6e5e2e96d9'); -INSERT INTO blocks VALUES(310024,'b03042b4e18a222b4c8d1e9e1970d93e6e2a2d41686d227ff8ecf0a839223dc5',310024000,NULL,NULL,'368e948cbf42de80aca51abe75d09ec78196924453719182ccc86419df5da2db','97366e41be651e4f7e6a2a33d135c77f0081c5ec1c15021e3488b992afe1f653','a6a0c0fce97d8b86e995244255c1dd3bd2c35a863ce61e1d56b29a5246d69cad'); -INSERT INTO blocks VALUES(310025,'a872e560766832cc3b4f7f222228cb6db882ce3c54f6459f62c71d5cd6e90666',310025000,NULL,NULL,'9f7132c808936f580d4fb1dc5791541a5a3d23532d1093c20d434007f8dde54c','03b528217cc61fb49bc292ecff010dcfb052d980ad65b5eeeb3141cc2c8c7d0c','2d2240f0af2a5dfe951eb5d1f65c093a18438f8b0967280fbb4e8783ee6294e8'); -INSERT INTO blocks VALUES(310026,'6c96350f6f2f05810f19a689de235eff975338587194a36a70dfd0fcd490941a',310026000,NULL,NULL,'074ea6f10a5290cff31f7b21483f7b2248723c8d1b5bc060c31219f66f37def7','ca60f54cb588a625675c6c8480597adb052d437d15fe6de8bbab2760f023b8bf','4213f8f50b226a1f7f06dc286479aef9462c1994cb4cc3eb5dc08b973c6db207'); -INSERT INTO blocks VALUES(310027,'d7acfac66df393c4482a14c189742c0571b89442eb7f817b34415a560445699e',310027000,NULL,NULL,'a3ade2b2e5bc701996f511f3e85d596b60f882a3254fd975769c0f38b3b14cb3','a42c90d7ad48ea17c1aba8698f6be1c657205f312f2d9b555ee23222fc0acd5d','60db353447f25d43682eb032280887a37fe0b9a67f4d07bdbd2a268ec5530d2b'); -INSERT INTO blocks VALUES(310028,'02409fcf8fa06dafcb7f11e38593181d9c42cc9d5e2ddc304d098f990bd9530b',310028000,NULL,NULL,'3bf124a34825b5c487c94dd79b1ea4f25e657294966879f1c10b56b37a3d29b5','84be0933934932b0cdf75ee976c412234ce556d0fcfec5dd70fcbbfb335bdc2a','d65f7c3e0035b4dbc08b62f454a181ff97aa2f54c3ae476b64694a8082c88dc5'); -INSERT INTO blocks VALUES(310029,'3c739fa8b40c118d5547ea356ee8d10ee2898871907643ec02e5db9d00f03cc6',310029000,NULL,NULL,'e502eb7b282e0bd4940d8f75ef51d677a641f3d55304adcb015bc249c97892bf','b85fd660045c72fda54ac54f7c309485f40ce610b034acb299a7920b1ffa8b0b','97885f54e8606922753c57f79ac0a34b22744f758edd2d8deaf246542586d03c'); -INSERT INTO blocks VALUES(310030,'d5071cddedf89765ee0fd58f209c1c7d669ba8ea66200a57587da8b189b9e4f5',310030000,NULL,NULL,'d64b5eb04ddfb5600be40142b1fd27c308387a35942a6e8a6916407bbc1313b1','927215893aaf1873637a1cc1ea26da0103ad2027bd10bbb2cddcbb1b244d8b1b','8599c2ccd9217f6b8ba9e3e5722277173224cbb29ae039919ac83dc94e7cb9aa'); -INSERT INTO blocks VALUES(310031,'0b02b10f41380fff27c543ea8891ecb845bf7a003ac5c87e15932aff3bfcf689',310031000,NULL,NULL,'e9c97dd7adb1b22d4ed0238607faeb2d14c090fbd7d685275ee802ab23b4b740','6685db9a296948ceccae10407621f5a89f08501b6169eb0c3d0008e9258e7396','a71261d97d46314197c72d82129a029f4f82286941b02ec81bc5f1d29a036255'); -INSERT INTO blocks VALUES(310032,'66346be81e6ba04544f2ae643b76c2b7b1383f038fc2636e02e49dc7ec144074',310032000,NULL,NULL,'2544ffced9af1aabd84ab51fb78c56c9beac03dcb286aebd4202938dfa0754ea','34c99ef430e6e473f4e7848b54551e92251a8ad1279f191c8b3ee155c3d2e225','603895ec674edcd02465957faf31d9d855cbbc1b4907a19e980e3f577748ef82'); -INSERT INTO blocks VALUES(310033,'999c65df9661f73e8c01f1da1afda09ac16788b72834f0ff5ea3d1464afb4707',310033000,NULL,NULL,'4355d3ebb95187fec36b1847a4c3777d8e1d5541bd1d9ff8461b8ac5b9881261','9c98de1a6fa047e68bd035a876b0556d08b1e188852660f2f6534e286b1a5723','abcb6749af8606f2fa8a1ba15a8ab20b2e98bbf2b7763d795d10a4a09ad95d46'); -INSERT INTO blocks VALUES(310034,'f552edd2e0a648230f3668e72ddf0ddfb1e8ac0f4c190f91b89c1a8c2e357208',310034000,NULL,NULL,'c7fcb5134bd8131c035d65b5eeef8a3cd214348822563232a992f3f703c6b0b9','0baa41b3cb2058576f832e7d9f59c40c693b908ee290668cafe23261e7470fd5','7beb702115bea37dd5eabf25aee4247c13d9bf315a6a13793c79ca0fa478ea91'); -INSERT INTO blocks VALUES(310035,'a13cbb016f3044207a46967a4ba1c87dab411f78c55c1179f2336653c2726ae2',310035000,NULL,NULL,'c41c280498ce05d6073fc6e89be2684dc68c345c1c43c00b9a3f9041954fce26','efa7928da5996825f879c83134bae659933d2b757ad9627fcf554de1908fb8b2','efc254416fab775f25eae1d9a75399df9dcf247418cc79bcdba0a08fc5848225'); -INSERT INTO blocks VALUES(310036,'158648a98f1e1bd1875584ce8449eb15a4e91a99a923bbb24c4210135cef0c76',310036000,NULL,NULL,'86c67fd234ca9d2406080018b2677386990fac477db8008c0092d40a398203ed','0563c49b0057ba5ca7eaba1d4617d9209aa3363d1882a3168cb800b423a01e56','e2d2686ddfe710f3796bb20cd792df33765431b0d8a1bd2247526a085b71f79a'); -INSERT INTO blocks VALUES(310037,'563acfd6d991ce256d5655de2e9429975c8dceeb221e76d5ec6e9e24a2c27c07',310037000,NULL,NULL,'3ae6272437eb0758a779d68785c41e119d1204dd5421c78e03b9d12eba64804b','a77ffdfdfcbc0c909d943b75e10fb9286c458679ed13e8a8d938ff020935dfab','ede035f778622d4d127babd9025e224693213b216fa416f888885c3b83429af3'); -INSERT INTO blocks VALUES(310038,'b44b4cad12431c32df27940e18d51f63897c7472b70950d18454edfd640490b2',310038000,NULL,NULL,'18f7552567b898f6c2cfe8c829903912445de5dbf05b56a13bf9b402a24fdc11','4b597ae170bb4bcaefcf488c0321856842aacd7a8d1ffb15b99dbcd5794c9f62','4209698c8a5630e7adae2ba1df411601d42ef05c561237263d6cc528b579dc56'); -INSERT INTO blocks VALUES(310039,'5fa1ae9c5e8a599247458987b006ad3a57f686df1f7cc240bf119e911b56c347',310039000,NULL,NULL,'85f2255f9256a5faf59ddec1c58b1d3bc12c91bc2c62ead61b48e1f94ea2888d','fbfb8286910b3b5ee59a13b1ae371519c3ce18c11c9ffe9d5e13b82b312b3a19','4a614a74eb5941273fcff2ae091ef35df36e97b7b3e85831fe34d84ae92e4846'); -INSERT INTO blocks VALUES(310040,'7200ded406675453eadddfbb2d14c2a4526c7dc2b5de14bd48b29243df5e1aa3',310040000,NULL,NULL,'b799477db184351df5503f8d15d5461a0483ea35142c003b7e640429663ad943','2247e92fe98e3ff04854b0931a6ac52667b378adf2473df4f72ed4727e23d7fb','7f127832f2698e6121d13daeecb5c83072357cd6f07ed3d7296a04697f9102e6'); -INSERT INTO blocks VALUES(310041,'5db592ff9ba5fac1e030cf22d6c13b70d330ba397f415340086ee7357143b359',310041000,NULL,NULL,'efa9cd46741b59e74263d6d348584f1a61e8ba32163c09fc3ff2e41a5431a483','3141d1828980a8449ecc563fe1c6fb8b795b16167754c569ab4714b191db285b','e77aa6621b6cf6294bbab2c20067673a20c7404433a0961d72e2cf92a383dfa2'); -INSERT INTO blocks VALUES(310042,'826fd4701ef2824e9559b069517cd3cb990aff6a4690830f78fc845ab77fa3e4',310042000,NULL,NULL,'f3159919f381d46a3e1341703e55192a02a36519e71fc2675285a3a14c4ee04d','eb5b80d9e47c2d4b233f95c81b1e7ade70b669824c7e88f0dd74bf12da5d98cb','02bebe712a8444c3f8a226b0ce967b2a9d8f1327b8fc6d41ddc1596b16e27522'); -INSERT INTO blocks VALUES(310043,'2254a12ada208f1dd57bc17547ecaf3c44720323c47bc7d4b1262477cb7f3c51',310043000,NULL,NULL,'961c79ea2b7dcc2d7489c423b568fb978631e71732d6b998bcc0657aa4d19194','1089375f5640000baba2e41fd650449da2a9fb78cae1ecd2480d66e34cb99113','abd04fe017b05d0c1e4224e34293f020b58850d18c0c88be442b5ca644982d0b'); -INSERT INTO blocks VALUES(310044,'3346d24118d8af0b3c6bcc42f8b85792e7a2e7036ebf6e4c25f4f6723c78e46b',310044000,NULL,NULL,'d674c39010fd4554efa487d97a3d9cae278ed9b4aff0ce57db33bd881beeb3e3','f749853a13a4556cdf6c6f32df5524fdfed3cbe833a5cff391590a4fee91f85f','6899b6fafca43daa8379ed93175d7cefcdb08d0c904df86632b9ad112211c749'); -INSERT INTO blocks VALUES(310045,'7bba0ab243839e91ad1a45a762bf074011f8a9883074d68203c6d1b46fffde98',310045000,NULL,NULL,'9ba70a032ae92672174421689c0845784f0cef7374e88b2f5258260191864bf1','638f8098d799cf20bfebf815f52ad2fe877293589cb5bfe9267f075599cb25c2','5acd33bd7e4da84f58d556cfa42fb43b3d0ea0523f0b739a1be5ef29dd9f3407'); -INSERT INTO blocks VALUES(310046,'47db6788c38f2d6d712764979e41346b55e78cbb4969e0ef5c4336faf18993a6',310046000,NULL,NULL,'114a6ab930fbdf8531431620ed219db3756a634c5b99af6ce1ee66d527d277ff','c57389d20d41056859042d395dad71684bcdb797702b5ca1fd086ede15d416be','7bb43adc70dc4621d34c4f7b0153f3351dc2230111717f3ba927911a2c1c38af'); -INSERT INTO blocks VALUES(310047,'a9ccabcc2a098a7d25e4ab8bda7c4e66807eefa42e29890dcd88149a10de7075',310047000,NULL,NULL,'5356512c94ea2c77623d874a927aae8c3dce287a34dfd27a617abfa57142c7f3','e8de25b5f0d9d8cdff0fe8fd577debf9e03b6d084ad879418daeed1cd3fbaebd','ed273e1eb904e548c4dc1af3e59bb854e8adefa407e65b913f3ee35e57804c3e'); -INSERT INTO blocks VALUES(310048,'610bf3935a85b05a98556c55493c6de45bed4d7b3b6c8553a984718765796309',310048000,NULL,NULL,'0902ca0868560d05049c983bca3ab91cdd5eafc46ab0a948d702abcbc4010582','c6429e977bd821d46209f8646005070ae8100793b3ad060a69092defe8b6479a','b32c5d4fe47b5fee90cc2f6376efef3f4509e9216c0b396ec9fbb2846a85a855'); -INSERT INTO blocks VALUES(310049,'4ad2761923ad49ad2b283b640f1832522a2a5d6964486b21591b71df6b33be3c',310049000,NULL,NULL,'978794628fc95756032cb7fb4e9d5ed286373d84fafbcfceec9af71d18c4c0be','ee0178d893b2d6cf67e3d3cc931e1adb20a6dad1e60374441f6515ea2a024b7f','641684504f577590958cb8b297053876e58076fdaedf41c3fa3ea0e2632b66cd'); -INSERT INTO blocks VALUES(310050,'8cfeb60a14a4cec6e9be13d699694d49007d82a31065a17890383e262071e348',310050000,NULL,NULL,'ff16abeb1d35e0e422f165e206b0d69e0b9ff48b68fc6656c1af74801908b92d','89a9271b8e1769b1c646dccde638e476b5978e6f1febc2d46f27cf547ac5944f','8ff65e0e6a5af46f64770d1c2b22088b05b70731df474443ee656508c65ea0ef'); -INSERT INTO blocks VALUES(310051,'b53c90385dd808306601350920c6af4beb717518493fd23b5c730eea078f33e6',310051000,NULL,NULL,'556ff900993e70cabefd05ddd5dbe3e8e10bb5c9ada7913b75d84af067004ed5','1efed29a498e9ad2ad5899e1885a75d3cdd905ff35fd413884f1b2314ed09581','e884632fa35556fece3eb4c427100b1f2138d591414ad2bfee691b420b6cbc06'); -INSERT INTO blocks VALUES(310052,'0acdacf4e4b6fca756479cb055191b367b1fa433aa558956f5f08fa5b7b394e2',310052000,NULL,NULL,'15af3a616a2974aa70b7b58f88132051f335af299473db925b619fda8be1afc7','9f8f9ef8d3abda82ec27b7ed4aeaafa25857c763f49ef0efdde8813d396ef0cb','430a31d4d21460ba28c17e13323ad59d6aa7cba3ee457ca7ab7c97272c9b0bdf'); -INSERT INTO blocks VALUES(310053,'68348f01b6dc49b2cb30fe92ac43e527aa90d859093d3bf7cd695c64d2ef744f',310053000,NULL,NULL,'ed0ed3b480b38929a425c2b61c86582495764624e020cb86b3a95fc7d59c692c','8120b49ec58169764118faf50bf60029b977639b1790be0d57b7192b96c3046a','b14cf47db4743b6f5675ab729ec3d57445a6566321f4903bc6d15644cc3f0d12'); -INSERT INTO blocks VALUES(310054,'a8b5f253df293037e49b998675620d5477445c51d5ec66596e023282bb9cd305',310054000,NULL,NULL,'f012825d2d549910910ad6b7e4ac2373d095b53869f0793709684f0ff05bb108','0d9a6ff9b029b7efbfd21dfacb7473626aab4e46c986412d26c28eeddf34a049','c12c65f4e54efaf55ce641a342687f093c67c3aab15f39ff850590b500b59c51'); -INSERT INTO blocks VALUES(310055,'4b069152e2dc82e96ed8a3c3547c162e8c3aceeb2a4ac07972f8321a535b9356',310055000,NULL,NULL,'90c08144277fe622573282349edaf9e59289b716b5b4e368d88ac25e67e788d1','cf91778454007a015a01809f226d6a0b603ff4c02c731165c61b150b4016782c','3edf577c3b1874224e12aba021ace1128f19459093442afc256f36e5992fed53'); -INSERT INTO blocks VALUES(310056,'7603eaed418971b745256742f9d2ba70b2c2b2f69f61de6cc70e61ce0336f9d3',310056000,NULL,NULL,'c888ae590b64fa4514ed7f94ba785b12e881052185cc4702b598cf6e48cbb3ba','2bf8a7557b0646f2b868dd63707e3421d083ff43d146a30f6cb8d50fbf522d17','52b8cb15c2a8669a772308512548cc5d7977dbdee440803f70aa2702ac6d06f6'); -INSERT INTO blocks VALUES(310057,'4a5fdc84f2d66ecb6ee3e3646aad20751ce8694e64e348d3c8aab09d33a3e411',310057000,NULL,NULL,'e68c9a569fda6f1e1e59502953c9735857a0ee158a76397722436466df24708e','44566226444e1c11efea69b48f8b6406e3c0ad004197a2ba1894629368c0ce1c','070c34a2e9324cd88a9139b882cc8eb046e613820963ae4aa849853c2147d3dd'); -INSERT INTO blocks VALUES(310058,'a6eef3089896f0cae0bfe9423392e45c48f4efe4310b14d8cfbdb1fea613635f',310058000,NULL,NULL,'9f6607682f4a6274c2a45895f849816aec83ff0820709ba781634b84518eb05d','53d0cad4ea1b47791128e1621d72863f6bf7d9e9c61e5b4b305acf2731076e95','a79e48dd0db1ecbd284c58e6455b42b7c918721272374d9b4e028c6cb8534528'); -INSERT INTO blocks VALUES(310059,'ab505de874c43f97c90be1c26a769e6c5cb140405c993b4a6cc7afc795f156a9',310059000,NULL,NULL,'49b10a5c390f603e7be0d405bf1fcae95fd15682ef2e41a3b2fcf713d271e541','18fc665a8fcbdd69cf21780e6e1addd3b2e07c6218996a5853f0d7c1d080d38a','be971cdd2254b8dbffdf0d1850558a3a03122bdba27fad64e37f1a6fe32be703'); -INSERT INTO blocks VALUES(310060,'974ad5fbef621e0a38eab811608dc9afaf10c8ecc85fed913075ba1a145e889b',310060000,NULL,NULL,'1d6cea34d6f7042ced3a5211da80de88fa77c900af5526f3033b715e4f68df17','27389bb1c158cdd83b61484951e0fb5ef1f86c9f48d6fb18ee3c0d2b803ac6d4','81ae70236d60d237b62126f557304eeea372a4998fa674631c07dab285608088'); -INSERT INTO blocks VALUES(310061,'35d267d21ad386e7b7632292af1c422b0310dde7ca49a82f9577525a29c138cf',310061000,NULL,NULL,'0c43668fdc3d6cc6ec84fee99c68f0eff21650a618db35bc20e428550eae9b0c','3ec1ed737d95b213deeaf5801fcce87d967796de0a8d519c84a08b0895a11c34','dbaffe23159315afda374308d5d0ae3112e0048852b8c05b34fb87e9d0267cf3'); -INSERT INTO blocks VALUES(310062,'b31a0054145319ef9de8c1cb19df5bcf4dc8a1ece20053aa494e5d3a00a2852f',310062000,NULL,NULL,'cf03a34b29d3a8f8ea5fadb017426f2843c6ab2e785032b6dec70d7aba7bce4a','801b7dda37bc274991b1f4322af726ee72e098468183be1931175c57ecdc9434','9b2cb332f21ab2b7a98272208b6d24fd799ea38c99c689558c971ad7907eca07'); -INSERT INTO blocks VALUES(310063,'0cbcbcd5b7f2dc288e3a34eab3d4212463a5a56e886804fb4f9f1cf929eadebe',310063000,NULL,NULL,'e145dfc2c7f053a1ba4c8a41d042b40c0748eefcf9e56c5e906ad4b12f3653eb','2e58a9cc3c5142b6bcd3b6807e1851d5fbdacd80b8a6cd326b7dc70143af7112','5bcd6072ee322ae89f30ce0d42a1082c38d9eaaaaae221f078e638a43e27a6d6'); -INSERT INTO blocks VALUES(310064,'e2db8065a195e85cde9ddb868a17d39893a60fb2b1255aa5f0c88729de7cbf30',310064000,NULL,NULL,'ebc34184623da16251782c82098c7fcfda42f95b155eadfacab2a53e3b34333e','1a31f784c683c1eb9e18f92a6cc9e7aa2175543baae0df4809c3469d581d1257','5ec229acd45b02690ab099479fdf53c3d56f77971c080d6ebfa340023c2093e3'); -INSERT INTO blocks VALUES(310065,'8a7bc7a77c831ac4fd11b8a9d22d1b6a0661b07cef05c2e600c7fb683b861d2a',310065000,NULL,NULL,'db746a9e0ad8f37c14ef14180dd1bc562ae757a6d4d042a517bb8953f34c6958','0476c1a4ed7ab080b63f27683208fc2250c0d9d91ffdfaff8cc8b46864cd00fd','f20a5e9050eeaf2e8d4206069a7c28210bacc3f4d6da9e0d6568a81cfbfd91c2'); -INSERT INTO blocks VALUES(310066,'b6959be51eb084747d301f7ccaf9e75f2292c9404633b1532e3692659939430d',310066000,NULL,NULL,'cc71a63314b770e4e010bc7c66d8ab808451b6401e6df8558455a2bfc9bb4882','7f31e86f2f2b89f0832f2729d23e321b25db963acad6c4cb898432a2815bd924','a0cec8d0e4c3d0d23911acd69f247367cf9e8b716b43410ca87f9d0d2b9ed636'); -INSERT INTO blocks VALUES(310067,'8b08eae98d7193c9c01863fac6effb9162bda010daeacf9e0347112f233b8577',310067000,NULL,NULL,'a5812c0f3a37b04d5105bca6b0c4819a41beeedf5b0f314f476ab55d6c31235d','b49ea91f85529988a43ed4cc1730957d79025e9d68724dc693910c9b297f7622','51f4106632d997c8a0544aa9bbfc999fa7ac4ef5e5a6c8825f56f5d85376aecd'); -INSERT INTO blocks VALUES(310068,'9280e7297ef6313341bc81787a36acfc9af58f83a415afff5e3154f126cf52b5',310068000,NULL,NULL,'14f065751896a2724251b6ca6d0297b344986980075fb72ad058ad0b5bedcd3c','fcf4532d25e78bf648f88178686ff2a9402e06f080cf73ea059b9b57afdfccbe','93e821ed71ec39f46fb55babf9997c2e4f484729926350871560997b77410c7d'); -INSERT INTO blocks VALUES(310069,'486351f0655bf594ffaab1980cff17353b640b63e9c27239109addece189a6f7',310069000,NULL,NULL,'a7dd17b4760fb65ac58be1b1653f7cb0e90574c47f70c61ff9f940ad15ad3658','aeb34df363fb4b0a8ddd634858390ac460d0933eec0cd4d08eb8f51b3034cb0d','99b93b33e05f5640b0800f6324ebdaa62193ff56abe745efb28aebada1066004'); -INSERT INTO blocks VALUES(310070,'8739e99f4dee8bebf1332f37f49a125348b40b93b74fe35579dd52bfba4fa7e5',310070000,NULL,NULL,'8068a6bcc5d1fc1a78562f0f3165423b45b4674e55f21c4c09948fb65ee632c0','3a635159c2a0ab25f3321c66a211fad9043713fc3f565729fef56cb4422cdb01','b666dd42d3bdc6c509902fd5a1b3b49da9184238863b6386ee404158ab239c57'); -INSERT INTO blocks VALUES(310071,'7a099aa1bba0ead577f1e44f35263a1f115ed6a868c98d4dd71609072ae7f80b',310071000,NULL,NULL,'af86ffad4b8dd68a0f18142935bbb18623cc5ce2e9e0c02f04c0e7a5dd974e17','34ccd82160b077e1558320f693e8783b05fded291d4913a411cd82bc9508eaee','c2c6d8cef5062d35eafe84b684789274b0dbab407020e28a6ca4d139221b5a06'); -INSERT INTO blocks VALUES(310072,'7b17ecedc07552551b8129e068ae67cb176ca766ea3f6df74b597a94e3a7fc8a',310072000,NULL,NULL,'36de48518d1446b33f2230c5eee7d18e040db543fe03dca001174f8382c209ee','96a02efa035cbd69c60d4a8af772f617a328b15c344d7461a810ffcaa0a48989','427ddce2d7279f25526f1fd94b182e565b36e41050f26897dcbcab51b0fc9d82'); -INSERT INTO blocks VALUES(310073,'ee0fe3cc9b3a48a2746b6090b63b442b97ea6055d48edcf4b2288396764c6943',310073000,NULL,NULL,'4374f567cbc460b73e74d6190db353c3ee86b92c3f99e392beae3caeb264eb5f','150ef2991aa2b7708c1c889d17ba8b6ab519a7e70c798520e1d29685b3109267','abfbfc0784f2fb0b782b781670e0c9eccb2fb3fe21e22c5bbc683c273b16a9a2'); -INSERT INTO blocks VALUES(310074,'ceab38dfde01f711a187601731ad575d67cfe0b7dbc61dcd4f15baaef72089fb',310074000,NULL,NULL,'54fd95cdf7f9374d1687590f2860276afe67a265ddd9216e5b63fb06c5bd569e','b2d4b4d6a29e570dd4f54c5de9a6aaafa9acea32cd7c2ec6358f64ea625a0cc3','3e514dd111f8583a4767e2dc33dc388bc2ba022240daa637858ba6df7866c83e'); -INSERT INTO blocks VALUES(310075,'ef547198c6e36d829f117cfd7077ccde45158e3c545152225fa24dba7a26847b',310075000,NULL,NULL,'2b42e23b43d30f91fe7705a01f0c8ec86d6230815b587704bcc70b91b5ae87b8','5af5fe539d57afc520f5fa50f7176843531460f6de095e86dad351b619d705e6','7df9a94e58faff41dd4e09af32fb74745e2def8b17378bbea51af295b2d26fd8'); -INSERT INTO blocks VALUES(310076,'3b0499c2e8e8f0252c7288d4ecf66efc426ca37aad3524424d14c8bc6f8b0d92',310076000,NULL,NULL,'577092728a4dc81cd9a06fcf6d2b058f0e4ce8bcb395819a704d6b4144f041dc','ea08f38c5466151bb0a8bf3fb23db915cae86c5315ae425e579310970c81a48c','81ce2a210340735479a21d73dd85503ac40bb61168d5a5957aeb9f2b0a56f9b6'); -INSERT INTO blocks VALUES(310077,'d2adeefa9024ab3ff2822bc36acf19b6c647cea118cf15b86c6bc00c3322e7dd',310077000,NULL,NULL,'d1ba60181f3061673c64ecd0b92abbc19b1a6e69a927dfefdfd8b8c74171ecd2','c97ce2f8652af0d41166f96a35f79d7d330afa612d408a9ed41fba3275419e52','f0b29072c87e30030727658703ca1e602e6d14d3c6819171ad081693a79ed4e5'); -INSERT INTO blocks VALUES(310078,'f6c17115ef0efe489c562bcda4615892b4d4b39db0c9791fe193d4922bd82cd6',310078000,NULL,NULL,'c0a9270d15793e68cfd1cf445315d737bed7052914da6def4f014c21f0c9e0c5','e4088510e8b02e2b5819ee81923ccc41499157aa2ce3bd5107ac6cddba4b05ae','ab5b2fe6bdb4ab329396736afc86ffb939b6a32cb9fc66a93da67b233969d134'); -INSERT INTO blocks VALUES(310079,'f2fbd2074d804e631db44cb0fb2e1db3fdc367e439c21ffc40d73104c4d7069c',310079000,NULL,NULL,'74eaddecbf5ab6608c1e95c1c313c13f2af2b649512cc8c7016717d21e93f815','c4768ffa87a9b119bd362f39e4b17d6571e7364801243e8d0cc19a31db38d30b','3122061111602ce2dbd3a4f6afb624f41920b334d4ab7b75d36b8de808e98269'); -INSERT INTO blocks VALUES(310080,'42943b914d9c367000a78b78a544cc4b84b1df838aadde33fe730964a89a3a6c',310080000,NULL,NULL,'a759e3aac1b015e28b8b524106a74b943b215faac8d5079384ec7351b2239bde','1683a5b4364d553e2ef30fabf4e20c1ba263789cfad94b3155192ad47f9bcbf9','52ec84a940030dd12bc0872a1710d547e205f0744ed69518f1ab6c3dc617e842'); -INSERT INTO blocks VALUES(310081,'6554f9d307976249e7b7e260e08046b3b55d318f8b6af627fed5be3063f123c4',310081000,NULL,NULL,'71622e25e8497db6fa222e33c60ea582698e72ca5789a52c9252bf51191cadaa','cfc65becc71133ae9ab2359117c28445f559ee165bcd1148751a455c416c32c6','da3288ccf6b7a950a75a354011d1a7b896279ec534f496c5a6008ff47ee8dae6'); -INSERT INTO blocks VALUES(310082,'4f1ef91b1dcd575f8ac2e66a67715500cbca154bd6f3b8148bb7015a6aa6c644',310082000,NULL,NULL,'47e9d8fbcbafcee2b4c145ce651333ce49812533d13f7f9a0e9a448f51cfbacd','8992dd9243f1ea83301d6fd669496754ab782e7d2902ea4b3ba2d669db385bb1','c64eb468c761f4ae122b966905958ee42e0089ddcf2eb92c03d7dac7a9384f3e'); -INSERT INTO blocks VALUES(310083,'9b1f6fd6ff9b0dc4e37603cfb0625f49067c775b99e12492afd85392d3c8d850',310083000,NULL,NULL,'e61148e7a8125f7225a6b6e1d77786f8b28b0b8a74e60fef3f75fa4de8f7d882','5952412a3bd08c9c0fe08fc49406a35a6245b267c0d04349895c8df1367e65da','d57a6ded4f228a1212c06e52c98b803beb021ff5c005b2cd3076ad2d529ac1e2'); -INSERT INTO blocks VALUES(310084,'1e0972523e80306441b9f4157f171716199f1428db2e818a7f7817ccdc8859e3',310084000,NULL,NULL,'20fb450589ddc6c904fbb61cca8588e85e865635c12402ce7ae72995ab884c14','8b1c1053f8ab1bb8281fdc42cdec916b1905ad594a32fbfd54ab00cc156ff652','a79c18b6865ede3b6c9f844334508b80970695c1251e02579af90e220eaf9d30'); -INSERT INTO blocks VALUES(310085,'c5b6e9581831e3bc5848cd7630c499bca26d9ece5156d36579bdb72d54817e34',310085000,NULL,NULL,'9cea37d548308505f80dc438d5183bac6c6ca424ea4dd9c85d883b05d67cdc92','e8500ef3c8d7c5b1dc0d1c34942335a2439dd03d3e7d706d889da1d61ad42267','c10260d84814af2406e9620188e73103ea29f784829c9912766d62bc74b5005f'); -INSERT INTO blocks VALUES(310086,'080c1dc55a4ecf4824cf9840602498cfc35b5f84099f50b71b45cb63834c7a78',310086000,NULL,NULL,'e11bab5fba2d038086c65030b90ce1cbc988314d0c9846aa7ddac4fd357bd01a','dbfd714658165162873c8e9ba993a3d86dc09d775a27d74f92066b85d04f5d2e','07eefbde9ba4287ba2d0a834daa630053fce4011dc335b3b62d9bd239da68633'); -INSERT INTO blocks VALUES(310087,'4ec8cb1c38b22904e8087a034a6406b896eff4dd28e7620601c6bddf82e2738c',310087000,NULL,NULL,'777873e7ebd0ec3052be65197ec0db8bd72e46d2053badb0f37be1f6e84ae0b3','e532c1946b8adec70c5f153ab85d00d3323837028c9a2efaccd53b7fb0827bca','1cecbd8673833205ad259ead04849aca0dbe9db947ef8ff65b14a4f6ddc33bc0'); -INSERT INTO blocks VALUES(310088,'e945c815c433cbddd0bf8e66c5c23b51072483492acda98f5c2c201020a8c5b3',310088000,NULL,NULL,'85a5ea57af33dfddddbcbe1a1c87994efe5a21a645713aa164f19e19bfb23c64','26d26921bb7e05c23a4a31497610711e0cfa0fef4b5dfceee22a36192c853710','84cea7f6075dd5da7f2f498092108e7f5bd22e9611b2c40b0970fe964776b1b5'); -INSERT INTO blocks VALUES(310089,'0382437f895ef3e7e38bf025fd4f606fd44d4bbd6aea71dbdc4ed11a7cd46f33',310089000,NULL,NULL,'bdf3b6e7a14a3aa22d42a7d69f2f96b0993f1eef2952a7d74313c37e1b407523','b654d4aa73c8c571c7058025a8b78c2765a4a582b0bcfff6a2e2ff01cc3777bb','9cc8fc568bc3008a389f173b90dfe3247f8fdc387035bf92b0d35623b3ae5d9e'); -INSERT INTO blocks VALUES(310090,'b756db71dc037b5a4582de354a3347371267d31ebda453e152f0a13bb2fae969',310090000,NULL,NULL,'9b3ee688c5786ecc438ec9c843ba5f898fe1ab1a8bc3903ad7789aaf6b0c0bf0','00ad0cd62a14650866e633959294cbb60cd8eef37a3b6f9e1eef52c6d7113724','867caaefb8a6731fea4143e82933bb5e2e57b9b3b62cb065915c6191ff757398'); -INSERT INTO blocks VALUES(310091,'734a9aa485f36399d5efb74f3b9c47f8b5f6fd68c9967f134b14cfe7e2d7583c',310091000,NULL,NULL,'25578ac389a77dbf9589b23c5470f3199016ac66a415540ae03efac29dfe7adc','9644cdc3417fe13ce0b86f2e3eb0076243b5de912f0c75383fa5d2b946cbf9fd','90de122faa8ee2ca9f4ddc4e231cc703c3d49f27dbf70353dc7612d8d5b639fb'); -INSERT INTO blocks VALUES(310092,'56386beb65f9228740d4ad43a1c575645f6daf59e0dd9f22551c59215b5e8c3d',310092000,NULL,NULL,'bb9109ba299c99cb104ebf2ef6e75141c50264d701d27119525ab5d0a54c1a40','e40c52b1a2c5d5dc99d89fe37cf0dfc5ee14a60f9cff42e67a9a66cb41083535','73a2c267e380b9d975fd8707dc53b6265ecbb17edce13323dba209777d5f05a6'); -INSERT INTO blocks VALUES(310093,'a74a2425f2f4be24bb5f715173e6756649e1cbf1b064aeb1ef60e0b94b418ddc',310093000,NULL,NULL,'cdb21362b3eb4fc10ba3c6bf3aba41bfc5bd0bf2475f742c1069cb4383be7b95','dde50f429dad14f0cc40b308caa95defd6d6433e8bffcb3ac94d4195c6a4d6ce','1a93dbca4645191091e09bffb165bcd5fc835c7c9119a3b54eae867f75eba7a7'); -INSERT INTO blocks VALUES(310094,'2a8f976f20c4e89ff01071915ac96ee35192d54df3a246bf61fd4a0cccfb5b23',310094000,NULL,NULL,'b82568de09fe4ea06f3dca053dbcbcc61dbe5e44dd300a4301c995ba180f894d','010e8ef2138afdd69e97a088476d124886d423a11c543b45f6fa5f63d9e4df7e','17004be78c855f847ba3b744aeef996239cdfa37f5a7df2917b2dc7e5be69057'); -INSERT INTO blocks VALUES(310095,'bed0fa40c9981223fb40b3be8124ca619edc9dd34d0c907369477ea92e5d2cd2',310095000,NULL,NULL,'513c4a041ee80ba72d1d8428605c682e3485fa45341460bc33fae6540dffb571','cdfadcf4d34670637533003abc458d84b84eab903d2bc2914314ad8567b8be52','1806e9c9a83fe3b4ccc5ee881a8fa37147cbc7b741ada249115544444a7087de'); -INSERT INTO blocks VALUES(310096,'306aeec3db435fabffdf88c2f26ee83caa4c2426375a33daa2be041dbd27ea2f',310096000,NULL,NULL,'3e8ff43c8d671159355b2d40a995fb8f6d84f6216fa8326fa80ae39aa9d15d03','0a1f425e3edcfc1685dbc8ac29f770ce39354eb4142c0b379eff383364774b44','051c9ee053de82324caafab37b961d2f3e02700575d344726f0fa1bbea32b412'); -INSERT INTO blocks VALUES(310097,'13e8e16e67c7cdcc80d477491e554b43744f90e8e1a9728439a11fab42cefadf',310097000,NULL,NULL,'19d91de7be12136737d3f8990e7a4a793912c952e71e017d723d750118e849c6','e8579d991762638c0cb98a9fa6792a225e4964f93647b3aa2f20caa2f38442fa','8565129102742409356c875dab6595fa6f45fcc2a1ae562e1c6fe1130362b1d5'); -INSERT INTO blocks VALUES(310098,'ca5bca4b5ec4fa6183e05176abe921cff884c4e20910fab55b603cef48dc3bca',310098000,NULL,NULL,'be75df2e5aff3faaebfc0ce4ab5134790fa728f84500e6989739dddc058738de','14432262fbb1cedac52a937bbf5ad6e923024b8216365a13a51ecbcdad54e596','0380c34b5c5fe065355b1cd2b7c4e5c1e3d87c051942b6e67ffc8a0cc5df0aaa'); -INSERT INTO blocks VALUES(310099,'3c4c2279cd7de0add5ec469648a845875495a7d54ebfb5b012dcc5a197b7992a',310099000,NULL,NULL,'9090b8a4a26ea7dff75658317ce2c6ab828b3b42684922e44debfd1bf8330b8d','98ca31667acc568b3e65fa00a5cfa87eb1007cd136973bbf5edb3c85e48b5f69','8ed5874fb604faa6de66018ba574f36c55a0ad5259af9b559d7f8bf5e9b31d73'); -INSERT INTO blocks VALUES(310100,'96925c05b3c7c80c716f5bef68d161c71d044252c766ca0e3f17f255764242cb',310100000,NULL,NULL,'d48d30db433bcee44d87153fb3db17d37fbe3534f23eb16ac853b3420d86d80e','5032e80b40215de67d4c98bb014a2abc17655d9f5ef2dd58ddfb32c3c278be47','c381ddffda4a948a5b56eab10b263dfa211f5df12888c28e77b54aef748dafcc'); -INSERT INTO blocks VALUES(310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,NULL,NULL,'53c6f9247cd255c86a69c05c4463ab94f9a3277496c155398c38dc6f7121fe9b','995d0ec365efa6e802dca5387b57112e524153d8fcd0803d9e1f20fb4ae9ed46','f2337666c6747bac38d390ac57c195bd0533cdf53a1cf91b8e44b3a868aa8fd7'); -INSERT INTO blocks VALUES(310102,'11e25883fd0479b78ddb1953ef67e3c3d1ffc82bd1f9e918a75c2194f7137f99',310102000,NULL,NULL,'b225c48fb4c40b2e0695991251f6d69217df6e00c01613e0a20f6a3e34f50d5b','2f589b56d991d3b5cc11d27390a75c356fe32f9535e569fc08868b25dce8cbff','72a77955e2833742b2a5fc2f96f5fe0390f9da43fc5be9954e5536780c603466'); -INSERT INTO blocks VALUES(310103,'559a208afea6dd27b8bfeb031f1bd8f57182dcab6cf55c4089a6c49fb4744f17',310103000,NULL,NULL,'fc2a8ce8efc122e5cbd631998e611dc8707cfe0b8d3f6a531fe5bcc21c17feae','6503177c07808688b09a59dd91ef980354ad60ffb868cea60150a38fe157275c','ffbf949bbefecfa2f1c174765d07e9e7c821c816e795e370aa7ba30c3ba95443'); -INSERT INTO blocks VALUES(310104,'55b82e631b61d22a8524981ff3b5e3ab4ad7b732b7d1a06191064334b8f2dfd2',310104000,NULL,NULL,'b1a7115902d371d13889008320e52473cd5b34591bd657e372c0048df020012e','b83f85260d4e003f3748c57cf6a159f7d522dc999f67cf03c07ea5d9e591aa76','af2e9b2044aed8eb650fa08122536fe8055bfb496a3a45436d59236f93d5bf4d'); -INSERT INTO blocks VALUES(310105,'1d72cdf6c4a02a5f973e6eaa53c28e9e13014b4f5bb13f91621a911b27fe936a',310105000,NULL,NULL,'b5fcda12415e713fc81278b95515fe86ecc6beb5810e4f80eb9645f09870dab0','db1a4e55872858bacea65004a4fbeae225a7e1e0f02478093d087ddf6a7fa5df','2988173d827f7e27873410d4bd6406db72821ed295aac4f9665c1d080f025c41'); -INSERT INTO blocks VALUES(310106,'9d39cbe8c8a5357fc56e5c2f95bf132382ddad14cbc8abd54e549d58248140ff',310106000,NULL,NULL,'f3c98c954cf939951d8b24a257bc6b1bc152a6a0bcf6b580ac281c26bbf16499','58b8847fab58f8816c541cd5a53140b0d7094fff2a7016e9a00a05e872f488a5','bca154ed275df33b4c5c93ccda4eaa9d5e39039de94b76fa712008dc01085e14'); -INSERT INTO blocks VALUES(310107,'51cc04005e49fa49e661946a0e147240b0e5aac174252c96481ab7ddd5487435',310107000,NULL,NULL,'a550df26b8dee075bee82fc59c44ce5cbf65fe9df10c60f3f3009faa2791c783','67aa51c5a5ccaa239273a7f9b4fdeca11126f6e30e6d5ffc99d9431328778cb0','3df5fd222e7fda201e4cbaa99f321b2a73073e6e6b83dc9c4e03c21a8275ca0b'); -INSERT INTO blocks VALUES(310108,'8f2d3861aa42f8e75dc14a23d6046bd89feef0d81996b6e1adc2a2828fbc8b34',310108000,NULL,NULL,'e1d8c345c74760010223a823895471d3ad6a2db5c6a70b13850d5cd977414518','916b7cf50fc15ae71c69acf1b707466233c009b174a388ca4472f99d86d4125e','1d768e5024783de603e65a16b7541c877ca33602ab03833dc09c014bfe08aa7e'); -INSERT INTO blocks VALUES(310109,'d23aaaae55e6a912eaaa8d20fe2a9ad4819fe9dc1ed58977265af58fad89d8f9',310109000,NULL,NULL,'8fb63d8460a222163d15eab76a61e383ffa251a175c16f209648d6782c304059','0e478fd6db789d1e5823cf2579146d751f6326c5aafc387f0ab5fe622f1475e3','915a2ef99e5bea2a33502186395f25e9b192db26286a338a754e9791c700ddc5'); -INSERT INTO blocks VALUES(310110,'cecc8e4791bd3081995bd9fd67acb6b97415facfd2b68f926a70b22d9a258382',310110000,NULL,NULL,'250f7b5c6f00bf06c9cd4de8dea0b8166e2decf093910ea32eabd615b910e7e6','e3bd0a71047fad1dc1c56827c57b7fb1dec6c0f1eb9c23634ca4df6defbf98e2','cc0e45bbef2909163212395ee4d3c61bd2e9a05ee28dfe36314c968c7f637eec'); -INSERT INTO blocks VALUES(310111,'fde71b9756d5ba0b6d8b230ee885af01f9c4461a55dbde8678279166a21b20ae',310111000,NULL,NULL,'0c3c3d099bf08803f67c2a77d0d67779674d1063cc72d8794b8fe62a55049d75','9d461b8540a7534c81f03a0dbe70a8392b226d63c1a15501c01230f5b2e8811a','9f1d6fc87a91539c9be4651668432a57713237fc5ff68ea5f661348c97eed17e'); -INSERT INTO blocks VALUES(310112,'5b06f69bfdde1083785cf68ebc2211b464839033c30a099d3227b490bf3ab251',310112000,NULL,NULL,'557fdd1240793f8607a2b4c638ce800d5260c2adb294aac95d6c5eab7e98c3a9','e11c4c5e10029301ebc6c9929be683f27e64a0a298c488b560aa7e43ce6d8349','c5c7974c8cf89a1823c26c48ca792796299196bb68b9e524518aaf0ea469e9f8'); -INSERT INTO blocks VALUES(310113,'63914cf376d3076b697b9234810dfc084ed5a885d5cd188dd5462560da25d5e7',310113000,NULL,NULL,'4ecad4a5c8e9b54101c4a037d6c86a7eb36d3cf0503e60a1bf13c5a4196c5989','5bea44b1b28d1b9dc3f425c32ee0e53cd157abc13cb6ee898bbbeb1c3a0d22b0','e0489426d8ad4dab9ca2e8a499d0a4f42fd46df50c9932a1617a5ca1a8416919'); -INSERT INTO blocks VALUES(310114,'24fc2dded4f811eff58b32cda85d90fb5773e81b9267e9a03c359bc730d82283',310114000,NULL,NULL,'00380ec3118a5e8f9cab403d10870dd5bc339421297fcb6196a3112d70541ecd','e98f8185a9984845185d7913c54f83c2f53dffb5a36fe8e57946fd2b1915214d','e29b262eab52345ac279f91379846327f1dcb504992b97435531858f67e65ccc'); -INSERT INTO blocks VALUES(310115,'a632d67ff5f832fe9c3c675f855f08a4969c6d78c0211e71b2a24fe04be5656a',310115000,NULL,NULL,'0acd3a07c5df54e883ff9871852c961b00771d3f4afccb3b1941d0b1c7b300cc','a17e953f19623e68808846a06938f285e0749e2d0987569f6e2aa972848a1455','1fd06fc360a1bfee4db6caa7695560bbd32ceaff1853d30ea24b9f929958f5ac'); -INSERT INTO blocks VALUES(310116,'8495ba36b331473c4f3529681a118a4cc4fa4d51cd9b8dccb1f13e5ef841dd84',310116000,NULL,NULL,'6c6845d3be70cbe9a71c33227983f695c96877aac6d3a8d6a6839760b4691d25','d9df2bf35b1c7ae44a8691d15bf40b9256030d62b8b81e1efdbe9ea78d20569c','f5fb1aee9bd68aaa6f9682b497bac2015c081f23cc666bbcec87eccd5e736584'); -INSERT INTO blocks VALUES(310117,'978a3eac44917b82d009332797e2b6fe64c7ce313c0f15bfd9b7bb68e4f35a71',310117000,NULL,NULL,'0465a90ff545d58e69c07c204160360bcc6fba5cc60fb81d7e6e389d9ff8133e','49244964fe400b26274e945fe10a4920c4e89d6aa7e456a914c34bfb91752e86','fb176fb88140d5ad1f20dceb6b6b232374eb9a1cf8fe43d8f1e4088b88daab3b'); -INSERT INTO blocks VALUES(310118,'02487d8bd4dadabd06a44fdeb67616e6830c3556ec10faad40a42416039f4723',310118000,NULL,NULL,'011ed3df8ae72a02b686e98aa8db07c973e1e12c2ac09891ba90d783ae63161f','b92d8d98ce77b6e8fdd9a83ffe4acf536a914de64317e0c1f12083f5ef75787e','4ecfa8564500a1c5a0fd3b613da2c504e19bf92833624cdbc25790470d871a4f'); -INSERT INTO blocks VALUES(310119,'6d6be3478c874c27f5d354c9375884089511b1aaaa3cc3421759d8e3aaeb5481',310119000,NULL,NULL,'a6620b1b6a5b1f54fe6a8076fc35f0f3ce15315e9f549f5ff3fa0f5b6094919f','d6081506030f43ad7775be58a4a51ca6ca213873d116e32d42122e55713ffc99','328e7e9255ae45e1ee648940b9a94fb9093e9481a3adad5f07991ce1979effc0'); -INSERT INTO blocks VALUES(310120,'2bba7fd459ea76fe54d6d7faf437c31af8253438d5685e803c71484c53887deb',310120000,NULL,NULL,'e38e2aa0bf8831b90e69b40c78d4b7d41bc564527451b5f9b332bb0beb54c923','9e97e48c1396b69ed4f8281d20290918999832084f2430b138d0a3f27b697f60','b8f539d26edc746686797592ccc043f453382f6b9e27002e8bda5449b0442189'); -INSERT INTO blocks VALUES(310121,'9b3ea991d6c2fe58906bdc75ba6a2095dcb7f00cfdd6108ac75c938f93c94ee7',310121000,NULL,NULL,'5b988c8ad133bb5ff5ac1ee4ad0a6a4fd431247db373e43c9be2a020520f438b','a539cc4e31218e8ded53c91949db977b5e3f342cc1f0d2007462e7c7207acffe','aa32e729a2e45f77d192db5d878ad3acbce868ec2059c349120b53db7f046181'); -INSERT INTO blocks VALUES(310122,'d31b927c46e8f9ba2ccfb02f11a72179e08474bdd1b60dd3dcfd2e91a9ea2932',310122000,NULL,NULL,'70ddab8f1d6283ce5a054650dbcd02d7ad4ca9c35de7bed920c2f266bc092070','289e85276870a4437ef0ca299b3d01ef7105ddcce17cac0d4f842e43e1dad1c6','49a2be78882dc63c4451b4466b5aa0135b07491c078429aa02624f31d2a2d1ed'); -INSERT INTO blocks VALUES(310123,'be6d35019a923fcef1125a27387d27237755c136f4926c5eddbf150402ea2bbd',310123000,NULL,NULL,'3670feebcf979edce175ad5b296a4c88fd7fc6bdc251dda84d487b1b092e41dd','719e4fe7306e1f3992fcc6f7e655908dee1bdd4d736f2fc9b5d8432cf8e4321b','d5d880840e7e39dc08fa54454c3357a32e55ee655138ba5f337b1d3449083eee'); -INSERT INTO blocks VALUES(310124,'0984b4a908f1a7dac9dcd94da1ee451e367cc6f3216ee8cdee15eae5d0700810',310124000,NULL,NULL,'9883fff318e7cf9021fb4cc39261840f682e8adabb934549dbae2a10d2a71de3','bc4b7b60aebff2f8a6f0a90a3ddf1ae825b75cdc67cbec5ad697679dfc9798a5','cfc038baf2c16a2b69e057380d6d1e26b4cb87670606f07c1047110e1a0a0c03'); -INSERT INTO blocks VALUES(310125,'cc28d39365904b2f91276d09fae040adb1bbbfd4d37d8c329fced276dc52c6a6',310125000,NULL,NULL,'1840685242f9090297d4b432e305e4a093f90faa0b673953b648fbed948f31b6','fffc4ade708201ef1db941d52fb286edb95dc52d743b923db8a6e4b67345165e','c397b204931280cd0918c3cb934a583fe58c25fe462ac831f2465233cabcaf82'); -INSERT INTO blocks VALUES(310126,'c9d6c2bd3eeb87f3f1033a13de8255a56445341c920a6a0ee2fb030877106797',310126000,NULL,NULL,'1a83f417c18439cd3c6269626c44b480317290f0c27a9b9f883a01653de69272','e4de345ff05c685bb356a80c6e35f518a57d276d0cbbf3124af91b0684ce13c5','16bdaf9c2ebe478ec0525dc853a99bda624e1712e9105968f846aad6b291abf4'); -INSERT INTO blocks VALUES(310127,'c952f369e2b3317725b4b73ba1922b84af881bd59054be94406a5d9bbb106904',310127000,NULL,NULL,'094c53dfd00b5004d074987dba90a6c9c47841d01041d0aeb61923c48315d1bb','cda853e5e9079908e0bcc224c564324d89adf44ec628ee23c83e417b07298f84','72acf1d16a41dd69961d1b5b528a29fb2abb5e4aa25e8d8b743513a3d6822260'); -INSERT INTO blocks VALUES(310128,'990b0d3575caf5909286b9701ece586338067fbd35357fec7d6a54c6a6120079',310128000,NULL,NULL,'28ad1365daaadc866e79b6b1a555fa31bd804a85827d958cebb9d29511f78e19','1e514d834d1e4bc046a7ec8aec390eda0dba89e7668aaff1c397fdb536f3b362','59e3d59cb72f2791974492e1dec06b1dc31b004cb834512c434af0176e1a5111'); -INSERT INTO blocks VALUES(310129,'fa8a7d674a9a3e4b40053cf3b819385a71831eec2f119a0f0640c6870ca1dddc',310129000,NULL,NULL,'61587f9b5d05f8f553f0a4f580f38a140edcf7d9facb13c542865f5ec586a32c','36d4aa6383577e62add0ea6b720b19450cfdc30a4dc04715a4db6a8dfb877d79','fd1089b4fad88df4cf00f7c6ef195552dd630089a941b6fa9b789596e98c2810'); -INSERT INTO blocks VALUES(310130,'d3046e8e8ab77a67bf0629a3bab0bea4975631d52099d2ddc9c9fa0860522721',310130000,NULL,NULL,'1ee8c39657890ac946e2aac5409147cdbf1b0004db1f00d997cf45452596f781','47cda5297a15edb54398f98247b216c1346ad77acba914e958d79bd20116bd95','8f19f2a664e6e081dde908082b53d283d36737432f829c304d7a64dc2cdc0dcd'); -INSERT INTO blocks VALUES(310131,'d6b4357496bc2c42b58a7d1260a3615bfdb86e2ce68cd20914ef3dd3c0cdd34d',310131000,NULL,NULL,'aee45272e68725a2746582f1847582eb9808289d3deca144f8c6cb43bc4f42e6','9360404f33baaf439d8fa6bb56fe74a3c287ff4001f323d2f2258eb7ec6464bb','ca8eb34aeecb84c9c5c8843346bb1aaa6711c4648f19304fcbbb8ff52f06b2cb'); -INSERT INTO blocks VALUES(310132,'1b95a691bf4abf92f0dde901e1152cc5bd87a792d4b42613655e4046a57ab818',310132000,NULL,NULL,'a3fe51c1d168ed726a78b72db61175f2abb07ea6c614b2886f3054cdd1a858fe','92dae5047f6334e996fb687bd0ac1da3d1e982cb41b7c95398bda95190e0ec49','5e70c803f25fb73e4c9f506f73f9c0c02f7d0cc38cbef6ae410222fe262936d9'); -INSERT INTO blocks VALUES(310133,'1029c14051faabf90641371a82f9e2352eaa3d6b1da66737fcf447568ca4ec51',310133000,NULL,NULL,'626743e51b462163f23f22079d672379def21382fd88f9155ddd453ca3d633ef','e9fd8e2c5568a19be6da28a85a02756d8c5bec47c3e4efe46102030aaacc0e51','901cd70d5cb4cb85a54d6610182754e9e8e5ca6e162b71183f55e618f3ca976e'); -INSERT INTO blocks VALUES(310134,'1748478069b32162affa59105257d81ef9d78aee27c626e7b24d11beb2831398',310134000,NULL,NULL,'4b6e3202cae46fa80222e3ddec001213062ab76b8848eaaf4ab73f44bd84ac55','e17ad23b1408fdcb3963a28849f2bdc7ae3b37a18eed76d3d1ac4702601537c6','8495860ce2170ac73e448ade2430d4d5ce9510662d0b09befb8483de07c612de'); -INSERT INTO blocks VALUES(310135,'d128d3469b1a5f8fb43e64b40f8a394945d1eb2f19ccbac2603f7044a4097e4f',310135000,NULL,NULL,'e32784cedeadac39bb292da2c5eaffc983f416e0bf387978691e4c0fa5b1715a','0dd53dee532d924741c92a72dafbe91e15acfa49c3171c76a7a13d76230d9086','e3a6983c3bb4356a1d9505dd39561f973aeaf933ff2f98083e64e16144433175'); -INSERT INTO blocks VALUES(310136,'6ec490aaffe2c222a9d6876a18d1c3d385c742ff4c12d1334613a54042a543a5',310136000,NULL,NULL,'93c67fdabd991708d1e35dabbdf7acb4e928763eeb817b32a79cd0bdb414fd2a','64acc571fbb0d14272f97b8fa24706ddd6744260c143ac8b5626cfe6b67687a1','ce042f1a1d6065576d9c88b86ab7e56b4578516a24f8a94a60579e2b75e2df21'); -INSERT INTO blocks VALUES(310137,'7b44f07e233498303a57e5350f366b767809f1a3426d57b1b754dc16aba76900',310137000,NULL,NULL,'8a43d01155ba47b8b1311c41d5a57112198857701c2970d0fd373da04ef4e585','b53ebec2b854b66f60c4a993945195d93f39f71277be95a51b3dc05b8b1ee18b','46636f1ad9a4e7513ec9a2b015e3722c304177e5338b6885e0deb11a8ead75f9'); -INSERT INTO blocks VALUES(310138,'d2d658ccbf9baa89c32659e8b6c25b640af4b9b2f28f9d40baae840206402ab5',310138000,NULL,NULL,'4acf0244f3188f60152acc8ca30dcaeadf12e6669b15377c81b7e6dc3c8892b6','ab8a4c24ca358ca1b1da99a067daf3b276aa072cccc1ae153a224936b18c5f83','93df73667d3ecec5c0275212202b8178fd4b772b20bf8b1c684f2e377b5b4f14'); -INSERT INTO blocks VALUES(310139,'b2c6fb61f2ae0b9d75d18fce4c52a53b1d24772b1ad66c51ca51090210527d46',310139000,NULL,NULL,'2d77bdd47ed1b3be1c2edf41473bd5eb707d06dab33717b01c4a227f9855d73d','9156034707c7440a6c56018a7b5a35eae96713c3fa2142cbd9634565ffd5af22','140b91d18e589aa35ccd5b3a9a69235ba709e3e2db447732f598b873d18de19a'); -INSERT INTO blocks VALUES(310140,'edddddea90e07a466298219fd7f5a88975f1213289f7c434ed47152af6b68ebb',310140000,NULL,NULL,'277c0c6dd1c505dc6f9a222c737296396569d8e007c4b9a42582f108e90fa624','c882d908b84409f2effd43a438ae5c7f8b1f89479c89af32b5e5dcdcf9697d33','7c578cc443ed679012e29855f19398eb90dbbb80c6c113817874acd8789447d4'); -INSERT INTO blocks VALUES(310141,'b5b71d2a271bd638561c56f4ffbe94d6086debaaa86bfeb02ef0d71339310709',310141000,NULL,NULL,'f5d0edff3f22b2e025c884b7c738abe641bca9110a6b9a7b90de179fd6e5d2dc','8eae733fe82a61b93305afac29cffef82249a3776f6676b5b2bbfb240822ba44','4fc1008c35647460be162b1c4cca5d1933b3dd6f7953f171368e96b813faf48c'); -INSERT INTO blocks VALUES(310142,'a98ae174c41ab8fc575d9c8d53d8e02d8e446b8c6c0d98a20ff234eba082b143',310142000,NULL,NULL,'a9f00ec826a30e66820ab2920cf9573244a24dacd63d48c080b9e80b1c5e05b7','c422a01a0cc18a533cf42a05d83ead2783fd31bbfaf1767f6686a07ebd5eae9b','faeca60433573160d16eac8379e15f17a4cc33a4606d978f009b99f0b55c5c4d'); -INSERT INTO blocks VALUES(310143,'8ba2f7feb302a5f9ec3e8c7fc718b02379df4698f6387d00858005b8f01e062f',310143000,NULL,NULL,'b5765899f770fdb6cf1120535d85826c6b0ae44b16b8d5a619c5cd12c98783ea','191b8a6d58c089b2e889766a20a4d01f500c648241f96846f71ad1db748a39a9','726095104fbf7128f0f93c5503605050c43ca41e0637b15f2b644cc6fe0d9c01'); -INSERT INTO blocks VALUES(310144,'879ffa05ae6b24b236591c1f1537909179ed1245a27c5fdadd2218ab2193cdb9',310144000,NULL,NULL,'1a80f48136e5938b33f817a7cc1cb60aaf6d628b7811abd43e38cc807a18072a','238296aaa498d3c8bc112aa634275e18e4afdb17d46776b1ab563eef3ee9963a','bccd2431fc732000b37e336b2baabe93b97700e448c4d3b15f4c8d6423e78b84'); -INSERT INTO blocks VALUES(310145,'175449ef0aa4580593ad4a7d0c5a9b117e1549ea772af00caa4ccdc9b1bf7a6e',310145000,NULL,NULL,'fce2f084c1776fcb36b3ae3e0c952893934e24672ffa0d3dac72bb1278af8264','1d51eae9728b9100682ba7624af1a3666afbbe9f17c2f08a6b9d524ac2927b46','70ea4827763bbca4e44ec69087d2aa0ee2915fc7ba979db26bf8095b00fe1038'); -INSERT INTO blocks VALUES(310146,'e954ab6a110455d745503f7cc8df9d92c1a800fafdd151e7b1912830a9cb7184',310146000,NULL,NULL,'9a98eb971580a0a69fceafc5fd41f398f1908b626c47df57965d1863e9a24b84','8d25f726f189adfec68d15cf2fb2304aa30034d1b897095e7a640bbe82065818','584890e5f4c2ca4b701e7b0bf8309ee0a5cd471c5e05a59fc580084eb408834e'); -INSERT INTO blocks VALUES(310147,'7650c95eba7bf1cad81575ed12f32a8cc36281a6f41bef13afe1dfc1b03a7e83',310147000,NULL,NULL,'336a89d3d137810d3220d2de432f72e3b3ccd2ada2b746da3859c77dbb89d6a3','c529b8f4384fc9a4057b0b61de98b72f074715ec64aec0fc23fada2c878d170c','2d790c9567704a753e7bfdc6f396c10ecfbd8aafa0dbf46560fa1d082fd9429d'); -INSERT INTO blocks VALUES(310148,'77c29785877724be924f965215eb50ffe916e3b6b3a2beaea3e3ae4796545a7e',310148000,NULL,NULL,'f904794337dd67d356981d2623b8c3d1d78ba584cd98a8c1db939951d3102612','c72a91ec0b580ee15a1c1d0205c0633e7a46b95f6aff7338f5aad16132b149ff','ef3157bc81b6325ab25af9a34c6bcbf52b96cf254ccfeda35cda75f2d813f3a2'); -INSERT INTO blocks VALUES(310149,'526b3c4a74c2663fc04ed5234c86974bffddb7235c8736d76860778c30207b3c',310149000,NULL,NULL,'c2972fbd048790f54d9ecef4e18aedec8ae7aa28227d1d43bd19cd71b4feff85','1b550c4c4f7ee35d7e32fafb4fb77bb081b5cbc2903f3de5a7bccfda1c5e5c33','7dbaea6e496bf5d86631a07e1ebfa2d76816889fca9a4b9f0db3e1d7a8ff725a'); -INSERT INTO blocks VALUES(310150,'cdd141f7463967dbeb78bf69dc1cd8e12489f58c4ea0a5dc9c5c01ec4fcea333',310150000,NULL,NULL,'88b999e4ae34386b826b0f3b315953b5eeda8d9ef496af051498bfce6d8737fc','15619d5374a2d26c1343c44acdfa66e6baba73bc1f01ef715a17c6e3812f81d1','8ed5241c98ee19446c978dca2d228cb34877b213d6e47b894522438b7d59fb37'); -INSERT INTO blocks VALUES(310151,'a0f31cc6e12ec86e65e999e806ab3bfa18f4f1084e4aeb4fbd699b4fe284b330',310151000,NULL,NULL,'b7c176a2eff86655f8b0b71cc8bd3bab3a92ba203d4ccd911d63f3d2ce7fdc25','1a497ed2cc8e2aeba59750bfc4413f653b9392f4147d432512beafe0023141a2','6c90f9a4c15a5ed76a7706983f15c15fca9e1261a542db6a516ddff887537ad4'); -INSERT INTO blocks VALUES(310152,'89c8cc3a0938c63a35e89d039aa84318a0fc4e13afac6beb849ac37140132c67',310152000,NULL,NULL,'3f9471c393bc2bf144b17a5febea88c42982ae746fd700a5903c0e6e541e2b09','cbf06ace5a8715ca030f6d4835bcf41b47b9f2e8dd14ddc358f25575d3442281','4aa103224fdc49cd25b89e8ac68afc01b3a2071d8e7ec9d60ff4a6e8974611bf'); -INSERT INTO blocks VALUES(310153,'d1121dfa68f4a1de4f97c123d2d2a41a102971a44b34927a78cd539ad8dca482',310153000,NULL,NULL,'c6bc81e7b7e6758bbbfe10fa0e688b09e679fb74a18134639e172c18c6e017a7','48536be2fde4290927ccd5fb91fa59bebbc9209ce47a878e11d1e4c4adb62189','7ca3d7f2c6f187514e8fb232f31e1015a59c10b813852b2be08a7efcd9910687'); -INSERT INTO blocks VALUES(310154,'ba982ea2e99d3bc5f574897c85485f89430ae38cf4ab49b7716ed466afa506d6',310154000,NULL,NULL,'b3e07f9de85ab67e88042b1bb52302c6eb16b7ff45d5be6a49700f115ed396d4','eb1db12be0bb913a56d21c80ce0461a5f0468591469a2de95974f55f2d2aa197','ed9ab1b8937e287cc1186062360ed6a4e75837e5c89885c31e9da50dc3b8a5da'); -INSERT INTO blocks VALUES(310155,'cefb3b87c7b75a0eb8f062a0cde8e1073774ae035d176e9769fc87071c12d137',310155000,NULL,NULL,'27014841a468e23bcb70c718919745eadcded4310031a7be90a4732c96509404','6c49c35e501269d4c6738dd2624ba92c2e6696a9e9c1ca7a77a92c57734d93a9','a2575c50fea0d2e62363dced3565c543c035a434d8c7ce524e9948b9ceea5d3e'); -INSERT INTO blocks VALUES(310156,'6e3811e65cb02434f9fde0445a7a2b03fe796041458737d0afcc52208f988a83',310156000,NULL,NULL,'5597aaadb8cc75848219f9fde3f5d76bb5592689c72068db59922732e89eef9d','2478b8d4e5d43e0e79b4b4852da7be50767bc10a7bb56830c83878015e72408a','19949c34a4ac98bff24bd175ee867e57cc41330ce8d111deedfe28cfebc28434'); -INSERT INTO blocks VALUES(310157,'51dd192502fe797c55287b04c403cc63c087020a01c974a565dd4038db82f94a',310157000,NULL,NULL,'cc1ae27fef286424e40204f6b575e9e079e1f7a5ccf6cc356729a7c4a7f83eb8','edb1a3abf4a491156c16eb7a05bcddd3847fb0a248ac416285173853630adff4','b41ba71d905ac8da61c39db4ca1f775c7358df7232cdd1c3d83817e1bb253aa5'); -INSERT INTO blocks VALUES(310158,'749395af0c3221b8652d31b4c4410c19b10404d941c7e78d765b865f853559d2',310158000,NULL,NULL,'6d80d98e778b30c124b0255b3e72620f432245d0f841f6bd62a0fcff44843bf0','176df3ecb3cd79a459d4efaacb7a6849fed1b9210255f89fdc9c5f65d8512acf','df926ada83b2abdac2e23052dce4c572c7068f7d2621c7c95df0e738b011edff'); -INSERT INTO blocks VALUES(310159,'fc0e9f7b6ae99080bc41625588cef73b59c8a9f7a21d7f9f1bf96192ba631c12',310159000,NULL,NULL,'d8ab8bb14092afea6cc675d2f50891318e3169bf9dbe2d07e80c4db95f0f2033','21ddf629e505ce7e673aca4d1d3044e84f58c93d0894b631e26dc160d4eceb70','94a4ce2d2b7b85efd1bc1b12f76538a3f580cf6189139affdbc416a7bf4de032'); -INSERT INTO blocks VALUES(310160,'163a82beeba44b4cb83a31764047880455a94a03e859dc050da782ed89c5fa8b',310160000,NULL,NULL,'2d76a042d062b73b7dd956d5cff0ee397f068c04eae6cf5b9522d3d55e88cee9','6d02d8ce522aa2820ca0e3f491c294c5bfc182cc856ca8fd0476ce417c6fde57','4ad9c790717e236238e5ea772300258eea0f0af5a44d4a9f919c8accf4f3ddff'); -INSERT INTO blocks VALUES(310161,'609c983d412a23c693e666abdea3f672e256674bf9ee55df89b5d9777c9264d8',310161000,NULL,NULL,'beb3496742415027bcc0d59f3385809523c8783cd91a5670f2fb6fec3230e980','7ab8ff9d061cad9447edb016950df40217bcb2b6157e9d12f80f7edc732230db','8423151b04f173809c069326ce7e1ca24ffb5f4ea870388d76158fda65a8f3e5'); -INSERT INTO blocks VALUES(310162,'043e9645e019f0b6a019d54c5fef5eebee8ce2da1273a21283c517da126fc804',310162000,NULL,NULL,'066a2b93df863300741145cd6a4f1a9ea616bc787861cb8ab809f59d47a6fa1f','82b576cf11dc04712d54c116fdb8c332a84bbc20165633d62d69ab5c4851667b','ed0cc54172f00bae83578b7ceb114faa0918209fe6e4c1855560760ee2a443c0'); -INSERT INTO blocks VALUES(310163,'959e0a858a81922d2edf84d1fbb49d7c7e897a8f49f70bd5b066744b77836353',310163000,NULL,NULL,'460c271269ccdd8775925b511705207baed8fc212caa7e74fc08a80be600a38a','34d5b4512dd28171454260b321541a0abd66bfd37b74889f4d91ebf0c5a44a0e','3061f829b038356a41f5ae6eb87c8dd7aa9985ed395b36446ef5ba82039b38f9'); -INSERT INTO blocks VALUES(310164,'781b7188be61c98d864d75954cf412b2a181364cc1046de45266ccc8cdb730e2',310164000,NULL,NULL,'19a7948cd1bc4a89a427d48bb01330dadff848e2b32ec8b8abe342872850b268','e7b82bea0d4cc756b8dfbc9e0c01affc0e26a0d3d4c5c129ce31393011a96578','bff20ad27118901a059f37be8204648eed4d3e589df88b36239c29c8963f0db4'); -INSERT INTO blocks VALUES(310165,'a75081e4143fa95d4aa29618fea17fc3fabd85e84059cc45c96a73473fc32599',310165000,NULL,NULL,'97f0a48a26daf011a8c7b22bb772228a0c8a920eccd011e713956100c9fbdf33','275157ef5be5bd2ee74c97964fec858499e9fdd588f48e08364c22a6e7fbc124','567372284db2f476bdf2d9528a1c49d530023a8246078efcdfc4a637e0075cf5'); -INSERT INTO blocks VALUES(310166,'a440d426adaa83fa9bb7e3d4a04b4fa06e896fc2813f5966941f1ad1f28cfb41',310166000,NULL,NULL,'edbd00e1229c673f4f15b3ac7bbe020f54b5f3a61b1d158658471076a55c77b0','34f0b82762c791251332b8a8533b2fd0294a269320a98d262ea847cc84395414','cb33aa8d2d3fa245a4f2274add6d070c22d474662617fc40e2a031d330009d4d'); -INSERT INTO blocks VALUES(310167,'ab4293dbea81fedacca1a0d5230fe85a230afc9490d895aa6963acc216125f66',310167000,NULL,NULL,'e118e0f3aad5be73080f4d1892517e8fd2c4575589ccdfadf980edebb9a66a14','fcb92b27e70c3f4e4fa9e040be42f4402880dc94cdcbe8ec70abc7edcb35ab9a','60db3125515daec542fc00fc51e21e0868636ad8d08b167a56a16bd347a19e11'); -INSERT INTO blocks VALUES(310168,'a12b36a88c2b0ed41f1419a29cc118fae4ecd2f70003de77848bf4a9b2b72dc9',310168000,NULL,NULL,'267f48eb4e3b0925f4f472d8ce6ec57ec5039911b13a14ff2884a41a9cafd7b1','745a42af3c334ea144d0161ba4cb9fa0ec3b1b82e767ff4092a1247d1aa50dc8','298b3be2a774c1dff90fd86b8d7f05664ef80f7853e368e1c614b638075c80f3'); -INSERT INTO blocks VALUES(310169,'204809a85ead8ba63f981fc1db8ae95afe92015f003eaebbec166021867421f3',310169000,NULL,NULL,'df394a6f3b2a9b9dded6019dce9f3d3214db1f30019faffbdc2ce614f629b25a','04ea4e32a3123d4840c9387e019ff6f536b0523f9f4b16292f7fb3d640c358b2','ab9c92a8e0fc8dfdb162e9bce6f060d2e9132633ab6730c737179ed7ad7ea0d9'); -INSERT INTO blocks VALUES(310170,'b38b0345a20a367dfe854e455e5752f63ac2d9be8de33eab264a29e87f94d119',310170000,NULL,NULL,'3081081c2ab6d8280ef721c5836d0fb7e89eb3d747a4e4522d2e22f5a6b153a2','745e599039410380cb5a39a30629e6661e28b676cb8e0b84bc3915480715e52d','002ed39b725f2fb67de7558c57f2b2a12c0914aaeaba1c1a2a42a43581b18961'); -INSERT INTO blocks VALUES(310171,'b8ba5ae8d97900ce37dd451e8c6d8b3a0e2664bb1c103bf697355bf3b1de2d2d',310171000,NULL,NULL,'e6a4017e4f7d9da50bb3817990c3e115d5035443de8824dc01b5380a5b4c52a9','5605874ed07ec2b79fdc11ce7a1b2d4f19cb9403639745d9584cfb831c6dbfb3','4122ac3f74f2d45ce2b03c7ff9f99780fac545dc02a1373e740de44849ac415f'); -INSERT INTO blocks VALUES(310172,'b17fda199c609ab4cc2d85194dd53fa51ba960212f3964a9d2fe2cfe0bb57055',310172000,NULL,NULL,'89e90622bf8363bcee5cd7ab6d48b6d06ce4cbd067f9985e35e67fc683f4c103','defbe55d64068742e020a78c7d2e880a9ca407257b4d6c17b4b5b40e84122817','d376f3798b3c34ee0c75fe0935dc6a7ddb23a3592453731c3ec1b9474d5569ca'); -INSERT INTO blocks VALUES(310173,'f2dcdc5ffc0aca2e71e6e0466391b388870229398a1f3c57dec646b806a65016',310173000,NULL,NULL,'35ceee6a23757fa49e7f5c34ccf0fd034731e95d564257b443ebfdee7cd294d3','b8bf1ccb1f769f0559a5b8a39899d42af61cf8e7aa5680c6b905186769f337f8','87e07f244eafc35e5fe0263c14d4a428407df88ad540e6513d8364fe320cf7c2'); -INSERT INTO blocks VALUES(310174,'fa6f46af9e3664353a473f6fffce56fa295e07985018bface8141b4bf7924679',310174000,NULL,NULL,'101dedf34bc0788c0589c8e2b1d7da4ec65f6eab2e3c5523c0903db685cab017','57ac656234cdbb7b8d0ab2fc6ac1dac7429b875763529fe13885ff18d09d860f','0132e704cc731c090d54145c08da360ead1dc44fe2109218dda60078305b7f25'); -INSERT INTO blocks VALUES(310175,'f71e79fe5f03c3bc7f1360febc5d8f79fc2768ce0ff1872cf27a829b49017333',310175000,NULL,NULL,'67de4a0a9e52d9ae06caf62b3412d0bf2c10a6b24716210b21212d75be75ad6c','6aad646d6dd3808448bae6b5c00306ceb52a1142498782a553aeda89b24524e5','c77844e3a197eab8dbd46e0fa48693a2dda0cc587ff5a6b8d51c727aa2b9f492'); -INSERT INTO blocks VALUES(310176,'67cd1d81f2998f615602346065e37f9ceb8916abb74b5762ead317d5e26453c6',310176000,NULL,NULL,'a90bd400e15727fada1a27be4a6e228bd91a15f0dbd0fb7de3b6779a8bf89e4c','828af1eea222edfccd87d4900ea966b3c2620539fb60b7fbd3ec80be9ceb4e64','a24ec011b66eb8bd39e73e32288b444d00283a1464a41cdf46206d2ad6de5717'); -INSERT INTO blocks VALUES(310177,'6856b1971121b91c907aaf7aed286648a6074f0bd1f66bd55da2b03116192a52',310177000,NULL,NULL,'bac315d07dee18e27336a46ff3ffeed58aaf8eb1eb702e98a93c06303c937716','467249cab4533ff3a6e5fa6bdb8700f9b275293498b3552b3f8e265f16db0812','54be720630f40e4691b3c589851219b2ec6f7623dcc473b832c28a8915a1ff9b'); -INSERT INTO blocks VALUES(310178,'8094fdc6e549c4fab18c62e4a9be5583990c4167721a7e72f46eaf1e4e04d816',310178000,NULL,NULL,'186ea0ece84d21ee21889ff13c98959dfc1842063a970e0c095552f0ca86515e','924d040441e2225191576f9c2128acbe5305c99be573a9d485b12bed48680d8d','178e1095944c3ffe6141aaf054ce7882f4f36f7557012f20080fca6a395bc4dd'); -INSERT INTO blocks VALUES(310179,'d1528027cd25a1530cdc32c4eaff3751a851c947ddc748d99a7d3026a5e581a7',310179000,NULL,NULL,'0200402ef08256efa0adc85b2b4b15fb7448b5107b65fafbcc7985d809e84bc8','aa7a59be2b3b601aa0d71f8bf495a224b85e6605db20140e80df23f689c8b5c5','7c467e3f14954b7a8f08e59daa1f63628e315b46eb92605d70c3e444f44223ec'); -INSERT INTO blocks VALUES(310180,'f2f401a5e3141a8387aaf9799e8fef92eb0fc68370dae1e27622893406d685c1',310180000,NULL,NULL,'13829eeaf9bdc54f87366e35616c5a57cd836c63db8a9ba7d117d02377ef43e1','8b16f083661945abbdd5f53332c1d746d7f59341c5250586de0627c3595cf83c','22e1d06c5f579ef0e5d10f66a75cbdc8cf1ff3068eae4d44dc99195757559519'); -INSERT INTO blocks VALUES(310181,'bd59318cdba0e511487d1e4e093b146b0f362c875d35ab5251592b3d9fed7145',310181000,NULL,NULL,'81b4d83a623a55019ad720c1bd3ecef100d8ca49deda91b8ba6ffe9802764df7','504d7a96e01b8979349c377018aa9458f920e0cdc3c09c77574b31322d98c854','45fc0ff78a37f8e949e9511689f409d0f7ee4ac3b2ed23b6c73924a60b5553af'); -INSERT INTO blocks VALUES(310182,'a7e66b4671a11af2743889a10b19d4af09ec873e2b8eb36949d710d22e1d768f',310182000,NULL,NULL,'935e40f93195d450b292481aac481f445d2de8786d04d26263f4adc5a348704c','085f3e0df816bc317c724492d0f7d7153323bed3fb7f9a010a8dd399ee63f5c0','80e74bab3649ca3eed365bff23637aa3bebaeb066b77c46d36946bcd44ff514a'); -INSERT INTO blocks VALUES(310183,'85318afb50dc77cf9edfef4d6192f7203415e93be43f19b15ca53e170b0477bb',310183000,NULL,NULL,'268bf841be40615472bf4c60b5306d0763ed50510fbb55c47a6a0ac726e8701f','ca50c66c749bd315695b553eb725a9e6a3c29a399ae5b6ffe5c36cb8f0b13929','4345c59a312a79db3ea32f7e89f1741bb3d35e31faf47c591319b189209dcc01'); -INSERT INTO blocks VALUES(310184,'042a898e29c2ebf0fdbb4156d29d9ba1a5935e7ed707928cb21824c76dd53bfc',310184000,NULL,NULL,'64323488ca4d32a1f548842db4ac772b750599ce6222020ef6149b4a0e54a935','8be1b5d80d01d3d9a8dc2479e007d577fc8263b3d368f59332560f9534412cdc','7f7f00c9bed612d025b672440d9f912d31c4d0d957894ab92313511a03bb1b7e'); -INSERT INTO blocks VALUES(310185,'bd78c092ae353c78798482830c007aac1be07e9bc8e52855f620a3d48f46811f',310185000,NULL,NULL,'8946baadef2e19c5e4e4b2d771b36982a217486dcb0f95097b41ce633e61da94','5320b91cf7dcb4b2d00517a8ec48fbad80f47bc3a94ae1cdf2f781d18ba0487a','087a446c8832fcf3071bbbdd00c3e2c7444f6e5a708fdd93d5b73180a5c009cd'); -INSERT INTO blocks VALUES(310186,'e30a3a92cc2e5ad0133e5cee1f789a1a28bea620974f9ab8fa663da53e5bf707',310186000,NULL,NULL,'e68b5525927cfee15fefee02a16fd700abf6b6e7b4e32e57df7d324fae7ae090','435ec84f55f3ace25ac9dc8bd68731aaf513e4a1559643b887477c77b9eeece7','8a428471b03627c8ca73e6763b2d5fe477d55aa622b0b52a8580d711cfcb6f1e'); -INSERT INTO blocks VALUES(310187,'fc6402c86b66b6e953d23ed33d149faa0988fa90aa9f7434e2863e33da2f3414',310187000,NULL,NULL,'c42efa24d48339fc341908a30c6679beeadc9f5918d8d3e62d5c4b06fec845d5','ac2e855154f8dc9a3dab36cde207e068a859e74d80f075ecfc50447912877b77','61c41dd99e9fdbe5706241d4ed9b4bfcbc8d5539a4f90e59994fc2b954cd5315'); -INSERT INTO blocks VALUES(310188,'85694a80e534a53d921b5d2c6b789b747aa73bf5556b91eeed2df148e2ada917',310188000,NULL,NULL,'13de1d9b569d5d2525ecfa39b1eda69f9fd474683b6e34554b1a755125e96e5d','e94a22ff07f51b5f1dbc17441d7dc5829b425da07e7eebbc3c938ba887d86b03','1ac542686e183bf0e4d21b76fa56eb5c7103290f52e74d9258f581786eac42f5'); -INSERT INTO blocks VALUES(310189,'7c036dadf19348348edbe0abe84861f03370415ed2fec991b9374dbb0ca19a06',310189000,NULL,NULL,'582b8b3d3a226d3f6df497cb933ed5f42e1e992c0c25372ec15de424c0a33368','99a1d51ff7da680d24bfd24bf998e2f9477bcdac8509c03efa568b0467686965','4baca04e0b50d8c095495be5a1d04499e4741eff53abafffeeabec2eb762714c'); -INSERT INTO blocks VALUES(310190,'d6ef65299fb9dfc165284015ff2b23804ffef0b5c8baf6e5fa631211a2edbd8d',310190000,NULL,NULL,'d4c49d5e3aaf21e6fe1c30663d0ba93f7dc9ddb03611e3751fba9aac8d382ac4','93da4438e95dde255baac5c79b60367b6fa7c05054baa7f3133e84792e852cd6','a0b54dd015451a01e54d39528d586389d30c64a672700a8be549254241fe79d9'); -INSERT INTO blocks VALUES(310191,'5987ffecb8d4a70887a7ce2b7acb9a326f176cca3ccf270f6040219590329139',310191000,NULL,NULL,'23d340ff3f1979a43bd1336c9c882b5ee01c646cd104060feacdb5db78025cca','ad2b30b320539a7481a80ea9369da1f195f331eda182debe42b95c01e9040918','f662bd58da25a722f9a609e0817ff7e4c2d2161531c734b2e58fe59e42372a6b'); -INSERT INTO blocks VALUES(310192,'31b7be43784f8cc2ce7bc982d29a48ff93ef95ba18f82380881c901c50cd0caa',310192000,NULL,NULL,'cd18860851bceba4a0174480ccdc0f6ddc47b31ce71af8ec8500cb07f75d9da9','22e2e9469407cfe99b237ef286855a39425010d911e22e1c27e5194913d35cfd','16878d2ddfbbd4e68d6ad6871bde82789cae6a2297fdbfe2e8476a1f6cdc9690'); -INSERT INTO blocks VALUES(310193,'ff3bb9c107f3a6e138440dee2d60c65e342dfbf216e1872c7cdb45f2a4d8852a',310193000,NULL,NULL,'391e97ae7ccf5bc38ac72e7ad1256f24c28297c625bd9a789cba8231a5ade046','20dea13947f79c456cb7cd502972c4c75a7922a4e6aa9625146387f14a8f5134','88567ce42ff8db6e7380eec2991c91e5725f07bf0f7c61862c99fde454c49527'); -INSERT INTO blocks VALUES(310194,'d1d8f8c242a06005f59d3c4f85983f1fa5d5edcc65eb48e7b75ed7165558434a',310194000,NULL,NULL,'9141c9b38087c7cf2b8c11ffd55c2eabcb3bb09f132ac0baf9c3779f628dd42b','b2f8c6473a9379b9774295fae95a3b78e1ab797d179d917eb79b3f1b3fde1039','c19db95dc5b2432d116687af741641dae826eb8b26e820507d10a01c78212d90'); -INSERT INTO blocks VALUES(310195,'0b2f1f57c9a7546faac835cbe43243473fa6533b6e4d8bf8d13b8e3c710faf53',310195000,NULL,NULL,'705918f002db29e7b3dfbfd6378f79d53e33c6ffa3948b2e3b5c85f85009bbde','5a6dd936af8d8997bd30c50d7bffe8bed84c5c514bceeec9daeb8e0509f6d10c','933249665d32c2473a0327f96c75e0a7de19b4a777555b756d7e865538f51b92'); -INSERT INTO blocks VALUES(310196,'280e7f4c9d1457e116b27f6fc2b806d3787002fe285826e468e07f4a0e3bd2e6',310196000,NULL,NULL,'59e12df19e3c0e3e23a5d1e9783c75e236a000774a038553312919a0f46b8227','ff8875a240b0ab841c617e6e48de0ec2d9f8440ac3d7aaacd607e958c0d230dc','a0485cf4624ede1e15e6226329d08d7509299e21b6e7ab99cae1d5699fa732df'); -INSERT INTO blocks VALUES(310197,'68de4c7fd020395a407ef59ea267412bbd2f19b0a654f09c0dafbc7c9ada4467',310197000,NULL,NULL,'a0e1817dfc258180fa1629710ff3b6026181a9042fecd2c8b0b5e38118199e07','6af3be2ab53be33ef79488f2a0c2f75648b23c5d904e49102be884115e06db74','787664684e2039db2351a2c68cc345ba49dbd7a585c8c2d3224815d91d2b0085'); -INSERT INTO blocks VALUES(310198,'30340d4b655879e82543773117d72017a546630ceac29f591d514f37dd5b1cc2',310198000,NULL,NULL,'ff51bfc670b1387bfce53781750e35a3bf69d907167cf9cf57e15613cc0ff3b2','036ebfc7d0728ee8710155267b5aea33728cd55143cd35c064bb538eaed48857','d7646b391ba9f6d604dfc0cb26735b299147148d78e79ea3d725b0d035af696d'); -INSERT INTO blocks VALUES(310199,'494ebe4ce57d53dc0f51e1281f7e335c7315a6a064e982c3852b7179052a4613',310199000,NULL,NULL,'e5f8f8f00de32f0d8d2b62eba27218edcee77563960fe074da5ae86bf5b553f1','00eba7581bcab946056e3fbecf81ad6afc6e44d406153004f2bdc3d9461d0fa9','fc87528891adef10785f36e95d15d4d8511175a8554c02b989a65241c0850e9d'); -INSERT INTO blocks VALUES(310200,'d5169d7b23c44e02a5322e91039ccc7959b558608cf164328cd63dbaf9c81a03',310200000,NULL,NULL,'fd8fb664576868d4f1c843b28efc7ee028417034a33d6f5635238bd13c701b2a','cfba4733a2f79e144111125e162b659eac864ce487e6f293e9320bb488b3992c','b3c869dd3aed5ce2cc274108aac7655db5fb70bab8381b0aa93d2b9e926ba7ec'); -INSERT INTO blocks VALUES(310201,'8842bf23ded504bb28765128c0097e1de47d135f01c5cf47680b3bcf5720ad95',310201000,NULL,NULL,'7e2dbbf14c0620ac0fd4e0e676857e2d055fff80cadfe2d9d0dfe07d36738722','ee6a6849124448d915856966e35ce7a92c124e277e5fd2c7b0690831843a6bd6','1e48b8e4b150384475446823c2a5fe67848cef0afd5d425fcb6b912ea7ff247b'); -INSERT INTO blocks VALUES(310202,'95fa18eecbc0905377a70b3ccd48636528d5131ccfa0126ed4639bc60d0003d8',310202000,NULL,NULL,'084c24e81842ec8edc4144ad64df9f12377318fe4dc491b307b7d377f3f81b2b','c8c7964a3acd407abe62cdb3fa5a03cf4076bb5ad4801980667cd8019a8551fe','ddadc9398dc871f1a788c9db13bb1979d189035ec2d54127fbad6bf3be83d745'); -INSERT INTO blocks VALUES(310203,'ab15c43e5ac0b9d4bd7da5a14b8030b55b83d5d1855d9174364adbebf42432f8',310203000,NULL,NULL,'4b0b8d82a5a2c8600a09b1050eed4440d9e0f2d817498f3e32ba27ebcfbaf6d5','920cbda4b550b9592b113d0ae78ddf28d4779eebecc7cfcd8c47ca34688ba8eb','f1958cce9860342f448d2245c7bb3397cea961664f139c449ef2c15f478764a8'); -INSERT INTO blocks VALUES(310204,'18996fb47d68e7f4ae140dc1eb80df3e5aba513a344a949fd7c3b4f7cd4d64cb',310204000,NULL,NULL,'9f81657142f7523c01595bef4e9008d8525c2337f6d90140e05abad619d94416','eb40b10c530f040a21ad23cbaac905907443a864313dd02e0228798aaa1660d9','0acbb99cf78de14a12521438252350e96e2e49067331bf74c7d6579bb356d18f'); -INSERT INTO blocks VALUES(310205,'5363526ff34a35e018d1a18544ad865352a9abf4c801c50aa55742e71630c13a',310205000,NULL,NULL,'fd1cdea0193ed914cc408968efa42377d7c69453aa9bdf8bdf0731d4b1501b01','e45c4b2efb3256deb8ce0e508ac79b7005e478f6d086247790455e2fbb239571','6dedb3cbcf5e44aa3646b2690aa6d632d6d052217d81461d1356d1ce1ca21f61'); -INSERT INTO blocks VALUES(310206,'0615d9fca5bdf694dca2b255fb9e9256f316aa6b8a9fc700aa63e769189b0518',310206000,NULL,NULL,'5845d6bedf81fba710999bf2954b3c1f3f9ca007a09d812ccae8e2a6d3b9bb07','dbfe96e6d95cb01a1fa151f9c4e231c4820a5f63b339c74d88322dff564be52e','521f3027ab5ebd7d9c36855a81ea291c3b532b4b78739fcb852d14fc9f176f57'); -INSERT INTO blocks VALUES(310207,'533b4ece95c58d080f958b3982cbd4d964e95f789d0beffe4dd3c67c50f62585',310207000,NULL,NULL,'b65cf7069a0eb909357cd5d45129b70c576eeabc0cb13404029d088e24a2be34','9fdde2b66902bdce68123c5390b8ab74678e025ba1326e41f2cccf89dd9507c7','b70d3713a4f6acf7bb5a2bda392e815cdc468e53d66cf25ee5a8dded05c8cd14'); -INSERT INTO blocks VALUES(310208,'26c1535b00852aec245bac47ad0167b3fa76f6e661fc96534b1c5e7fdc752f44',310208000,NULL,NULL,'aa54dc010fec8a0ef3871c91667c45e88ffac08ee2fc93274d7ad1b2b5b28102','bac0eb847e5a1ff514ff633f1a2b7482377321027adc4fcff75ed0da13cba1ff','e8b22d6df00e3dc4c57af6cce24df339bf0b9998381867694b8b356c89629889'); -INSERT INTO blocks VALUES(310209,'23827b94762c64225d218fa3070a3ea1efce392e3a47a1663d894b8ff8a429bf',310209000,NULL,NULL,'c7866cb2098c87c1333da5b3dce4c84bdeb620c9f1898456b7cceb23e4027df0','86efd2166ad3a0485327aa745b175e9e790ad354c43875c33f7728deaa0ad073','77a930a234125af8a8f08bc4d5a574e2e20b8c9457f4feed3ed4799f294f3190'); -INSERT INTO blocks VALUES(310210,'70b24078df58ecc8f7370b73229d39e52bbadcf539814deccb98948ebd86ccc0',310210000,NULL,NULL,'207a1c90d1658d55fa0fc2e1507fce98521647ab5c4d11099c2742279cc92b3f','2e435839dff2e2ef4654b558d8b304bda1ebb2d479f7ddba63672b5c7f2da8a3','6834935f73b4051b4bcd76b50e818d0633b12e036afe6987bb58756b6c7d0518'); -INSERT INTO blocks VALUES(310211,'4acb44225e022e23c7fdea483db5b1f2e04069431a29c682604fe97d270c926d',310211000,NULL,NULL,'dfc7fe172f9bc77148a1bfad5d441a3688f718b4985406d0cefd4c4dcd926208','acfb695f137e20d7451165c5c664f0a1aa16f62db51ca4d132631908103ea97a','80f4e8463734adb23e8f53dcdf30066cc9c925a1f25ceb979042f671242c5cba'); -INSERT INTO blocks VALUES(310212,'6ef5229ec6ea926e99bf4467b0ed49d444eedb652cc792d2b8968b1e9f3b0547',310212000,NULL,NULL,'32a39bff0606ec93454a2cb144c0bbd1939bf2be6a2ae369b885afc0b5ef33c9','7821aabdca20f884169d340e62827e874442b2db200d30ba57d75bac66715c58','462bcdf6a677fa7cd31148eb45072bb4d23c5fadc5ca6ed00d6cb62260a27c3d'); -INSERT INTO blocks VALUES(310213,'17673a8aeff01a8cdc80528df2bd87cdd4a748fcb36d44f3a6d221a6cbddcbe7',310213000,NULL,NULL,'15968873880e97e849e59971d4ef19881b1c11c3148dba966f51d986c59ccf36','44e22a6d77ab0dbba76861de822c69ab946c5f1aeaf08e50d2e169cc1fdb6082','71c56909fe2ad9291fd82f271f56d3f7d2d3d50c42d536dfd0cbb004022e94a4'); -INSERT INTO blocks VALUES(310214,'4393b639990f6f7cd47b56da62c3470dcbb31ef37094b76f53829fc12d313454',310214000,NULL,NULL,'dcbdc463154fe49a7f22611fcb53e5ca78501424ba741040d89cac9db0a03ac4','fbfbacda7e679a2fb6e8d28b3c3de565bc9cbf8c3fa4d7fc4c9ed71a6ec9ebde','b9588c5d0170060e50602e960d2c4bfd0e7c543e3e25359d6f2a179e6a788d1d'); -INSERT INTO blocks VALUES(310215,'c26253deaf7e8df5d62b158ea4290fc9e92a4a689dadc36915650679743a74c7',310215000,NULL,NULL,'6047855f1c691f27ade1cc4c587f1c11ff68f5f5bd7959a23f801e5da7773eed','0d41ac1fec3eebddbfce292035d47997d2c3ada0a7286c3e5193e2737e6ec63d','ebf55d65638b8b962281e0c104ae1335cf06095fbe8374dd87288c0a372e307c'); -INSERT INTO blocks VALUES(310216,'6b77673d16911635a36fe55575d26d58cda818916ef008415fa58076eb15b524',310216000,NULL,NULL,'a12fbb09858868de79095c8e3222f6fa179f2f00bc3c97c8205fd9367ae05aef','13fb950cbbb4310c23f7cc8b21a09cd6a5c29dc8c0b254985d8ae77d36d187da','bf5a325bb23a70a4f9e69a46e948aba25e6423b4723a17c11aff02fdf91131ca'); -INSERT INTO blocks VALUES(310217,'0e09244f49225d1115a2a0382365b5728adbf04f997067ea17df89e84f9c13a8',310217000,NULL,NULL,'419d8dc096dd58523cd4822748754158f0c11945bbb62100cb5268cd802580a8','555677592a003ae66ea83a8dea9f33ea7bcfd9dcbc0f036863ad17f200ccbe1b','53db41a61542b6e5382027cd84da12f3e9c9fbd3dea8a1a55ad45aa5847d2ec7'); -INSERT INTO blocks VALUES(310218,'3eb26381d8c93399926bb83c146847bfe0b69024220cb145fe6601f6dda957d9',310218000,NULL,NULL,'a36c07f7fdfaf7878d73baf14aee58b42220b2b2411fd1864450ec6ce1fbd173','46f03a93ea4bb4cc731d7bb6e1295d087e326b5e03012b068de59ab5b5673aef','66d5530aca9532f592bf9b72629bba5fa3e8b9f044197f2f08c6edf497a18d4f'); -INSERT INTO blocks VALUES(310219,'60da40e38967aadf08696641d44ee5372586b884929974e1cbd5c347dc5befbf',310219000,NULL,NULL,'7958aa94088ecf0384a9a6b0569e9507d208e009e9ce139c823960e40996a47e','7e18a7a69dc5d085b872a594d9b5a3e58d971031da9312e1f89bc9e20f530023','46450578b51f0fd0dac7f7f510c206ebecf3395489909df1c368c10cf562a94b'); -INSERT INTO blocks VALUES(310220,'d78c428ac4d622ab4b4554aa87aeee013d58f428422b35b0ba0f736d491392ef',310220000,NULL,NULL,'00907c4368c2dc76d1ef98a0ba3c86bc4746ed2734b0c10f3797e0af70714240','8d452de611c5cbbd05f46fc272ef88dbbe8a4ba27e1b68b70ff0a32731514865','6dc70b8da94c5d31eef564d159c611ca19c1e990fb565ce2e3ed7a83403ce6b5'); -INSERT INTO blocks VALUES(310221,'cf5263e382afd268e6059b28dc5862285632efe8d36ba218930765e633d48f2d',310221000,NULL,NULL,'2e42f882087dc2158036592298321113f1b34e15b414efa6d43364c06d368540','c0764e91cde6b8ecfc32c78029bdd31e07798c0cee4e43985ab95312704b28de','2e80f10efb82f14735093addb3cd0f67a6b7076a88ff06019d8754fb24e31a54'); -INSERT INTO blocks VALUES(310222,'1519f6ec801bf490282065f5299d631be6553af4b0883df344e7f7e5f49c4993',310222000,NULL,NULL,'00c4a5d41dd629bd0973c03152e4519214dce68498999c8dddc1f7a1cad28a82','8e0fd98d24143d2616c2712cbdd1ce8eb5a982f6d8b9031c8d554f16f909e270','ef638800d3dcc4b81283fb396f17114f7b0e1b1f850673c3b246699838fc95bc'); -INSERT INTO blocks VALUES(310223,'af208e2029fa49c19aa4770e582e32e0802d0baac463b00393a7a668fa2ea047',310223000,NULL,NULL,'41c7a0fa22ebee9d55f2a3b118314293d155c349ba01069a23ddff76dc842955','20c8e7f20e664b9ab3373b6864f5cbecd44b50984082568942e8c22b3d8840a1','4a31eba029872983ac266498d70a6b089242ab635c3564f2d3857b753bd2d117'); -INSERT INTO blocks VALUES(310224,'5b57815583a5333b14beb50b4a35aeb108375492ee452feeeeb7c4a96cfd6e4c',310224000,NULL,NULL,'66c268462442b69efb56b29e08aae1a404d3543e0a20711e8998a31af45ee929','60c09bf705da5081c224c1cb35b023dd592e6089ba2773eaa99106a07a079852','6386a62e824ac85815ad6de0cf959a8fecbca6cd15d5d027f4021a6f75362a46'); -INSERT INTO blocks VALUES(310225,'0c2992fc10b2ce8d6d08e018397d366c94231d3a05953e79f2db00605c82e41c',310225000,NULL,NULL,'cf39fb28a7e4d4db7657bb11a30d592a15c049000d7ac86d4fb3d942bf879b95','0dc940206b542c2f5dd7858fae25bbe8f0e518ebb9e55a7e9465a6a1a9bc1325','b7dcdc52966c33878a63c4ab7cccd70b98e53cfdcfcace909019a962d7ec1df7'); -INSERT INTO blocks VALUES(310226,'b3f6cd212aee8c17ae964536852e7a53c69433bef01e212425a5e99ec0b7e1cb',310226000,NULL,NULL,'cb622a4d04645ad96d3e0006f2b7632e8b82e44206d6c1cb75212b059fe18de5','8a9a76c298a11dc06d27fe662af1b57a44163b86b3be4dedaa498d16f6328ca1','9a0d0296cc67a2f3b9550b09bc561d6c92591748d94641964f21ff43d0ae874e'); -INSERT INTO blocks VALUES(310227,'ea8386e130dd4e84669dc8b2ef5f4818e2f5f35403f2dc1696dba072af2bc552',310227000,NULL,NULL,'60ae4209347248a3f7ad39b6436627f06e45433f6b6dd89cfd3383d68974a41c','fa8f11878138553eb50f659bda2407521eace7ec269e9486b586560a80cc2193','9d186dedeb2dfc72a9219d1249c53a9e13af5f6449aba21ce4ff6acd6bed5865'); -INSERT INTO blocks VALUES(310228,'8ab465399d5feb5b7933f3e55539a2f53495277dd0780b7bf15f9338560efc7b',310228000,NULL,NULL,'798206ee77c9e2fc8fe943f9bf2074c9c2560f534e3304b944e2ed3c89ce8bcb','c00812756c426c75f0e0f366269d092c2bc846e08376b79005b15a1bb9e78fa9','0900c04039407ff312efc0fb927e6253f3dcf706cdcfc259f362e12d0ec9fe58'); -INSERT INTO blocks VALUES(310229,'d0ccca58f131c8a12ef375dc70951c3aa79c638b4c4d371c7f720c9c784f3297',310229000,NULL,NULL,'becad39a4d1bc8d73a856fa1d2bfa251f29b23fec9448a91932dc610243fd8df','fc92f5ddd944d8a77a398bf367ce1cdb43174d1e68d5a68bcbfa8e5ee3134919','8cafee2771a36286e86ba932f7525b5854ff7b4183a0dfe97a823510434ed97c'); -INSERT INTO blocks VALUES(310230,'f126b9318ad8e2d5812d3703ce083a43e179775615b03bd379dae5db46362f35',310230000,NULL,NULL,'e08eac4daa7d7bc70f2f47a835bb80993d6d6db06d8d8986101b717db1c62ed6','fef4471af3bc26e1158c08c5ed797acd56c46dc46fd483308f29a7c7c6b2964c','19c5a6e00ce4ba4df771dcf6482914ceec23254e3c0a10e5ce6d9bad26134bca'); -INSERT INTO blocks VALUES(310231,'8667a5b933b6a43dab53858e76e4b9f24c3ac83d3f10b97bb20fde902abd4ceb',310231000,NULL,NULL,'a761c29e76c9d5090cd1d6424beb91d0a9fd9546c67ecaa6d4879177b6745b59','252cd82cdba94f894e6156fe7b2df6ffce2b3101c3ebfc631105c9ab6f0b5cd7','70941d85dcfe0c728948113a18bee41e63e70a3a08be4176fa8ccaf8d724bbcc'); -INSERT INTO blocks VALUES(310232,'813813cec50fd01b6d28277785f9e0ae81f3f0ca4cdee9c4a4415d3719c294e8',310232000,NULL,NULL,'5da469b7e21ad8ec4fe7cc2f426dcaeb18a3a4a3c44385d529a8b252c77a9e43','50414a7e78301d09f948577e325da12debe6d281a94cf018a1537e7f9cf3bd98','e702c73b1378042cae52f202ff96f515abf61ce2de502f15ea85a7c1128e0dbd'); -INSERT INTO blocks VALUES(310233,'79a443f726c2a7464817deb2c737a264c10488cac02c001fd1a4d1a76de411d6',310233000,NULL,NULL,'d8531834d572acc01591997cac000185facc033e1ab72f8218a70d0ae3898914','26e226c8ffa76a441641b4b1962f5b57170bba7030485b74f377078ccda8b6f9','4b48d1eef1138ef202612c7e014e70822c29dd44dc7e2ddb87ca790158209f06'); -INSERT INTO blocks VALUES(310234,'662e70a85ddc71d3feae92864315e63c2e1be0db715bb5d8432c21a0c14a63cd',310234000,NULL,NULL,'0ac6803ab61e14bb08fd8051424565086ab11b4d33faef077f5a0732eec6f766','08e241646a783a9e18d827432a894583a07807df74f5d600263c596fac723c7b','ac75082e99d82270a1cdd7fdeb392632a2a73315fbf733387e43880ec8c4c6e7'); -INSERT INTO blocks VALUES(310235,'66915fa9ef2878c38eaf21c50df95d87669f63b40da7bdf30e3c72c6b1fba38e',310235000,NULL,NULL,'5f7de1c7fe45858dcc844604a77051d55de3b9dbb5f5d9910ead8bd0f3af48d8','b990d6f05c1278784e9fafe494076eb586edfe9d1ab2e5b4b55b20cd666008d7','eebaa09225e48780d4bde2061931b957e25d2c2d57363b713b85d7352a48a32c'); -INSERT INTO blocks VALUES(310236,'d47fadd733c145ad1a3f4b00e03016697ad6e83b15bd6a781589a3a574de23e4',310236000,NULL,NULL,'c0437ca60921bb73516c31a74f78d2fb48d2c628b629c8f55c8fbb0060718d76','500f5b7c186a6ce208fddc6254be0ee23d984076522340508b91549a7044faf9','f0fd4e90d27089939a9b18ed6d2feac18bd60134b3f3d719f1fceb8fc3005cf5'); -INSERT INTO blocks VALUES(310237,'2561400b16b93cfbb1eaba0f10dfaa1b06d70d9a4d560639d1bcc7759e012095',310237000,NULL,NULL,'4340ab34a083b38dbca477b6cc2479e6d70ffd6d6b9b75772068674297abadff','89b41b7f353c3c0fa4f0fb3688e26999f0524c840ff3f4c8c56357e94164468a','209e86fc2b75aab0bd40e379789952af2a8742106adf88e8f75cc341c25809f1'); -INSERT INTO blocks VALUES(310238,'43420903497d2735dc3077f4d4a2227c29e6fc2fa1c8fd5d55e7ba88782d3d55',310238000,NULL,NULL,'6a76891c10ff0f9416ae1a024b985d621154918bd8ab545980b57fd2d18c4af7','83e241eb37d1944ee7c3ab834e6e2ab869ca9071b4e92fdb53429d63b60e57f0','871574096955d3aa05a3eb4e43c43ab345caaf0b1a551190b0d0828fe23e591c'); -INSERT INTO blocks VALUES(310239,'065efefe89eadd92ef1d12b092fd891690da79eec79f96b969fbaa9166cd6ef1',310239000,NULL,NULL,'1128bb89562fc3b112da425a3dee67adaf741a8021ee378bdfeb44af3b1b1fac','299b307f4ee4aa77f3426a849f9b13a979338334a9d05deb1c4ae6fa850ad162','153f8b6f6e004cdbb0619c64000222188cd534c4da7554e06a657184888e4e91'); -INSERT INTO blocks VALUES(310240,'50aac88bb1fa76530134b6826a6cc0d056b0f4c784f86744aae3cfc487eeeb26',310240000,NULL,NULL,'be05624b84b2e76794f065f36b4e98d6c6c120f1d8a5db91957bbe7008ce3240','b4ff46e3241c842548bdf79e3f93d6da4f2fe75121782991f80d85eebff555dd','81ba23fb8a04a63d217379d85c7ea90672d49a0195b7ccc178a3652eb3f4eec7'); -INSERT INTO blocks VALUES(310241,'792d50a3f8c22ddafe63fa3ba9a0a39dd0e358ba4e2ebcd853ca12941e85bee4',310241000,NULL,NULL,'5abfdfb1aa42fb80ca4538062d152d965b6a7a56bd1e170a7a109409a4606b7a','a529c97092936f518725ac97d8a9e540a8af2a7e95d87cc3b3368d2c02fdd3c3','b717142be677d3e507b748ddf515732e97092180c9ce7ebab0e4d999f9eb2e49'); -INSERT INTO blocks VALUES(310242,'85dda4f2d80069b72728c9e6af187e79f486254666604137533cbfe216c5ea93',310242000,NULL,NULL,'5f354f767df3256aa6a23544a7164160b9fabe481c85d1891f5250b3026dd7b8','944b30e4a44dd7b388af15e1ffa91d8ffa868952a24daf3c6f18199902bba3b7','4f68f360ab289c38f9a4b59beeb8f2e11d943885a0d584d550d9e6d4e635568d'); -INSERT INTO blocks VALUES(310243,'a1f51c9370b0c1171b5be282b5b4892000d8e932d5d41963e28e5d55436ba1bd',310243000,NULL,NULL,'ea3acc31b3c298237fa11ca4400c65ee46732c96e0b7fac5a183dd49d938e730','d9c5c3a72b52724ce850c291a0e218c4026d454173c2961c316c681b87418232','9dd5490e2c51479f0940ef13270d99b0dbe19c44de31d4c91f77e529dd62d315'); -INSERT INTO blocks VALUES(310244,'46e98809a8af5158ede4dfaa5949f5be35578712d59a9f4f1de995a6342c58df',310244000,NULL,NULL,'07ad792741a48d5a7b657e6c4dc83e3534c79bd1e7da7044139516124adc8f80','d525a5eb01479d697439dc75b7781bcb84b9abec0c5a552e65e76c0729bfe724','636d8ae99426f79816da31296594788f54021ee8d5094eefd351ed85ccfe8d5d'); -INSERT INTO blocks VALUES(310245,'59f634832088aced78462dd164efd7081148062a63fd5b669af422f4fb55b7ae',310245000,NULL,NULL,'d36a618af8e92da03b373ab0137ded666db6cef906a6b2c0cb8c71057a1a5903','541f6af498bc3049b6f1a78dab4918c243e60badb57287d8b4c699e10ee02e80','36ed160b7dc1067d36a4e55a9cb594ddcfb4595818a786d2ee9365aecf6e01e3'); -INSERT INTO blocks VALUES(310246,'6f3d690448b1bd04aaf01cd2a8e7016d0618a61088f2b226b442360d02b2e4cd',310246000,NULL,NULL,'a34e154571ee585a839053a851a007d6d433d3efd2b3e923a9c4ec4bb0dc9d98','8e0c2e59342079b813902eb97ed83a18424a5aef5bf1a0f0a3323ec16d20c7b9','2fd9d6b579b83d7a2f07d3872a51624d5115503e689d3c631114b5657f96abdb'); -INSERT INTO blocks VALUES(310247,'fce808e867645071dc8c198bc9a3757536948b972292f743b1e14d2d8283ed66',310247000,NULL,NULL,'ee94fcb9210718095ccdf63f30ab081f45dff765a9ca4f5c86b1b0d98973ef90','671d4da503c7e0eea10b14ea1723edb7038a06a5fd2dc757b6700f3dc5261ca7','35f1452a3aa27141815cf677bc04f1e209fd344aec43fd20774cebfda2069e3b'); -INSERT INTO blocks VALUES(310248,'26c05bbcfef8bcd00d0967e804903d340c337b9d9f3a3e3e5a9773363c3e9275',310248000,NULL,NULL,'029884a5273466fa45cdfbd91ae3aaca50af0771d22f6b55af6367348c2802e2','3760ff4aac40f27b8bcff8b97a35528d32c2f233a7aab5970c2933715abe997d','d4ddb653e81f5bebd3e91ebfcff363872f1db98598e0feea0cc0fb70a8d5b4e9'); -INSERT INTO blocks VALUES(310249,'93f5a32167b07030d75400af321ca5009a2cf9fce0e97ea763b92593b8133617',310249000,NULL,NULL,'dc10674812c5249c693ab7b148d048439a0d77266014f3afc1810a6260838f02','5d5cecdde941b651dc38c8a4d13569b89e7be231937eba9dc234b872b8ad2d28','328c2dc203d3950a44764a60b6fab33d4ed4bf15f2e7437d8f2a499a49877fe3'); -INSERT INTO blocks VALUES(310250,'4364d780ef6a5e11c1bf2e36374e848dbbd8d041cde763f9a2f3b85f5bb017a2',310250000,NULL,NULL,'a0fd49b46ff0000e83d4c56281dfe2be1bbfc924c75969726754b05bf7107641','81c10f4d6526cbc84325d75359fecf40498ab8f5926ae94162cc831d754d3e9b','2db654a11248d1266e4ad594b90262a5e6159df55dd1f8ad211fd8013053c0ac'); -INSERT INTO blocks VALUES(310251,'63a3897d988330d59b8876ff13aa9eac968de3807f1800b343bd246571f0dca7',310251000,NULL,NULL,'bdef6a6203d28d314dc087e539a9cdad19d123b605824f0a66f13bf5f72de9b8','b40d9a7675154043fe1265452cc55ea0d5458d5693af61534efdda85064b15af','6c56adfbeb82b1dceb9bd08b300f498b0de733c7edd3728329c4db925817e199'); -INSERT INTO blocks VALUES(310252,'768d65dfb67d6b976279cbfcf5927bb082fad08037bc0c72127fab0ebab7bc43',310252000,NULL,NULL,'8da11bec0d58b196ddb073d3aba0def98f01f83da654765fcae21cae6046214e','0452530f6f6cff63f3780c0a542f07a158b28b5f184d5525b1a4671860e0ce9f','ab2bdeb2c9163658a7c8dbd627959228fade34a8d924e93f831c25908f920c72'); -INSERT INTO blocks VALUES(310253,'bc167428ff6b39acf39fa56f5ca83db24493d8dd2ada59b02b45f59a176dbe9e',310253000,NULL,NULL,'2efa2c5781899d213741e795ca62fbee9d3ddf53792ce002db7484adc66bfbd4','f89bc1b940222dcb0507c7b70396a5e33fd39647ff363ce1686374a05be83c08','81d719fbc03db2b447430b2fcd5c43953578a4b4bd899df372c5780eda781be8'); -INSERT INTO blocks VALUES(310254,'ebda5a4932d24f6cf250ffbb9232913ae47af84d0f0317c12ae6506c05db26e0',310254000,NULL,NULL,'d062ec468e76421d3769a99eb3c8b2cbf4bf393d109ba13b3bce128613fff547','b8c9232e428003e639975635dac1a4afe06dfc59477fa732d8f769df04ad8f40','e579bcf76dcdd751f44c8726a3ec96a37e8ed381b48e2c74be09c4779ac19bde'); -INSERT INTO blocks VALUES(310255,'cf36803c1789a98e8524f7bcaff084101d4bc98593ef3c9b9ad1a75d2961f8f4',310255000,NULL,NULL,'5c531dc8a7461e9e7a2ead654509d76c9be3427b1d2b75c0ac7ae0e03126c49a','f31d8a5c8bc4721daa2470cc9a9b72456344374ac4c9c2c1ae2094624c115808','f7c396b4115ed8948e54f7e4163e4fa1c5d4e7f380abc3a5ea996a7113c8aff8'); -INSERT INTO blocks VALUES(310256,'d0b4cf4e77cbbaee784767f3c75675ab1bf50e733db73fa337aa20edefdd5619',310256000,NULL,NULL,'8da9f0162e15e33e14e5e1e22c2fd847055a65b99eec519dd069a83bb9006b51','382f4cc9655c9dfef1ca843dfc5f4c3337334d7a11c460fea21dc716e3e1fcda','574ca592fa6c36e37e71418824fa4e4c756f682df60d20a6055f91a228ed896a'); -INSERT INTO blocks VALUES(310257,'0f42e304acaa582130b496647aa41dcb6b76b5700f7c43dd74b8275c35565f34',310257000,NULL,NULL,'0cf6657db5f3145587a466c05f237289b639668d844abfd8d46430c090b54913','6961a1c27a69e9742b451f9030f7556abedb4872c85531d61051b3353264b03c','69fc785aac8b3d6973e1238754e051fd86ee7ef212a8f02f9ed7f3813431c11d'); -INSERT INTO blocks VALUES(310258,'3a0156dd7512738a0a7adba8eeac1815fac224f49312f75b19a36afb744c579f',310258000,NULL,NULL,'e340defe4bd84e788f9c5b083849e6aa1d5c7f33123ebe62d7abe04b8a9e312e','6694aa6cceaab675a8314cec01e384cc5b8b565124ed9fff21e0c821ec2873aa','dcf4bd7f33ca2cf6625534fcce3ae4fa375d11c378081c0100c2753bc6485848'); -INSERT INTO blocks VALUES(310259,'e5ed3cdaaf637dd7aa2a7db134253afe716ffdf153e05672df3159b71f8538a9',310259000,NULL,NULL,'03ca0cbce5a5b50988c19c0d4e754240f50821695dca767d1169f8c7f5c1fdcc','9434d01174ca11c44755f41313155a3c081795dca93d081148eab228a81b10a8','239ef6d02a56f4bb731d518facbfa627bc6c6e037de48bcad52d4c43d3955178'); -INSERT INTO blocks VALUES(310260,'8717ddcc837032ad1dc0bb148ddc0f6a561ed0d483b81abb0c493c5c82ec33cd',310260000,NULL,NULL,'83a3b43e01f4f25ba05b527415baa3e8b8adba319628c245988136bd8fcdfcfe','a0c7cba49596ddd72c6eb73bfcbe12e5373bdf243b5579e2f82ae583bdecb21e','a9c69fc55db8e095f65b71c901b41cde6407956b66e1931ca9905494817dd515'); -INSERT INTO blocks VALUES(310261,'a2a9d8c28ea41df606e81bf99cddb84b593bf5ed1e68743d38d63a7b49a50232',310261000,NULL,NULL,'e61c12005d60870fee947fff469631ee540b1a0d6b8aa67614cfacc0a9f65ec0','c8d09f47831b239c605a01a369f744500b6b307c4bea2a8fb88622a7a5cd28f5','df0bb76e3817edac05432b2a2a051156721c75988bc9eb253504794ab60f0d22'); -INSERT INTO blocks VALUES(310262,'e8ebcee80fbf5afb735db18419a68d61a5ffdde1b3f189e51967155c559ee4ce',310262000,NULL,NULL,'c21ac4906d435af5b9ef5576da6bce454f65ef16099b7ee03219a4ae1851bb91','677c31b60bcafd5ba6b8074e6748cb6c06f73f3ee28c772d31383ed66cc33a38','2e940132584bd01cdeafa14c3bde62f6c534b4074266fe53198eb0d602210767'); -INSERT INTO blocks VALUES(310263,'f5a2d8d77ac9aac8f0c9218eecbb814e4dd0032ec764f15c11407072e037b3c2',310263000,NULL,NULL,'676f6c532ff23839fef228a9fac7719e77a3c20efdc17f3cb2d13035c78820e8','b0be6aad34a21917935fe500b3fb464577eadc1eda164479aeffa02e436c974a','d33e8da30f6e6504e385c94679bf09a1452165a7e9154bc8a38039531b19e9ee'); -INSERT INTO blocks VALUES(310264,'ae968fb818cd631d3e3774d176c24ae6a035de4510b133f0a0dd135dc0ae7416',310264000,NULL,NULL,'258854505b1d3067bf360f3d0dcb369ed7a90fec8744578d3dde51a79db72c25','4fdf4e94a9fe6b8e2192b8c7a4a36edf66660740c66f5b9a35b3dd96d2e39806','a47ce02b96495ebfacb51a2f049a738785aa19a1f782c8ec52f77b7e7b8f8100'); -INSERT INTO blocks VALUES(310265,'41b50a1dfd10119afd4f288c89aad1257b22471a7d2177facb328157ed6346a1',310265000,NULL,NULL,'72ab32c420a7dcac0e7c36c4d9ca81e237955b4d8bc57c87078ba292923ce98d','a9dda90317afda2ea620cbe4819de3f9bff210569112c3b6cc8996672165585d','4246b35b43466b583d21987702842f98f5de9bf1c14e7cf7e010d041a85b8f4b'); -INSERT INTO blocks VALUES(310266,'1c7c8fa2dc51e8f3cecd776435e68c10d0da238032ebba29cbd4e18b6c299431',310266000,NULL,NULL,'b81386d19aac285fee4e39a818cb0442e378372f7d55f92e6028b37f974e4a61','1a509e785b6d0dafeb6cfee2326e9d16b4fe30f9a170120864db6a353a2c8f65','e234c23bdbd32260dd4fa99315d0d6bcef7a92e582567c487253a81dfe3dc796'); -INSERT INTO blocks VALUES(310267,'c0aa0f7d4b7bb6842bf9f86f1ff7f028831ee7e7e2d7e495cc85623e5ad39199',310267000,NULL,NULL,'ea8fef9e82e451d9650777b051f19fe5e34b8976f1bcc1880b6eebe5feda34d5','de674878ebaee83afd74963622284c8bf2965a7f1247eece62fbd4a7a2d0843b','08dc74d0fa3f4a2203ae6fe6855476ac370ce8a4aee00df0653d243d99904ee3'); -INSERT INTO blocks VALUES(310268,'b476840cc1ce090f6cf61d31a01807864e0a18dc117d60793d34df4f748189af',310268000,NULL,NULL,'1545d381812f0f0caa827a237f145838276fe058b05af4808615738ca9910bf1','ab95e245f427175bc61d396bb76468d1e8f827856b96967df5478e932c5bffd5','f53a2fb5af4f9d5656d1863e03455d1b49b33827fa25b41ad6bac074a623b9ab'); -INSERT INTO blocks VALUES(310269,'37460a2ed5ecbad3303fd73e0d9a0b7ba1ab91b552a022d5f300b4da1b14e21e',310269000,NULL,NULL,'fd9cf61ac6e1fba409e4220a141ed6c89c18c893c7a752af53d5f7608bc04a67','bb1e8a2ec818c46170ec24cc22803caf3b49bd18b81a88327b31604f2ff2bf5b','f3a4b5f6a16da684188971f02a8d2623edf6f5885afc5f29865d3e910216a8f2'); -INSERT INTO blocks VALUES(310270,'a534f448972c42450ad7b7a7b91a084cf1e9ad08863107ef5abc2b2b4997395d',310270000,NULL,NULL,'1d34c8c0dfdb4733a7b589647abb0e6a08f8de93a5c86fbab786f6d9d1500785','a968d196bc72bee20d195249c167f27d9baa932f2e87671b5308c7df8ede4ac1','9273fa9e02b0986b4069c686ab6434b9665c7fb3750a50f1b26c62a8bacc0e75'); -INSERT INTO blocks VALUES(310271,'67e6efb2226a2489d4c1d7fd5dd4c38531aca8e3d687062d2274aa5348363b0b',310271000,NULL,NULL,'cf38baabc6e8a082eba1bd8ca2f72af5eb01cb76bd3c9eb101b27080a3a70d17','f85800535d634e2491c0fcb2f1d28d9d54b87755c08c7088d9bd3b1e99bb6ebd','80b5c6ecedc56b5601f666d80595cd2d167da78bcc0790a3f511486d0175f0e4'); -INSERT INTO blocks VALUES(310272,'6015ede3e28e642cbcf60bc8d397d066316935adbce5d27673ea95e8c7b78eea',310272000,NULL,NULL,'2b2763fa5ab2962582c303062da8b8da7280274e615b3e37f93a32e44793ccc8','2d251d9c21523d31487c6bb03806a3c6eacbbd87570d129af0c4eff884c1dfc7','dcfac57087b085286cd70a7d563c4c91b2ccfecf9eecc79c2f98a7e7337c8397'); -INSERT INTO blocks VALUES(310273,'625dad04c47f3f1d7f0794fe98d80122c7621284d0c3cf4a110a2e4f2153c96a',310273000,NULL,NULL,'ff9df73d4f92b7557c36f20d8f622923dda225a1ae2871e60f16ee2dfdf5b9d8','b528024370a366e0c3c17c81a6afd48ed6f8cbc61ef2744b568f82ef97477200','2e0c63d6dbb2467866e4eca7727884c877a13bbe5455d9adca7b63d8263f9a90'); -INSERT INTO blocks VALUES(310274,'925266253df52bed8dc44148f22bbd85648840f83baee19a9c1ab0a4ce8003b6',310274000,NULL,NULL,'ece29ec2cd160d7634009f41cc2d0f13330d53ec6971c019d69dfa4367f86646','a6d1edea52f6adb539fd192f3181851205c00a8656e455b5535251f958c275f4','be0d3a4db36903b026917804b2bd999e42c1e215dae076edc05e4e7ceac253f7'); -INSERT INTO blocks VALUES(310275,'85adc228e31fb99c910e291e36e3c6eafdfd7dcaebf5609a6e017269a6c705c9',310275000,NULL,NULL,'23738d6d8dbf8b44b481f6c0eade991987c84e8025fe1f484c7acd3ead7f4163','78fff0b20c5587e70d21b75cf665e989ec0a8d5366f05f28829540de20a63563','67ff25f210b8dd004f7ed4453a30e59eb5cb286dd7d43ef4cec6608accc183b6'); -INSERT INTO blocks VALUES(310276,'ba172f268e6d1a966075623814c8403796b4eab22ef9885345c7b59ab973cc77',310276000,NULL,NULL,'a241e1cb19bfbebb3bbb09c6471760b8379ddc73a67d69b4d84fd1d21dfb7034','ae4dae5678a9eb2dad1fc170212b2794f0d780614ffc2f464f8e2071d2fd678d','c69332d8bd73073291a273076b93592abf1f5f2c53514f51934c35ea9accf191'); -INSERT INTO blocks VALUES(310277,'c74bd3d505a05204eb020119b72a291a2684f5a849682632e4f24b73e9524f93',310277000,NULL,NULL,'0efa57fd462031a87831832a789ed7751aac5f6c19a23767555b3f7145d87532','3627782e01a5b98f602259395b122945104b3ebae075bbbbf61ea316a197e066','b96d96d7b0544a0d6a26a4808610a5bf5ba2b37cb98527b0d93b11fa504ef9ff'); -INSERT INTO blocks VALUES(310278,'7945512bca68961325e5e1054df4d02ee87a0bc60ac4e1306be3d95479bada05',310278000,NULL,NULL,'0045189a4da126b22e91e4bc2a7ac37dc90ec0869b7fcbc927919fca4cce5259','b2062f330e6762adb9ef0d7b6fbb8ff273c07cb168a240c637f8e30d6465bbd9','eb471bfbc0288d39b7563c1bb2c6b3b1679aad46bc75bc7a3ac9789492e5b872'); -INSERT INTO blocks VALUES(310279,'1a9417f9adc7551b82a8c9e1e79c0639476ed9329e0233e7f0d6499618d04b4f',310279000,NULL,NULL,'442b7d4dee025b81c298ca0f6a5b9dbdf17ed0087fc36eab7f0671d5a19c9a2c','a92bb3cb09b18fbaad350ab86c1bd177348ee26e17ce974506aa2095bf585f11','b94b2eb139d01a1545d9e2f439b9868ebcfbdfedb1248e300b28d7d615c80d61'); -INSERT INTO blocks VALUES(310280,'bf2195835108e32903e4b57c8dd7e25b4d15dd96b4b000d3dbb62f609f800142',310280000,NULL,NULL,'38d7f98ae9cfb8e3938032dc33899e2e3e5a88e9037571cdddf8ed4709fc8225','b01f7b130d6259628a37ccf06e96877bd765f9630fe24eceeec8babe9cfdd404','f06d199a2c5c903b27a4a9ebb10cb5d6f32e7bbf6ce12b639c3499093c9aa64a'); -INSERT INTO blocks VALUES(310281,'4499b9f7e17fc1ecc7dc54c0c77e57f3dc2c9ea55593361acbea0e456be8830f',310281000,NULL,NULL,'51237cee3b85f1636e336259b115fad87acc830c71e13ca79e344efb7c308ecc','7ed1e8e0f98d1928db424e3c70daa2bfec726e0050907043ef948ddcce2dbae0','a04d8bd1583c93515392b907e29886c61e8844be04254d8b2802299cb7264d82'); -INSERT INTO blocks VALUES(310282,'51a29336aa32e5b121b40d4eba0beb0fd337c9f622dacb50372990e5f5134e6f',310282000,NULL,NULL,'73adccef91b5c738e8810d4781a38edf98d2aa0a8cb619d575e9bdeda979f1fb','d0db0c9763ce086889ceb5dfb88740441118eb615fdd293b95f663fb687bd15d','89da82f35abf19c241e638398c17fdb9bf7171f4c19c816229ed31ca9feaf1db'); -INSERT INTO blocks VALUES(310283,'df8565428e67e93a62147b440477386758da778364deb9fd0c81496e0321cf49',310283000,NULL,NULL,'5853e60a1b79d4f154cc1f3dc8b0a4d6130ac07784bac16f257f92b9ef294144','aed0078d64860940972e5714150848649c58fbc61585739ac5562ad3f89dfca9','08bd7c8806463041292b8ef03823fdda5cc91b6547ed043d895f348626068b08'); -INSERT INTO blocks VALUES(310284,'f9d05d83d3fa7bb3f3c79b8c554301d20f12fbb953f82616ac4aad6e6cc0abe7',310284000,NULL,NULL,'ce33194cb67aa0a5facd788cc24706ef249bcecc95a9965f91065146b33e464b','33eebecec55c216d853f9248afb69bc6e70619a559dd2017e85d064ba1326eb4','5ea4816db35fba896cdd530a34959a7a4a26da2de04d8da4f1386e79a339356f'); -INSERT INTO blocks VALUES(310285,'8cef48dbc69cd0a07a5acd4f4190aa199ebce996c47e24ecc44f17de5e3c285a',310285000,NULL,NULL,'3af35e85e98aebe1a9c778570c730bf80e085a08ca707c1a5d44b50f2579e71c','11e628433e5adc3d227312947dd8e8088d8d4d9127abe6fa35393d44b42cd309','d5ab454de6c8d1a5ed5ebc3b05d120c519ac119bf3bbc582a7f3b50110ca8b5e'); -INSERT INTO blocks VALUES(310286,'d4e01fb028cc6f37497f2231ebf6c00125b12e5353e65bdbf5b2ce40691d47d0',310286000,NULL,NULL,'4b09b627adda46ee7cf7116102a330ba2aa1ce714b2fa133f7952af34a52ede9','47aa5c9927cc0b25d06f35dd67e4dcf0d55e2812f9ed1862dd9aa55b9890c54f','39fa1cfc5689c871da27542bcfd629d57eec1581fdc54df6bccd74fd278553e4'); -INSERT INTO blocks VALUES(310287,'a78514aa15a5096e4d4af3755e090390727cfa628168f1d35e8ac1d179fb51f4',310287000,NULL,NULL,'67786e4ffab15cb78c7bb44ef160d1e5d99b599eecb5ff4f906a6599d744d410','67a96eba27ab1066e57770fde0f77a7da3f9c1a80620e5dad5f111923b284ce0','a4f16c95009c0b03c2accae8e049e0a2e4892a16d0214f01b354783f093f7200'); -INSERT INTO blocks VALUES(310288,'2a5c5b3406a944a9ae2615f97064de9af5da07b0258d58c1d6949e95501249e7',310288000,NULL,NULL,'600716d2696160b3ba290636180f2afa24bf8d24435022b4539a4cc965c18dfc','800534bb5717bb82118814e75671d85c069900be76001d12c0d694761fbd8dc7','af0f49c70307b8d6a9f75e5cc6af036981bcabb403e86b77cad35a4b7fae2346'); -INSERT INTO blocks VALUES(310289,'dda3dc28762969f5b068768d52ddf73f04674ffeddb1cc4f6a684961ecca8f75',310289000,NULL,NULL,'cd6d4b17759152edbf25fd72dce9b9126ea31a2bb1a5435636801e0ee4be1158','838de979219e7a5ce3b80f2ad924f3273101f1daf391ccb05f90df2ee7bf0470','a8d6292dc1410a443e1a48285c3fc579def5d83a3924d10c6ea5a3447c2692b5'); -INSERT INTO blocks VALUES(310290,'fe962fe98ce9f3ee1ed1e71dbffce93735d8004e7a9b95804fb456f18501a370',310290000,NULL,NULL,'04a9135f416dc041d3c1c0216a84fd780d133213c3369691fbf5e8848af9d14f','863e66fa35a9222ccf3e960f4d3851874a11c9ed37bd1bb960617dbdf74ea8e6','e204f077197554c5d108ce853131293cc1fc479c2317e46ea8d6e8e4cc02cbe2'); -INSERT INTO blocks VALUES(310291,'1eeb72097fd0bce4c2377160926b25bf8166dfd6e99402570bf506e153e25aa2',310291000,NULL,NULL,'50f556e01b9e8c135b20187bf863839e651a0d0bf4cfd1008b446531776f7917','a575cbc49d31e64b7e0841316af95ec44103856bee8fdc35efb43c06230ceeb4','7c0d06026cc03167c34dce1e8c616980f3f32b67f87238c90b723ff6fa7e4e0c'); -INSERT INTO blocks VALUES(310292,'9c87d12effe7e07dcaf3f71074c0a4f9f8a23c2ed49bf2634dc83e286ba3131d',310292000,NULL,NULL,'9d4bf4b1c5dba1132a9cbfd78c1d94cbaf15d7648da80c8bc1a8dce12a79eac0','a6e16bdde3ca753f34b1a70eb0a8316e8a605f33e74f1a7e3f3a7ea1342a7e9d','08dc01c8c1b8dab7c0f6ab88b290dc5226232879aae6e310fffc5e5177aa2ed1'); -INSERT INTO blocks VALUES(310293,'bc18127444c7aebf0cdc5d9d30a3108b25dd3f29bf28d904176c986fa5433712',310293000,NULL,NULL,'a51a3f9af39175cc9d142eff67811307ad8f51cdd8161aaf0d98af9e2be28efa','efc0e769129e42cfc6682b13a21b675abae1c3fc969b78102bf0d3436f190fa1','525e64fe47957cddf6ebc579a3a14e6b98bb8f22647b0a312c674da29e4acdc3'); -INSERT INTO blocks VALUES(310294,'4d6ee08b06c8a11b88877b941282dc679e83712880591213fb51c2bf1838cd4d',310294000,NULL,NULL,'3e9858caa8e835295aa7e78505ea34ce0726e3f5f6cf9fbc6dc4393a28724a25','be4fcb18e1d24f0768cc5c24b6c13e9b087fca45ab3af31d96a3f10e5bff4231','348c42aaa0200a7c3d6d8beb6f23fb52095c2eee07bf05dafde96d76a944a3f2'); -INSERT INTO blocks VALUES(310295,'66b8b169b98858de4ceefcb4cbf3a89383e72180a86aeb2694d4f3467a654a53',310295000,NULL,NULL,'bf48715799c46d629641ba5b72405f6e6cf0500886da94fcc6fddd306a86b02a','52f0a6f76ce4ffed4a2cff4cbfa12ba639746a15e0ef942a8a98884ce6d6f8bf','6263e67741e9b595200ffb8fa9c70a21bb8017e9626c0c47ae59eb1b473c847e'); -INSERT INTO blocks VALUES(310296,'75ceb8b7377c650147612384601cf512e27db7b70503d816b392b941531b5916',310296000,NULL,NULL,'08e2361ae4b98387ee43fd7230ea8b296dee677b337f0e211527e3cf29a64e9b','66c5645364519ca0430db894d2eaa6ac82f7d8914c3cb4a5672fdf3bd6cac8b9','bb1e05c0e10d9f5580eba49480d1772e4234aa55471bd94cf877414ba6e0012f'); -INSERT INTO blocks VALUES(310297,'d8ccb0c27b1ee885d882ab6314a294b2fb13068b877e35539a51caa46171b650',310297000,NULL,NULL,'cfefc3138983a33686dd1fc37f06fa1d7e01d9b218f7242cdd59005633c0ded8','173f741e5e1806fce3f4f0b85299962c74408d3262b9752a543fd79ab310adb1','8a5bf3d3e2b032a601bfff53026d0fa4bde5f61a4e90ebef3913eea3fd3a7bf7'); -INSERT INTO blocks VALUES(310298,'8ca08f7c45e9de5dfc053183c3ee5fadfb1a85c9e5ca2570e2480ef05175547a',310298000,NULL,NULL,'25254257d6f6724161b2b73f94d28d3fd40594b4846699b8a2d5f45d205b1fec','ecda196cf8ce0219589e5e82d248b83d8bdecdeb5a0da3b02aa6cc7b66d2c09a','657d91f3036889426df9df8247ee90df6c5fe36a3d8c6b1a9efed54aaee0dba1'); -INSERT INTO blocks VALUES(310299,'a1cdac6a49a5b71bf5802df800a97310bbf964d53e6464563e5490a0b6fef5e9',310299000,NULL,NULL,'756acb1055ec75df8fa70f80e23d75f2b47e75035bfd68802e68308785a2ee14','bd31f490af463106fa1364081ff638616bd245b11878981928d0d0589e7b88c0','663d47a53efe6a593ae2f06f3ad6444efa180b5e59e82bdbf35d672af31cac6a'); -INSERT INTO blocks VALUES(310300,'395b0b4d289c02416af743d28fb7516486dea87844309ebef2663dc21b76dcb2',310300000,NULL,NULL,'e30027ca81176dc1e79a0ab3a5afbb839a3338dbe9ea6057aebcd383ed884c1d','cde56e64e9ea960c6fd1560ff3033154be1f694daad3263297ee72d3f3a6182c','82164a2d9e837164df185848a67ff7ddd947d2eff43ba297450c62e5b4754b9b'); -INSERT INTO blocks VALUES(310301,'52f13163068f40428b55ccb8496653d0e63e3217ce1dbea8deda8407b7810e8a',310301000,NULL,NULL,'4c2bcffc796af76a2607a978289942241e63a6387e0a2ae8fc3d02c6b5519fb0','6f3cb6e3a414bb29aec0d4aaf55ac706261b539befcb649259500a0c826ca7fd','b66920cfbb34ea08e06bb6fd594b7156a0a2d4021f8a43619397e81da6cd5267'); -INSERT INTO blocks VALUES(310302,'ca03ebc1453dbb1b52c8cc1bc6b343d76ef4c1eaac321a0837c6028384b8d5aa',310302000,NULL,NULL,'a39fdd7f84d2f6e29b613a8a724bc0902d9abd2d6b4d2f46c3b0512928d69b3f','54bb8b0b1f24cd8d9d562c1fd9158f4ef6c4c6ced0974c4e4e461aa641842148','855568f20d2fdfac725046c1f422235a8d4805ae0fae8edd1e13861f846c87a4'); -INSERT INTO blocks VALUES(310303,'d4e6600c553f0f1e3c3af36dd9573352a25033920d7b1e9912e7daae3058dcca',310303000,NULL,NULL,'23f307ef560a02210f4aae5fe605c6d8af9317ab17f1e1ef0944038a3515da49','d615d50f2c7f25b35a4826c629ac51383c1da2f1912a45da4b42eb3715a537ef','c308d0d1b55b151d0da4bcc3cf938d338cc5c74ba2f1b3bbcb13e193b8450e07'); -INSERT INTO blocks VALUES(310304,'b698b0c6cb64ca397b3616ce0c4297ca94b20a5332dcc2e2b85d43f5b69a4f1c',310304000,NULL,NULL,'6baa2ac646d3725fa01111959753844d22181cbbd1801cb12c4208be3709a3a3','d747a9dbe53c2c31dee78560f7b6db3e2bf360693484855eca7f12c59122cec7','be92312e1b00b10735032583aa8c56f8beae12efb9ed242584e0e7eafaa1b310'); -INSERT INTO blocks VALUES(310305,'cfba0521675f1e08aef4ecdbc2848fe031e47f8b41014bcd4b5934c1aa483c5b',310305000,NULL,NULL,'c366fd009860a090c632131eae9380820e512009bbbaa6f7bc5529afab7a88c1','5b38d6412ef33f7b9f98375c40abf96badbbe0644ef426381c85865d6367405b','66540145910f3127b31d280a4159b538d64596ac7471b4ec6b9219789e6cce67'); -INSERT INTO blocks VALUES(310306,'a88a07c577a6f2f137f686036411a866cae27ff8af4e1dfb8290606780ec722a',310306000,NULL,NULL,'fd12969b828d689063b4885a0356fc17e5207794d1f5b6a17bdeb8d584815a79','934e049637f985892b04a774d8f5ee4b162ed8d6857271fcc409442a4c983a85','aebf341ee2c6a1b12db7b9c509e56babf3325c4f769d74d89883580426887550'); -INSERT INTO blocks VALUES(310307,'bc5ccf771903eb94e336daf54b134459e1f9dd4465dec9eaa66a8ee0e76d426c',310307000,NULL,NULL,'e168094d31f56d36e4c3863fe719e6064b08ccc6f3c2adb490b1359360026aee','acc586f0030fb226ff74b676070a3849747249675d7393b81f1796d9d2545b0f','671f39cc124450d9e279d6ff6ea17a35f617db33f33c62ed1eb75f467fb38afc'); -INSERT INTO blocks VALUES(310308,'2291ffd9650760ff861660a70403252d078c677bb037a38e9d4a506b10ee2a30',310308000,NULL,NULL,'523b3bba7b02e2c4e588f21ed14b7b4f6630f887cc89f9361487b581d7e633b5','daad0db70e16b858883c60d1f73720c71baebf5cf19c6ce506ed27aae3fdfa7c','4ba9671af5a41bfb26df994694bee5184c3f1d9f6d42379627f252cc05898dbb'); -INSERT INTO blocks VALUES(310309,'ca3ca8819aa3e5fc4238d80e5f06f74ca0c0980adbbf5e2be0076243e7731737',310309000,NULL,NULL,'effe1a68917014086da3bf8696f6c13f3cf2cb5cbd6c18b80ed622e476cff017','c2118312939d20050474da5d689b1f2985883844c157568c205637b104a2edb2','ba9f6c29f116db42cf194def1e00a50f9788f8d8b90fefb02a045cebee7a3448'); -INSERT INTO blocks VALUES(310310,'07cd7252e3e172168e33a1265b396c3708ae43b761d02448add81e476b1bcb2c',310310000,NULL,NULL,'968fb8a7409531a27ffb52af484e7c1076f05b58f9a51bf9cf3d5a7d83b12002','a5095bd80deb5155844c03956699d359ffbf0c08664755c5e457fa31522bb318','705e88b850583e0eca3e27b913853e7f6a060181c2506228e6e8c842e9131c2f'); -INSERT INTO blocks VALUES(310311,'2842937eabfdd890e3f233d11c030bed6144b884d3a9029cd2252126221caf36',310311000,NULL,NULL,'8c69639a757d0195594fa1da3f6b35a0e8c62b8df7f95db81e26d496b8c9dd72','87eb47dcc6b7d64443f422293617f7679f60ea7d41a0fc98e66e4717e9684b03','b05ba32a00997dc486c74821de2c3dada80cc1c02e8dd123f605a6cdc5ed1421'); -INSERT INTO blocks VALUES(310312,'8168511cdfdc0018672bf22f3c6808af709430dd0757609abe10fcd0c3aabfd7',310312000,NULL,NULL,'8d839bac01b9aae5e554f691ae0ee42cee072f9367fcc2811d4b3f65640cfcad','b3d643a0bed134c40365d7e1fea8478e60f08158999d8147e5a8a0739ee6843d','e2ed5656b5c0cbe5e73187d921f4ac144b7dbc08780c6bdf858c6c04cf0d469c'); -INSERT INTO blocks VALUES(310313,'7c1b734c019c4f3e27e8d5cbee28e64aa6c66bb041d2a450e03537e3fac8e7e5',310313000,NULL,NULL,'1377f4255bfd7ff6638734733a4b8faec97fd62aeb954e42b477c875ccc50b73','e8a3a4659973a0110b46795aa9e0e671160189d171944bc89d784e082fd4b8e4','bd101173b4269f59db3a27203c3d09becf14fc35deafed564d561eadae2273c1'); -INSERT INTO blocks VALUES(310314,'1ce78314eee22e87ccae74ff129b1803115a953426a5b807f2c55fb10fb63dc8',310314000,NULL,NULL,'8ed80d44f0d6ad01a30611d94b91f735ef3a166cf0dfa7531492a3e4ac7c29f1','dd54a8bcced43bcac9b2e2783061a2d9c44c34c07383bdbae9aedb3a1ceab1fb','3d7032b193673415740f390c0bb473b53210edd25ccf96660c71ff64afa0b56e'); -INSERT INTO blocks VALUES(310315,'bd356b1bce263f7933fb4b64cf8298d2f085ca1480975d6346a8f5dab0db72cb',310315000,NULL,NULL,'24b5905cf0d5349b7031870af9677916892e3292fa61455a75e84c1605a398ba','c41277b6ed0b6a5591b6d8a5dc6275831816a0b38d80e758c55da94fdff684d0','dcc9fce87a61f2faacc52eb89e13fefd32dd01ff691a33e216603c4ea9002301'); -INSERT INTO blocks VALUES(310316,'ea9e5e747996c8d8741877afdcf296413126e2b45c693f3abdb602a5dae3fa44',310316000,NULL,NULL,'a191657253ca159739403f35417ef74637b053db49c7db62465fde4c54e69239','5a0493b0c046a9e8822f8d8066dbbee6ded3a90ccfb7c90d33978bab664f2c18','b093c25741e09fe09d267fdaa7790467991e48e71943bae439411b11b7f2f1b1'); -INSERT INTO blocks VALUES(310317,'aa8a533edd243f1484917951e45f0b7681446747cebcc54d43c78eda68134d63',310317000,NULL,NULL,'bf6d880b9fa42b0e38523c00c92a898093afd068450be504a0a56bafd69ed647','6d3b4018de0f1387d9fa13c12f2b665b87bfc7e71c87c0944655d0ce60f1773f','8aff1439da0edacfa6e822369857240d96ca5393907d092b77aff275dff54ba2'); -INSERT INTO blocks VALUES(310318,'c1be6c211fbad07a10b96ac7e6850a90c43ba2a38e05d53225d913cc2cf60b03',310318000,NULL,NULL,'6422eb2cab5937adb9ca2194c025d0dce63cd62e18d7ebd63220207957c942ee','6937ab007cdf074357a4fa32bebf0cfeb7256b33ac47f36c4f41d1a63adfc1da','981e01f961de4142910014ed4f17a861e8374e9ca39f9a7badadd7150d47fbda'); -INSERT INTO blocks VALUES(310319,'f7fc6204a576c37295d0c65aac3d8202db94b6a4fa879fff63510d470dcefa71',310319000,NULL,NULL,'efb625496aa4365f5ac198a82833c880a60cd5f86d04689463216619cd7d96b8','a00dbae611e4cffbeacb837828e8182ed0665235f301b2afca6462ac8eb72c28','75ffc7b13f5e650ff1f0e36290caed2e9dbae591dc31673cb8fcc42f3185142a'); -INSERT INTO blocks VALUES(310320,'fd34ebe6ba298ba423d860a62c566c05372521438150e8341c430116824e7e0b',310320000,NULL,NULL,'8c3938d7b3c0a822ebee67f1ecf21b1db6496e19471cf1f2cd00f30325d0c88a','cad4b4523ebcdff7909e8ff7c5eb8c80d85a6343b9b216f7edc8ed8925713545','9d22e23f30dcdce54e159cc45d94008782cd695161c98c9da044fbbaea317fe0'); -INSERT INTO blocks VALUES(310321,'f74be89e9ceb0779f3c7f97c34fb97cd7c51942244cbc2018d17a3f423dd3ae5',310321000,NULL,NULL,'21e4c3a7afd02f183cbb69709fc6c006ab3d38fef3466de1a1870232d1c891bd','cead4ac9cf2e9e185ad7f30a37cbb39993b3ad0d819560976a5c478b378d0004','5dcba624b23e2ee72f5cd957ddf44ad930672d61e0cd6bf06cbf18551c76c1bc'); -INSERT INTO blocks VALUES(310322,'ce0b1afb355e6fd897e74b556a9441f202e3f2b524d1d88bc54e18f860b57668',310322000,NULL,NULL,'01b3b28c4d8eb796827267c06e6362206884e44f40c3f72d9b5c9d1e6cdfb29a','514a0805bbf2371e3763b77a329e556890d04f8b010c675f919bf54cbf2949d0','a5c068d02bb1e2f1bb54c30202ca26bfa61587407baff8677ea5576fdbbadf78'); -INSERT INTO blocks VALUES(310323,'df82040c0cbd905e7991a88786090b93606168a7248c8b099d6b9c166c7e80fd',310323000,NULL,NULL,'a362da58df0d31eeaa93a25c91c17bec62f9cad6ff0c31420584ce293ecafdbc','25b2688ce8a29a36b265f0f76719ab90592a0ac816047373d24bc107cc2af3a1','1ffff2eb509dfc2e17b70711afeb2e4d9988fb541103448b50f8682e90fbf3f4'); -INSERT INTO blocks VALUES(310324,'367d0ac107cbc7f93857d79e6fa96d47b1c98f88b3fdda97c51f9163e2366826',310324000,NULL,NULL,'d1b353ac97e000471c66df8ee04d7b0c25f7eead2414e5648cd2ef334881bad6','dc2c2bd652d3ce8d29700b05e69758caf760242e4104a45bbadd006bd60e30a5','bc0672ffcd92f59ea9595d36f6a09ee1f3ed10e10324cab8986ad19f592dac7f'); -INSERT INTO blocks VALUES(310325,'60d50997f57a876b2f9291e1ae19c776df95b2e46c14fe6574fb0e4ce8021eac',310325000,NULL,NULL,'7734300dc764c67fde935dd4432396de4a31cedc2901f3fc70bf1576797cf7b0','4b1b7793a3c72117d7c10aed5d638e2380ae41e180642fbf00cd70eb04fd9958','f34ef6fefa93d7717372cc019148ad75d2647e13fe6e3143ec2fafed7cfb1314'); -INSERT INTO blocks VALUES(310326,'d6f210a1617e1a8eb819fc0e9ef06bd135e15ae65af407e7413f0901f5996573',310326000,NULL,NULL,'ebe859a722587fd456695c6a46af7f0bf54c03e940bdbb5424520a8c1fe70617','61edda4c07d31f85dd3d11394f6bb20e7c7c6b0e6f5251ad137d3dc5704ef19c','544b049f4dc4763c9694f9e6edb1d193015110d2ace117f149649f76ad81286a'); -INSERT INTO blocks VALUES(310327,'9fa4076881b482d234c2085a93526b057ead3c73a6e73c1ed1cdee1a59af8adc',310327000,NULL,NULL,'8ced7a546ee2c746d4dc3f0ecd2fb4eaa62c65c4e98be74545d8de22c03526e6','2df6e25726f55175acdfda607966a09054ee379ce0f3a20572b5747d2ccd3714','ffc45518b4da2c8838761f3950f087033229b5d9370ed77933e70d52999b746b'); -INSERT INTO blocks VALUES(310328,'c7ffd388714d8d0fc77e92d05145e6845c72e6bfd32aeb61845515eca2fa2daf',310328000,NULL,NULL,'bb5d3479e492f52a0b3b69d29852faefdff645f9b113eae82594f57e8aa40b5d','804dcf1a3afd459b853097f002002b9b3fbba7ebd198d640dbf3d33906557b90','1a93b9f3d92dfd1d113c8d894a8b8dedb2a54a1e7d3b087eb6c3a52d0fa1839c'); -INSERT INTO blocks VALUES(310329,'67fb2e77f8d77924c877a58c1af13e1e16b9df425340ed30e9816a9553fd5a30',310329000,NULL,NULL,'4ad2c9d802db762537be19143ef5eca474cd9f749bbbc661cb95bcf1dcb0b02b','3d9c70e9de44cd225655cabe1ffd2559d23a822ecd988fec90267af067b3600e','28290675e84bbbd77885c0b29a7ffd45f8ee3d11dca5dc2f384a0e048ca7625c'); -INSERT INTO blocks VALUES(310330,'b62c222ad5a41084eb4d779e36f635c922ff8fe275df41a9259f9a54b9adcc0c',310330000,NULL,NULL,'4a9a6b59d56f6b7cf867095d939f9bddbf779141177feda470df3759b7d48be3','aa7f0eb4a619027687eb666c55d7f9ed8a8242732d9b9a4b1e9ef03578c51f04','e59f7424f7c851dc5102e3c898641da13e2dae08cb66f45bce391517fb12d87d'); -INSERT INTO blocks VALUES(310331,'52fb4d803a141f02b12a603244801e2e555a2dffb13a76c93f9ce13f9cf9b21e',310331000,NULL,NULL,'c676b9c31e0e3d74d005ad0a52a18ba34688b6002da5d269bcea0f789a4f8e91','7a46f9c856aa50e37cc24751982ccce135c5209b184efb0406aac9df228a8c49','b498c4b2d261dafc37c02bb049512a10dceee49aea4f5db6c378a7207ed0e678'); -INSERT INTO blocks VALUES(310332,'201086b0aab856c8b9c7b57d40762e907746fea722dbed8efb518f4bfd0dfdf2',310332000,NULL,NULL,'cf0b702c03ecff4bda1254dd5e96ca580b69d5d02d1f233725fccbe1f5f32000','c9ce031c0377ef78cd639526cfaa0bf18185c3a54949207c0416d4b42b4e2ea3','185af3c449bb91056a7801e1fab8ece03275742f8b19146ac317453b654b3530'); -INSERT INTO blocks VALUES(310333,'b7476114e72d4a38d0bebb0b388444619c6f1b62f97b598fed2e1ec7cd08ee82',310333000,NULL,NULL,'b40359eb197db65549946d93a39b2a732e0694d21b8d0138b9bfce4f5a87ae5b','1f689a825209fbdbd42b35d63469211397ce313b9f51385dbc8c3fae18b99476','2d1a4cc5497d1c9d8e589691d339a007578600531949c324ac64a0bf04586ab5'); -INSERT INTO blocks VALUES(310334,'a39eb839c62b127287ea01dd087b2fc3ad59107ef012decae298e40c1dec52cd',310334000,NULL,NULL,'7cb471ec146f9ec1e4d1b93184ea641f7b8088807dedcd1c0be4ca5ba99e80e1','211fb97ed8f43562b19b9e0f49fb282068e7e5c3fe62674c8c24cb8c66a6a7ae','fc534803eb2dc737cfec6dc7e120d48ec0a00c985695325e588d31860800a925'); -INSERT INTO blocks VALUES(310335,'23bd6092da66032357b13b95206e6527a8d22e6637a097d696d7a96c8858cc89',310335000,NULL,NULL,'47de747ec20cbec96a6bc4b71f67ea827c7a5a1ab0d3541fd539efac7442d644','317ac03fd72f410d545e57d38f90ac4ca7270f52c45ea1ee61a9ec8a312b689f','f5e3df363a8e0a241f389510c156cdad103c82400df34bc959cb673decb3d2e2'); -INSERT INTO blocks VALUES(310336,'ec4b8d0968dbae28789be96ffa5a7e27c3846064683acd7c3eb86f1f0cc58199',310336000,NULL,NULL,'c216588e623d2b3d03499c7e9f817106b20a8c98765979987633f1e4e50d9594','40ba486f57a47d264f773a3d43ef5a489c8e58817106cc59af558ca256319c59','86f54e6d23e62b4457f37cdf8e2b174a0002ab78c5a291ea8e15cad0e288b1a3'); -INSERT INTO blocks VALUES(310337,'055247d24ba9860eb2eadf9ec7ea966b86794a0e3727e6ffbcba0af38f2bc34a',310337000,NULL,NULL,'a558b47328f54b79a5ad9f7737af0e4df07e13e20f150296370e111879c09c2e','83520e028e369129c97437b3505002591e2d4c124536fe8feb1e25afca37167b','93d3a116e8461e40afc1a5ed5862b85560fa595d52a26d4b080e8475fe63a87f'); -INSERT INTO blocks VALUES(310338,'97944272a7e86b716c6587d0da0d2094b6f7e29714daa00fec8677205a049bcd',310338000,NULL,NULL,'31bea50c6481fa982eace70df5fc13d2981f1af13962809e3492b493a0dd4905','b3fed745dc2b7c21da6c57c901b4a8b3ffd125ccbc9608de891c21c6f579e080','6faaf5977be940a34c05c94ae7290c5c5aa53283b0b8a3b9ad9676dd70677e0d'); -INSERT INTO blocks VALUES(310339,'99d59ea38842e00c8ba156276582ff67c5fc8c3d3c6929246623d8f51239a052',310339000,NULL,NULL,'6605ca3db3c509fbc8574f2e10a3f981e2ff17b2812946ec8f2b1e49ba44f220','e977c4d41d0f8a01a14c479039759b2ebb2389f279c67ba2c80f176602d1459b','5b7b1499d4209c313265dd1b6a46e30fa91b751aed7e1c23a9593f4dbfe68622'); -INSERT INTO blocks VALUES(310340,'f7a193f14949aaae1167aebf7a6814c44712d2b19f6bf802e72be5f97dd7f5a0',310340000,NULL,NULL,'7db1ad1952cac2dda86fff6e5f939010bb30a1da26af438d354e17f423d5bf1f','c8d43a94a12cc6f093095a695fae56bccf2e321cd800031a8cb58029c031660c','f17441416b1d64441f5b8fc327256a8c1fe86668c75c377f3516e34d2cd129f2'); -INSERT INTO blocks VALUES(310341,'6c468431e0169b7df175afd661bc21a66f6b4353160f7a6c9df513a6b1788a7f',310341000,NULL,NULL,'1a1eef01250d2c53a1b34a8ee5b1e8fce984c3d47d28c544c6e162493b51225b','a35dc0024698a5399586c5d6a62dd41c91adfe8c87c15bf57f599c73e837eaad','f3afa4b7d5210601aff364aac0967c0503c0a55eef6f02b44d67755298ab0c07'); -INSERT INTO blocks VALUES(310342,'48669c2cb8e6bf2ca7f8e4846816d35396cbc88c349a8d1318ded0598a30edf7',310342000,NULL,NULL,'3c85c0b825985b04b42137da7e59fb3daaaf9e65b871b79390a4d8b31be5da92','7e300cf5098ac1ea1627ff39d96bc455999413d10abb8d180467f5651ad25726','e5a149c40a2893cab361be6b3b668be1b8f7ede1028b50f5bd6fe3528762984c'); -INSERT INTO blocks VALUES(310343,'41a1030c13ae11f5565e0045c73d15edc583a1ff6f3a8f5eac94ffcfaf759e11',310343000,NULL,NULL,'26f4ea323dd31b715c7a7f4ab8f1feabb199333a8494449ed538ff13215bb3b2','962afbab4e2a71e8cd5d829b32a5754a9c1d3220e2eef0263ddfcd565fc4db7a','552cdcb6d568ceff52645001391a6933c2a96b669a65550749881f3a439b4272'); -INSERT INTO blocks VALUES(310344,'97b74842207c7cd27160b23d74d7deb603882e4e5e61e2899c96a39b079b3977',310344000,NULL,NULL,'444314748cb1fa1c836b3b4de65c3920c7fe446741193e5f77843affe3bee908','a1c6af7fd601b9fc26e8ee1db43cee3639944a5f1a8543646645ad1b606ceb7f','f3eb4060e6ccb431402820cbd292a2ee9772a8f486121b036a9a09777fe4de55'); -INSERT INTO blocks VALUES(310345,'0bda7b13d1bc2ba4c3c72e0f27157067677595264d6430038f0b227118de8c65',310345000,NULL,NULL,'d1775816bb104187076be74e78e87fc6d367c3cb31d372329aec2b635002ca2e','3dc7e6de7ce2ebe528f57bff1de0f631ee6d907a194e28fe279acf92a1466f5b','f443a2b290e3d11a521e289dad67f4561aa4c35f9c45919d622395f0022d08a2'); -INSERT INTO blocks VALUES(310346,'0635503844de474dd694ecbcfb93e578268f77a80230a29986dfa7eeade15b16',310346000,NULL,NULL,'3244eed1df8ec4ae0ddb04f9f6e59e54244ca3df10dc21fc89c99c74ba734781','80c267bf4b4c677528095f32a3e85e60e0a4bb6ef5bff171036fe90785aa891d','3cc0d9a81683fb31611a341f3f35f42c6e7c04000ccbbbb5e749f8bcea1f6bd7'); -INSERT INTO blocks VALUES(310347,'f3f6b7e7a27c8da4318f9f2f694f37aaa9255bbdad260cb46f319a4755a1a84d',310347000,NULL,NULL,'6fd1802c269750b69ec04df457d47cd6b44c261340ebd5b4da61f06ede6aa166','9e160dfc79ef80fbab34a797e292ab36ab0f60c0b2182802921492791d689bf6','1708bd999275f0314de79de791d3fff720bcf81e8f0dd29680907ea157de665c'); -INSERT INTO blocks VALUES(310348,'c912af0d57982701bcda4293ad1ff3456299fd9e4a1da939d8d94bcb86634412',310348000,NULL,NULL,'668330e80a23f499c0e91b01c4c51aab393813b840f81b6b672611e391699faf','1f6c8a223e835807a984ec8e1aa01e066307c7a854434733ffd6e6ca24066971','db732bc7b1e390bdcac1629836314744cb93ff61fb1bb487e5f2038a2de0ff4c'); -INSERT INTO blocks VALUES(310349,'ca911c788add2e16726f4e194137f595823092482e48ff8dd3bdbe56c203523c',310349000,NULL,NULL,'32b36035ac1684e93126657ecd9711feb689672f64cceb03d220a8089dfacf12','bef5740db79806b3e5886102ea824ba1f8550e1d55f323d3ccb660adad7deca3','41536f06058aa53a74615296ba613d42fcf4781f5c24df728c9302c79edcdc29'); -INSERT INTO blocks VALUES(310350,'c20d54368c4e558c44e2fbaa0765d3aecc8c9f01d456e3ff219508b5d06bd69d',310350000,NULL,NULL,'dbe70bf3b8e4b74ac25c1b6737b6a760e6a06a4f96ee83a5ca728c8501d4af05','a9d2c6acd7eaf5c798cbd8243c1bd6b7634dda422ad3c4839c0beaef5a83ae0c','c80f3463372ddc133946616dfa7161e789a5187abcb1031427513f40f7ea667e'); -INSERT INTO blocks VALUES(310351,'656bd69a59329dbea94b8b22cfdaaec8de9ab50204868f006494d78e7f88e26f',310351000,NULL,NULL,'89bb7ea865a221a3646f78ea774a7cf1e15e8d65b85ddcfbdf87773145904151','cd0336df5e4ccec39f6b03641e766fbfe2fcc73d21123fd02b946ba36086934b','57967fb614fde03444496536cd9435e33842c9c9e20ece3e3f18e2e27be9655d'); -INSERT INTO blocks VALUES(310352,'fb97d2f766a23acb9644fef833e0257fdb74546e50d9e2303cf88d2e82b71a50',310352000,NULL,NULL,'fdbf27d576a72b046776be0e5c0a91d060619778aadef3df1d30f1a7785a0fdb','ce3e98f749f31ec0082c54bdefa582741793d0a049636ebe2ef933aec0231dcd','4591524ad7c6626ccb831cfa59348349ba7c0180a2149c47cd60e59aac189831'); -INSERT INTO blocks VALUES(310353,'2d3e451f189fc2f29704b1b09820278dd1eeb347fef11352d7a680c9aecc13b8',310353000,NULL,NULL,'73429d323376209447edc6d2ddbfd51f0bcde21736ea6dad61dc96b6984a1fa1','015dd109e8665d3af271805f1966f2d7bf87cd989d1f6b1af01657746e67cc5f','9166cfdd4a2e7144bed00b5afe15a6662fa8b27d871af4e9ad1601d6f88e3bbf'); -INSERT INTO blocks VALUES(310354,'437d9635e1702247e0d9330347cc6e339e3678be89a760ba9bf79dd2cd8803e0',310354000,NULL,NULL,'b2bbcbb6a7db94b2a5681c6e380ac13480bb49c29a3fbb3c7c1eb740f70f8324','ac333c913aee8b776bf2a1d0f0cdd7f1946c7e01d83887cfda661d3997c5f8d4','40d9550bc44a147337504c883467ccb0df44861b0b0652a66c107b1729a7baa5'); -INSERT INTO blocks VALUES(310355,'ea80897a4f9167bfc775e4e43840d9ea6f839f3571c7ab4433f1e082f4bbe37d',310355000,NULL,NULL,'ccbd3ea41587c3c1d92f355979b49c5340a0a90060f07c228c22d6ff76b25579','0c4a78dab9ab654ad28aacaa66891d0be3332ee3d0222bb49dbf9e2a12fd7a9e','9eafc9d0c29a40fe6485cacd11f4aa982cb670040cbd94a2901558b45e6b717e'); -INSERT INTO blocks VALUES(310356,'68088305f7eba74c1d50458e5e5ca5a849f0b4a4e9935709d8ee56877b1b55c4',310356000,NULL,NULL,'06a95d39e110e40ba318320d50984096cbec88c680f426f721154555efc2561f','01d2d0622139b644ea7d5340570ea0a4257953543fb189994fb975e6163d8a60','12c06774d25d13c63fa9bcfc21bb22c0f53b33fb53eccc22697b0fa1d02e51e1'); -INSERT INTO blocks VALUES(310357,'4572f7f4ad467ef78212e9e08fa2ce3f01f2acc28c0b8ca9d1479380726bab1f',310357000,NULL,NULL,'443f947352e853367d1c10d25771c7d78eec22fac19c5bace6f96b8f949e264b','25788620f5a7f8d532948463770424c21e75b169432a2e4e1eb1f0a71a0ba6ed','fcbed554c8d39d1b001dab89eb1bc4328df608b93209c562f4bb260dbc23a579'); -INSERT INTO blocks VALUES(310358,'d5eae5513f1264d00d8c83fe9271e984774526d89b03ecd78d62d4d95ec1dea6',310358000,NULL,NULL,'c2cd71dc9e7d5ccb5d5e9d6b55c47010c9db6a573d01820da1c8960970fd571f','a1b8f56fb42dd1c6a6e8027454ac7fddc2754b0656688576ec24a6ffdf6daaf7','876d919941b3b1fbda1363384135f292eef71d1fe8477e963452dc3da96cdaa5'); -INSERT INTO blocks VALUES(310359,'4fa301160e7e0be18a33065475b1511e859475f390133857a803de0692a9b74f',310359000,NULL,NULL,'5b7646bafc6b11eb1554ea1e02221883043b435ae973c3678505fa2128aadfb7','1e6afae27a3102e7e9665a064e5ff112307388199ebb74e1fc461dcd8d38c85b','254fd8fb43c5c31b2b6fe6e845c9eaf18c9a9def0653a4b1e6540007f2f8fbed'); -INSERT INTO blocks VALUES(310360,'cc852c3c20dbb58466f9a3c9f6df59ef1c3584f849272e100823a95b7a3c79f0',310360000,NULL,NULL,'b0e937568a47c244e3b29cfb3a5e7196c171acc1565c44020345c715b7774658','281d2e91b51727ac73fc558906e13a4955c1cfb6f9dd1fbf0dfedfa3e2cf5f95','a2f5bf59e4213704859865db723038436a35b253cfb04e6950f203c36a50391c'); -INSERT INTO blocks VALUES(310361,'636110c0af5c76ada1a19fa5cd012e3ee796723f8a7b3a5457d8cb81d6c57019',310361000,NULL,NULL,'fd5b67bb571f4e9c0c37c6a5c9e1181133c301e05f4f97a41bd827eda7a6db3c','c04c35a1fce6da595c33b914dc15072b56e981470a81de7fc2009d1c9d8c1f00','a2f320edf5f692e8e29df89fdf5b1c1c384b5ba6a557e636f3eda29764c229fb'); -INSERT INTO blocks VALUES(310362,'6199591a598e9b2159adb828ab26d48c37c26b784f8467a6bb55d51d7b6390f2',310362000,NULL,NULL,'38382cc090b349809c4798c3c83b485f8ff682fd5b5b2568357d62ef30f7c046','07937a84691f1b0bd1897a098318d8d7577da73c4c0fe3fe91931f47a4843259','c41520cabb7eb75305983ed593f90e298c1a1698122926d23d9cf8183a690b07'); -INSERT INTO blocks VALUES(310363,'a31967b730f72da6ad20f563df18c081c13e3537ba7ea5ab5d01db40e02647e6',310363000,NULL,NULL,'82911a691937d87629bc14e5294f68a25ff2fc6512370db032834b85a623d5c3','11cf84026a85dca1b2c27408512a07092565061865d153913aa873f83e2062a9','dec4dbd331725676a1415edf4c770636db16024b9a638d20d3d517d311dc1154'); -INSERT INTO blocks VALUES(310364,'67025b6f69e33546f3309b229ea1ae22ed12b0544b48e202f5387e08d13be0c9',310364000,NULL,NULL,'cc362ce4c2142e539057430e2dd6402b985c62fefa4e4ad33afe1305f53af8a4','a3864cf99fb338a60ad73c6550ab12cf1852c1aaa1c0d4b30a6454d55f787528','e477765422cab8ba7e76838e064c41108039194a405df9a09a27675cc9127c6f'); -INSERT INTO blocks VALUES(310365,'b65b578ed93a85ea5f5005ec957765e2d41e741480adde6968315fe09784c409',310365000,NULL,NULL,'49e41f95f081b70e3f540fa22864cc4f229ceabfdfd54f2da112f1fd35466617','5788e72e314169198d92a014c2e06ca9ce795f4977b48343e6ece965b5cd1f3e','0f59ce84d484daa17eb468b036e16e03ac4373b80543cc1136ee6a402290518a'); -INSERT INTO blocks VALUES(310366,'a7843440b110ab26327672e3d65125a1b9efd838671422b6ede6c85890352440',310366000,NULL,NULL,'687c5f3e381d164499126ff90785e3635c825db3808267d4de2ec0e37cc7c597','869e42fb7e4ab2269bf7e9d60accb707b379d4f9de7bc237841def956732ebf7','e79c3af0cc9d31a7addf7e842c906036d0a7f8e840c01dd2255e84a75c904820'); -INSERT INTO blocks VALUES(310367,'326c7e51165800a892b48909d105ff5ea572ff408d56d1623ad66d3dfeeb4f47',310367000,NULL,NULL,'d7fe976a4b2cca2e23d082a703ef4f4739e110ce1e0a373e76064f6186856ff7','e0ef9aa9d9b7d1c3a65d42e7161724dc87d780b9522996d3ff65a25193ce2b93','44893db5bd2f4402e6be28ee3e849b59ff0db03611017f86a0cff5eed9c21270'); -INSERT INTO blocks VALUES(310368,'f7bfee2feb32c2bfd998dc0f6bff5e5994a3131808b912d692c3089528b4e006',310368000,NULL,NULL,'97f0a0f9e6f355dd179aa2941412decc1b0a06de0dc14dce8538aed6e35d41ba','46d32b302c2deecf756e3958ee2228bb93ac98906ae54331efb5b90f62b85f77','3d50870a3238701e1cfa4997cba33f2c0a60ef5f1b3d743b1d68ed8f67949eda'); -INSERT INTO blocks VALUES(310369,'0f836b76eb06019a6bb01776e80bc10dac9fb77002262c80d6683fd42dbfc8da',310369000,NULL,NULL,'1b5d9ec9bd918c84a5f9b6882c94a739cc1ad1362dedfbdf7b2009fd42251d66','b10d6c9fbfdac1627e51cb2aff6b121ace75c626a05fe16b11e6794c5683c60f','d4c4cac95ab99433346656e395709a7e35cbbf239befe4939dc9a1f03ea74f4c'); -INSERT INTO blocks VALUES(310370,'9eb8f1f6cc0ed3d2a77c5b2c66965150c8ceb26d357b9844e19674d8221fef67',310370000,NULL,NULL,'578b039ed2b9a25e1c75ad9a5242c5962d6645616dc53fb08386602e40f14486','bdc20946af8409c997efd9283331552f073a3f0cd09eee60f1a56a4e1ffd760b','390d5f9da2620d2566de0b5948f8034fa19d747c962bbe3591ddc24dca549fc6'); -INSERT INTO blocks VALUES(310371,'7404cb31a39887a9841c2c27309d8c50b88748ed5fa8a3e5ba4cc3fc18310154',310371000,NULL,NULL,'473d21b8218a2b02f7fa0d5daf114fa988e4a3d97c33aebe97e51a8d22252492','34d2d8b012eea200df732029472cd9d7fc9bbf42c1ce67adc25b7bf7c08419b8','9a2bf2f3c0b11674695619db0331f2e1c3023b5069a936d895b1fc5ebdbd957e'); -INSERT INTO blocks VALUES(310372,'d3a790f6f5f85e2662a9d5fcd94a38bfe9f318ffd695f4770b6ea0770e1ae18d',310372000,NULL,NULL,'0c306eb25702d190ce32cac521b1fac9b8a7cbcf441fd74be8de2e002b4ce14c','0b80ff1489d766a23ee7929394d314c624620dfa6df0fab7af05474895614ff2','5c56e054077201ba73fe277789d0105cd53e6f1bc8a9b6d0148c5183186e80d8'); -INSERT INTO blocks VALUES(310373,'c192bec419937220c2705ce8a260ba0922940af116e10a2bc9db94f7497cf9c0',310373000,NULL,NULL,'48d14b17f9074ce1f75ab32581e8f6fe7d518ebd669af6508e5d986d97c92b3d','4d9e02a4f6be869f7235a53149d36146db6ccce35e163bdd4d3ce1d4ea618f3f','7861881e4e2095369a7bbfde371648a02e0d31b265b1234a66cb28e5acb67781'); -INSERT INTO blocks VALUES(310374,'f541273d293a084509916c10aec0de40092c7695888ec7510f23e0c7bb405f8e',310374000,NULL,NULL,'aee93917f6fe0046069aaff48d5d1875a9c4451acec6562a377428bfb1184cd4','aa1545e0a3eeae700fb9a5afe0365659e3ae1527ad555cfa69a368a62359b2e0','c149ffc5c5168825f4986e3289f92dd942ad446bfa1b8be4af928890405bb65e'); -INSERT INTO blocks VALUES(310375,'da666e1886212e20c154aba9d6b617e471106ddc9b8c8a28e9860baf82a17458',310375000,NULL,NULL,'2b0d74911bba5c9530b69c04fec512fe4c5df25458e5237db884586a221fa30b','ec33fbe1aa123acb40c65b8a448436def7e670bc11f57e7ea81a590256fa03bf','e8df498dc7bb480788a03dd7e1a7404c910ca0a24bbc151a9d142fc97e8ca790'); -INSERT INTO blocks VALUES(310376,'5dc483d7d1697eb823cba64bb8d6c0aded59d00ea37067de0caeebf3ea4ea7dc',310376000,NULL,NULL,'a6f84afe2845ba2fa4e5e7377b1d4474dbde6dfc9c4bed050e6d10cc80025e82','f60b11851450c388d0b34f0082ae562538eea1f7267d0c54739e24be001708e0','e4c8ea454d67c42109111faa87ed93ce77a05ba598b4c1816f93834969e4df56'); -INSERT INTO blocks VALUES(310377,'f8d1cac1fef3fa6e7ad1c44ff6ae2c6920985bad74e77a6868612ee81f16b0b3',310377000,NULL,NULL,'e006e13691719e4fce65e72c692d3affeae8ae465de2a3b285a1bed4eb518a70','6120536c3ce65774b059eaf66cce3b67b9bc0d8fbffb5522c7fc0b659908ab73','b2389b762e54347c830ec7f424fa8d526f37dd01c20dd03ac9f3808d8262f603'); -INSERT INTO blocks VALUES(310378,'fec994dd24e213aa78f166ca315c90cb74ee871295a252723dd269c13fc614ce',310378000,NULL,NULL,'607ffa4928577b82f275750353fcecc2e50098d227f18bb8ea95ac2bbb10eea6','5dd1bb601133d103e4da02e5565ce9f0ee904b9d40f11424b3838f00ad463233','d117ea88864fe3f19f367e1c3361e902dce3a79fe0c85e845d9fc51aea22c0bc'); -INSERT INTO blocks VALUES(310379,'d86cdb36616976eafb054477058de5670a02194f3ee27911df1822ff1c26f19c',310379000,NULL,NULL,'9f17e8d662dbbfc12a56dc36172b3154bc9b05a87885d1411826481e1ca4f6ea','55989c1b10eecdbb7b71e454db4e06f11e316e4a8d7d37b4b27006c9498a1b95','f61499992c4f360f360ecc9e4465d33a768a9f27b66831958286944feb20aecb'); -INSERT INTO blocks VALUES(310380,'292dba1b887326f0719fe00caf9863afc613fc1643e041ba7678a325cf2b6aae',310380000,NULL,NULL,'d617e30e1a32ed1cf269a190fd4c843755413492827546a0b3ed14278f817532','98c67bdbf6437cbb778f1b52bf478d346499483edebf307faa0692d51fca56ad','27ad849430ab9fec50a6cc2838684531f16b3a3418cf547b1767e21573ce98b3'); -INSERT INTO blocks VALUES(310381,'6726e0171d41e8b03e8c7a245ef69477b44506b651efe999e892e1e6d9d4cf38',310381000,NULL,NULL,'8af8d819f02927de4a74d3d37dcecf6e5124d53be37603764b1b1adad13b0d7a','da4c589d45bb47c441a5f7a8b7e6190e1721e4b5645347977d3f7d8312b070d7','bb0f96f7a5e9caa7c6d8599054b26c9adfba26a5cc17dea6544fc233cec1c3ed'); -INSERT INTO blocks VALUES(310382,'0be33004c34938cedd0901b03c95e55d91590aa2fec6c5f6e44aec5366a0e7d8',310382000,NULL,NULL,'809d5c20335bbefe8e4f3552e24b24d96f6ee4ab12f3bfc9e74898371cf69797','bef6a13095e99b40ac83677188467e6924fa7e878ed1005b5e724bbf244d91b5','44ee61ce4a2075b26dd50a706f51cbc34abd3218b7207970283e803677804545'); -INSERT INTO blocks VALUES(310383,'992ff9a3b2f4e303854514d4cad554ff333c1f3f84961aa5a6b570af44a74508',310383000,NULL,NULL,'d8ec301994a5333f8efe7cc547a833d26c6766deb0b39c4fc18d1bdb470ee903','aa962cfc3a65ccb4f548f1661a064116836040a4a968c6f58818badca84fbe63','d7173018f252a3cebf864760095645a8dd03b73f22f1dcc6c99ee9176aa8dfd5'); -INSERT INTO blocks VALUES(310384,'d518c696796401d77956d878cbdc247e207f03198eabc2749d61ebeadee87e5e',310384000,NULL,NULL,'fe47a03993cb9079a6e72810552d631fe838bcfaba3b34c73c9948af77266df2','488043a3bbadd8cd967201b139d5edd3c50adc437f6851c7b791ce719336302e','ff98e13c80a03a944947d83b2463ad37ca4eeb20928c3fa79d2e3a94b58102d3'); -INSERT INTO blocks VALUES(310385,'2aa6a491a03a1a16adbc5f5e795c97ec338345cfdf10ff711ffb7ac3a0e26e28',310385000,NULL,NULL,'6114e98e0004cf0f9472fce6bfa6bb99ae38e57214c8b134f30da1d62399f6ef','c76613f28897cbacd300ef2ae6aeccc34af2fdaf1f68554141d0628c98283c4e','8690b311905f4adcd7fe3a42b42abe39a773dbecd2577df812267dc0cc539bdc'); -INSERT INTO blocks VALUES(310386,'9d19a754b48a180fd5ebb0ae63e96fa9f4a67e475aeefa41f8f4f8420e677eda',310386000,NULL,NULL,'4c52d59ade1bd2068e3b75b8b3cd1d23c6a94b6437f7966d10f5a07bf8f630ff','eee5edc413a0775271370f073c2c36ff144123b5995a90842d3e65c1b5112418','4e82ea7881e328052b3a946e77e11f50ecfeafd344d7a799594308757d5dd73d'); -INSERT INTO blocks VALUES(310387,'b4cac00f59c626206e193575b3ba9bfddd83bbfc374ebeb2838acd25e34a6c2b',310387000,NULL,NULL,'327e9a842233568888998ec1456b6f78c093b47639707d44e6336b2bc18d955f','5cf78e08f145a08fd3e099429cbef8e5ab59cb69bfabf88821f361f059adbddd','8cb7eb4d2b8c9cdef93620f738f3df1295b745ab891c9585288fe7a7fd9f6454'); -INSERT INTO blocks VALUES(310388,'41a04637694ea47a57b76fb52d3e8cfe67ee28e3e8744218f652166abe833284',310388000,NULL,NULL,'6efaab188a5cae39ef547a804f61bcbc2be4881e0569f49d7622b407f6860401','e3abf47ed96b9b15c4c6702d1d21b2452af7869bdff81a7a26435d8dd23fd96c','3269ffb7660657f6876cffed982002c299525a493523add4fdd55feb208de6e5'); -INSERT INTO blocks VALUES(310389,'3ec95ae011161c6752f308d28bde892b2846e96a96de164e5f3394744d0aa607',310389000,NULL,NULL,'89c686d5d973691a7281268c867f837b86b140a05f16f12302a3cdeb3b6a0ee9','b22a6d17eed5fd29190b52010e2e5e95184f1560a20b157feacabccadb5ff8bf','2d47c0d05601b6be7e356a81e2cec3de864d3a8988bc6508fa6ac97e18df72c2'); -INSERT INTO blocks VALUES(310390,'f05a916c6be28909fa19d176e0232f704d8108f73083dded5365d05b306ddf1a',310390000,NULL,NULL,'2c4eceebb94d0c7a7702478d9547d1afbb42ab5ecb5ae6271a3f69942bd77e50','a9031515eb1113db7dd1f5441aba4527b4b8f6213147024e75235a6b97b98cba','69fa70c0ecafc358638bc0fb4ee975cfeb308a52c019de096acaaf879f7507ac'); -INSERT INTO blocks VALUES(310391,'fc26112b7fdd8aaf333645607dabc9781eac067d4468d63bb46628623e122952',310391000,NULL,NULL,'06397124ee2a1bcb9104899469394855d4ecccd1a08626d650bdf3169e227831','ad3d718d6cacf0e28185cb2093fd8ea6f3977817eff4f83f4bcfd01896ba94d2','1f93797718f750a9fcb3dca42da0d42500bddbe566c88f3560a48a858216f519'); -INSERT INTO blocks VALUES(310392,'f7022ecab2f2179c398580460f50c643b10d4b6869e5519db6ef5d5a27d84a1d',310392000,NULL,NULL,'44974b5fec0be3a2958d39f2d6824a2e82733f873a404ec9887178c620843149','50552937bb461b709b5be12d81b3f9e4c9316b6da317355a76fc70774c07f997','60527dcc5ae2b28806845c24b2c8cd242a962121b8bbaa0fad392838665d39db'); -INSERT INTO blocks VALUES(310393,'e6aeef89ab079721e7eae02f7b197acfb37c2de587d35a5cf4dd1e3c54d68308',310393000,NULL,NULL,'1863677c0e552344607b1af3eb8ef8f4fc6b2a73d63eebb3e9928302c887970f','0f6302a52cca799465d6712da594cb2865a34edaa31dddc939843411692b8d95','7426a8c4cb60b3661fee7c8190299a88ae14b6912e2726a8f4584fe79417fd83'); -INSERT INTO blocks VALUES(310394,'2a944743c3beb3bf1b530bd6a210682a0a0e9b0e6a9ff938d9be856236779a6f',310394000,NULL,NULL,'3838ba6e84376ed8dffb3fee9b5928d903952c0d8a8ad41ab63a9651a1c8c770','f2ab83f2a4bbabcd72c27543b9e06e23f67e4c657b6fae78e2fbdfd3a3a88008','e93009dd0ec0f2ce91c4487668253861888880313f73226b3fc7317403f036de'); -INSERT INTO blocks VALUES(310395,'19eb891ce70b82db2f2745e1d60e0cf445363aaff4e96335f9014d92312d20e4',310395000,NULL,NULL,'872367d61f81cddeb555da5f9c4f46a8ac57c24629ab073094e407a4555a8555','4d56f40558dd8ff8104ec1632dfc9c475ab3cf2f366c5eaa907424dbc42758cb','42c79f6af57c8030e3c2e6cf134be9053764ebabb4af16a158b58ed8f6d6fd9c'); -INSERT INTO blocks VALUES(310396,'aea407729ac8d8e9221efd9d70106d14df6aaf9f2f87dc6f490835a9caadf08e',310396000,NULL,NULL,'b9a9eaaf1cf6cfa4ae5b0f314812a9a2346209da0b7ce57e16010d2a01c0092a','69df6efd0b19ad5910bdd6a3b7c3c1f92e61fe564ac19f15ecc9396362d1e66a','0f13f519d420993c814adc94cad26f62d743a92ac998274c199d8ebfa6bbc984'); -INSERT INTO blocks VALUES(310397,'7c429e56a19e884a8a77a759b52334a4b79404081b976270114043ba94d7985c',310397000,NULL,NULL,'b61f36bcc934a18fdccf7806d41482684ca129801d0b9ce7815dcd488fc49a66','e3b052e4b1512c1fc03460d8b165031b469b8bbef48f022311428de8d277db7b','1f4e0b0c894bb855b2b81ca2cb0276b1b2431c08e97b56ea781c39e5ef10e0de'); -INSERT INTO blocks VALUES(310398,'55c046db86dee1d63c0e46e6df79b5b77dfd4ab2ff5da79e6360ce77dd98335e',310398000,NULL,NULL,'9446476e123e5dd354682c60591cab8b712c30df9080dde756246eef45e21df5','091bf9f1f1cdca320c408b483a22b330ed03cd363f4604d90d820f4c9934ff8b','ecfd874ce8216f17a56aee63b8fb96457c2e6d555f395969c9de621a3caf68f5'); -INSERT INTO blocks VALUES(310399,'765abc449b3127d71ab971e0c2ae69c570284e0c5dacf4c3c07f2e4eca180e7a',310399000,NULL,NULL,'50d288bca09d446f56544fb1ec50d613bdf156488468ac92d433425a3cab0804','6fdf51dcb0482117a0c7841f35205e90326931daeb35d4a50759dafe6109e761','6befa8071f10075236ac9cbb69179a6f21f0fb6c1d9afbda8c31316a3d923726'); -INSERT INTO blocks VALUES(310400,'925bc6f6f45fe2fb2d494e852aaf667d8623e5dae2e92fdffa80f15661f04218',310400000,NULL,NULL,'349a24fd446727bb1793ccf88fc569d20eb680c10e506fc25b281ce6ec3fd7bd','e00ad4a31e342653bca8de193018b6388dc878d949f22c4f7f385369d16e3b77','57ce9e1e074e87d8ed3d9f808169c8736b7be0434b5d2cc1c1dc16be51bca58e'); -INSERT INTO blocks VALUES(310401,'f7b9af2e2cd16c478eed4a34021f2009944dbc9b757bf8fe4fc03f9d900e0351',310401000,NULL,NULL,'52c06b68cad19608420b73476a73b411d0327382b92bd454cadf1b8616eb17a5','7be2865d031ba77e2f589e86be49f6d6d3ef07f70975df72d3633527e3d7960c','8526961e086b6bf391a4243b92dc22f4f909013528b75c13e6e12eaa0d57947a'); -INSERT INTO blocks VALUES(310402,'1404f1826cd93e1861dd92ca3f3b05c65e8578b88626577a3cbad1e771b96e44',310402000,NULL,NULL,'8bf64213a454c62dd4b0dcd7dfa298da0244a6aa7ae6fff98be6f49d50d259ab','498685cab34b81bceda2d35af648f5f10eb806fdd712e9e75b411d17ef7168d1','6143a3523ed5a3242ad94c146fc01fe35d63bdc7daac9b0797a3cef28cbaf6b2'); -INSERT INTO blocks VALUES(310403,'f7426dbd4a0808148b5fc3eb66df4a8ad606c97888c175850f65099286c7581c',310403000,NULL,NULL,'fb2a365372522d1442792cb38e1a4167eda2612ef442c776749097a3d541a827','b9e9b0c64411d0330e0538fd8174c441ae985e44b237991fe001e1405cbb4355','046946a9e380676f95c2e5337a24b62c1e86f0af2d157ef17069adde1cdab4a5'); -INSERT INTO blocks VALUES(310404,'401c327424b39a6d908f1a2f2202208a7893a5bedc2b9aff8e7eda0b64040040',310404000,NULL,NULL,'47f96d798df9cad17667be908ebb063ab9f79d947784a78189d247e626864a5f','62afe454f86713c40b93a806636717befa27c0ff6df5e713ed6fdfb5fbb87e89','407c1d1aeb8ddcbdfc0282b284226444e9ed408d93ac2ff9eb4ee808eb1d64cf'); -INSERT INTO blocks VALUES(310405,'4f6928561724e0f6aab2fc40719f591823ca7e57e42d1589a943f8c55400430a',310405000,NULL,NULL,'185780205a9ab241bb0656799fd0d5942c1e3e5854abd1d06573da550b04b096','201c777861cc9d65d17bfadb3fa0b5450766d8eea6d7f3edecc7b3073d180fe3','30268e8682f822afd0fd9132a843b53de1191ef3240f9f2b6bee2f4edca00bd7'); -INSERT INTO blocks VALUES(310406,'6784365c24e32a1dd59043f89283c7f4ac8ceb3ef75310414ded9903a9967b97',310406000,NULL,NULL,'367b9de2313c5f7fce0c2dc2b4a8e2bc059f6881bc924f7315e8e2ca61728a59','8a619709e56386a511226b71417ee7c089b1f0c12a9f48ea587fc17cc50dc18c','a586cdd7f523e5d46fc89ac34bfb1e5b61893ccd19349bdb2cfffb3f724de8e9'); -INSERT INTO blocks VALUES(310407,'84396eb206e0ec366059d9e60aefdb381bca5082d58bffb3d2a7e7b6227fc01e',310407000,NULL,NULL,'2bdbd79575aa2ff52ba0cce3fc1a1aac6120d598a8ab0ff3925e1395e6cad2d1','2881a8cce0539785cf21c8ff5b3403a908de84b490022010fe74ecad0329d1e2','cc87ae0c7f741e7e6cb740a683debd47608bcd3ce52775fdadb218a6a5e97894'); -INSERT INTO blocks VALUES(310408,'4827c178805e2abae5cb6625605623b3260622b364b7b6be455060deaaec2cda',310408000,NULL,NULL,'fcd0edef8c4ae9517a6e793a2742c598de38c122829b7a7aa265310417ac92c3','c3b02641b5d7096e86895f50bf2081972b2982e8e9974d85f3e24266dfe86413','e58d1f3a536cfe53ed57858ae83feec759d6dc41400167c883afd09dec66d1fb'); -INSERT INTO blocks VALUES(310409,'01a719656ad1140e975b2bdc8eebb1e7395905fd814b30690ab0a7abd4f76bba',310409000,NULL,NULL,'5b663c40873af21ebc721f2689e2c57a2c787fff579c58f033bba75910a64837','ef0a7a61d4e11b40d2da832d05bf813b4b83768f168be5dde74e31a645e76a3e','7cda943c65a449f12680395d0f01d79556907d37afe313a2a4c4087b7e454122'); -INSERT INTO blocks VALUES(310410,'247a0070ac1ab6a3bd3ec5e73f802d9fbdcfa7ee562eaeeb21193f487ec4d348',310410000,NULL,NULL,'93c5a33931b2a33933bc286d6987b34730c0677460e4875d5c032ae86c2e01f0','17b45b42abe3a13b93de019f83dfcf2387c6e4308a712fb6ee142c2c13bd0a5e','2606853bb07c2be6c2fd422688fc0bade220bb8b1fe949a800641c6189b4d5b2'); -INSERT INTO blocks VALUES(310411,'26cae3289bb171773e9e876faa3e45f0ccc992380bb4d00c3a01d087ef537ae2',310411000,NULL,NULL,'8d98498f89619a2e334e9ac69bf8ff37251af6431d9bb6d1ea8bbc404c5e560d','823764f461b404119c9eb74ccbd198f9dde8037e64efe2ccea54ecf59f4734f4','30d6c058a9ae85520058458703ece1aa3bd61beb38c90d3cffc0b085eda73537'); -INSERT INTO blocks VALUES(310412,'ab84ad5a3df5cfdce9f90b8d251eb6f68b55e6976a980de6de5bcda148b0cd20',310412000,NULL,NULL,'a16a650c4b63ed783e7229980be1177da867c188a5039ed5c58b9717f6ccf634','4de68d2f1f9ad13c5df2cdefebc231ad9f076bbff81d0f768b11f39391c5eeb4','1f54d00dde511fd50caae4edfcfdf111731fb54c229729cab1b897f56bbc6642'); -INSERT INTO blocks VALUES(310413,'21c33c9fd432343b549f0036c3620754565c3ad99f19f91f4e42344f10ec79bf',310413000,NULL,NULL,'768577c1a7c2cf2cc19cd8dbe823f1bdb8a222daee4c7ac7b5ead6633040c283','37ff14c5685e45eba94d71e2397335944527befdec378aa655aa9be55c01dd6f','9e14ec39b7067c3dcbdc93fee615336f8aac09b9c2487f4a9c4a14acdbec3d1f'); -INSERT INTO blocks VALUES(310414,'8cff03c07fd2a899c3bcf6ac93e05840e00de3133da14a413e9807304db854b6',310414000,NULL,NULL,'906c491f164877c31002da41233c237d0d4a945a0072406a7b7d13df74be7eec','4a6befa5c96579cdf70e3fbcf681a64fa141e237d8146984699315a7e4a9bd05','3102efc47982fae4e5ea738fea10880732e468cec4c0d34607d6c44a65071da9'); -INSERT INTO blocks VALUES(310415,'dd0facbd37cca09870f6054d95710d5d97528ed3d1faf2557914b61a1fc9c1cc',310415000,NULL,NULL,'d27f99b4a67dfc910d3b932f97b7299779f245e95f871140d3c90f13cc6e506e','a1d9c2c74127699344c2977042773422409d354fc393f199fca9662868afa844','2a2f05f8157042b1d31678574bd5f1d8fc2685364cbccf1442163131c75127ea'); -INSERT INTO blocks VALUES(310416,'7302158055327843ded75203f7cf9320c8719b9d1a044207d2a97f09791a5b6b',310416000,NULL,NULL,'90fcd04c508a9821e0ba0ed36cd7cfadd1d3c95116e3f52ad69f98d3d14de571','b87dd90386307110fbd1b2ffee32fde1b51d5d6a798335f516cf1b03f7821b6f','ff299c30f5cd5422433733a99272e07df0e9747337451d19e30957a7d3873c9c'); -INSERT INTO blocks VALUES(310417,'2fef6d72654cbd4ea08e0989c18c32f2fe22de70a4c2d863c1778086b0449002',310417000,NULL,NULL,'19cbb26c6d24df5b110a5aae9b53a911a61b2086dde926273a1b0f66c1049e6b','53115a4c67ea4350e078d5079edca376d41a13ef7b3bb79ef2c2776e955cb410','48f64d3610f75e115ae09353fd773726e42538c8812e06328c9e64a4e6e4c8f6'); -INSERT INTO blocks VALUES(310418,'fc27f87607fd57cb02ce54d83cec184cf7d196738f52a8eb9c91b1ea7d071509',310418000,NULL,NULL,'2dc971d2db4e92e2d5dcef124bf9cdad33c41a71d6ae3db80297cb2257911f0d','7a38fb4e2a8ff06135c3112016e39f4b48a6a22faa9dfef2ae986e2d15c9569f','b043acaef70a324b0e4d8b5c18c8f44a19b3de90a75bcd3fb85d9279cbb05ba2'); -INSERT INTO blocks VALUES(310419,'9df404f5ce813fe6eb0541203c108bc7a0a2bac341a69d607c6641c140e21c8e',310419000,NULL,NULL,'7ad2bf141622a0db4b27b1f4dab4857d1595e3f746a4113992850a680ebf1f37','c16d243da8ce0411c52ccc06bb14dad3cf97a92bca609fde6b7e52b1d8b56d3f','1eed60267cbd4cbe165cd950d5e45d48823ae7b1ecf7ec40cc5738d98e8da1f2'); -INSERT INTO blocks VALUES(310420,'138b3f1773159c0dd265a2d32dd2141202d174c2e52a4aeac3588224a3558372',310420000,NULL,NULL,'3602b26268d1bd3fc5f08f170e9767ff07c91f6976a1c342dc6b24f7ee98c509','f909cfaf7326866eb181ac03e274ff80225ec86650997df9c4311de30af791f0','1c59c6b43735835e53d540fe662e0895adfd428250da877b92f50cc68f5a9539'); -INSERT INTO blocks VALUES(310421,'71fe2b0e02c5cad8588636016483ddd97a4ef0737283b5fd4ab6ea5dc5c56b9a',310421000,NULL,NULL,'1c1facfa3852b33c173a08d06450335a2b230541c60973a154e8dd864f3c3c8b','48d24440f8e6c9e685d9cca8fd960f2b36afdc4b2c27932f91fcbe984a684aef','a35594d1962e44acd9ab24034e670b39e804217afa6dd21e0069f843ab34399e'); -INSERT INTO blocks VALUES(310422,'cd40260541b9ed20abaac53b8f601d01cd972c34f28d91718854f1f3a4026158',310422000,NULL,NULL,'e788123aefd1129554fa2c166dbd06ce68f913730183ca73cf248c1f5284eba4','492621c2779d6ce8735af4edfcbfa6fd2f16a2392af9ad7432f548b729870b6a','5ec857431d1c6fea510eb07fecaa4f11aea6dff84afd322cef03636e253563a8'); -INSERT INTO blocks VALUES(310423,'6ca0d6d246108b2df3de62a4dd454ff940e1945f194ba72566089f98ad72f4db',310423000,NULL,NULL,'ad445e5351af8739b2f74cbba8b44201c20ab55ad1db064402614fb97f35c375','e756d4c1d37a6ea4b35a3586653771087a4c43b9cf03daf8732a96aed3f8b512','ddfd8b1263958bc7f88460fddaa52356ddd6e3b6b21cdac6fecb967306fb8eb2'); -INSERT INTO blocks VALUES(310424,'ed42fe6896e4ba9ded6ea352a1e7e02f3d786bfc9379780daba4e7aa049668ad',310424000,NULL,NULL,'e89872ed802fe4421844882958fe6384cf21a85a6dcf10db761e2bb4a77ed24e','454a55cc3bfffbf8444b47eee810959b4f509b36398ae39e999f32b0203e5b0e','05fe6284f178561567ebb95209b46ade9aaa26377d42f6091ce61b6d3d2cc863'); -INSERT INTO blocks VALUES(310425,'73f4be91e41a2ccd1c4d836a5cea28aea906ac9ede7773d9cd51dff5936f1ba7',310425000,NULL,NULL,'29e595e9ac7717013cfc8d12255496192234abbddd8a66762a5eaff0c49f3750','5c6dae63d57dd0c60ff61f569c7e7e23c7dcfc447aff11865e731a7cd35d9a14','5b89713f019bfd8bfaa90481728a394bcc25a95458af077394615f58a8211cc0'); -INSERT INTO blocks VALUES(310426,'9d28065325bb70b8e272f6bee3bc2cd5ea4ea4d36e293075096e204cb53dc415',310426000,NULL,NULL,'9b9509ce7b7bf380f4d030604810a755c71fabe27152be990997a6a9db37ff15','7c7ff44c6e932b79f3ba715c6f8cf0e6ee17650a2ddcbaffabfb389528fd736f','f63e41921698e38fd6d82e338c59e443b35fa1123b276b4f3111644443c8f9b4'); -INSERT INTO blocks VALUES(310427,'d08e8bc7035bbf08ec91bf42839eccb3d7e489d68f85a0be426f95709a976a2a',310427000,NULL,NULL,'f1b834e2a380f1b9a78c592acbe78ec809220c620e15f296ab8d7ecea6cd392e','b3d932601e711b6313f7a30ecbde263d33c2afaf08c744003ddebc6dd8581fd7','3820ef4bf1393dc7c09680a1e2f22945f757ce5f476a664d6e42d83f0acb9dbd'); -INSERT INTO blocks VALUES(310428,'2eef4e1784ee12bcb13628f2c0dc7c008db6aaf55930d5de09513425f55658a2',310428000,NULL,NULL,'9e963a17fbc4a5c20d48094f1459959033520f92d7a8bc044b71bbffb8dd173d','24e96d6985d2467ac0abb67634fa1dd40bf347eb76a2e9f1f63de03deda50a9a','b64fbd499d6609c496e265032b7a460be6fb2db45b3025b962f6414c313a6dea'); -INSERT INTO blocks VALUES(310429,'086bfbba799c6d66a39d90a810b8dd6753f2904a48e2c01590845adda214cf8d',310429000,NULL,NULL,'ac8cfd965b9c53f32731a3e0fcdb6df5746d646b02c88b5201a674125e37eed5','de4ee644e224ee40a6e48f55d0e1c5b2abdaa0a707c3c18ff801c0edf5f505bb','e513fd17b91936ad55ae7d79c67b14c1f6e91c43dac50b1a9bae26fb46efc23d'); -INSERT INTO blocks VALUES(310430,'870cf1829f84d1f29c231190205fe2e961738240fc16477c7de24da037763048',310430000,NULL,NULL,'33654e32dfd41ff3a5744b57fd2483a08a2b4729c18ca54c3ac5d95a1bf0ef21','c39eedc9c189f70ed959451d7bdf5e837bdffc4dec9eb4ff238729d38cce940d','9f48ce497db1c0c73ed1fb48d36c4bbf5978a5084d1fd1cdc0b269e5ab3f5a16'); -INSERT INTO blocks VALUES(310431,'20b72324e40ffc43a49569b560d6245c679e638b9d20404fc1e3386992d63648',310431000,NULL,NULL,'ba8837c811ae87981cc37cb49438d958fa58dfc5a95824040f2fd088465406d1','2ab6cbb8716a59d966ea41cb81fe11e76512b6941e534fc7534d5ffc12757d0f','1b339e805b807cb76f53a6b8d2b06cfd7ff115430af60f900435d4a048fcd98d'); -INSERT INTO blocks VALUES(310432,'c81811aca423aa2ccb3fd717b54a24a990611365c360667687dc723e9208ad93',310432000,NULL,NULL,'7864019cb0cbbcd895154421183d6acb932b1d64441103b913d52469f656655f','1d36faf45d32e36944e5ce57b060cde1eece44d917c491efdc98517d5f257e3d','f81f8673327e7a0ff705743aa4301e3d1da511cc2399d89e2ad2ef8f77ace1b0'); -INSERT INTO blocks VALUES(310433,'997e4a145d638ad3dcdb2865f8b8fd95242cbc4a4359407791f421f129b1d725',310433000,NULL,NULL,'a6da92ef0df7d092de09f2f8d2c99ff65ad74e2a0bd2ea25f8335614372f5279','6699acca5161e69474064bc65af80dcc7969241e42106d43352fd6e4b651adda','1ab58de64f514daedd11696020180957a11816344a508e3169b36838faa26aa0'); -INSERT INTO blocks VALUES(310434,'61df9508e53a7fe477f063e0ff7e86fbb0aef80ff2ddedc556236a38f49ac4d8',310434000,NULL,NULL,'e288db28ac6a42822f85fd042f65b57378bc6cc2f8616edfa88143d7b1c9ddcc','49231a538de6497e93f8c6b21f48a6c5694db75a1baaaae7f31670743dcd6a37','90217398765aa350bd36fa769f82d00f08447823e69514b483ef243b0930b280'); -INSERT INTO blocks VALUES(310435,'f24cf5e1296952a47556ac80a455a2c45da5c0dc2b388b51d235a3f741793d5f',310435000,NULL,NULL,'e87af314e8d7a5f2315ccc559d7c2255c008ba63aff017696201db69344d423f','4e55adb90c1a5ab2989a5969f701b5458218ec3bbf957e3bc73acf2d7cab8171','6927c224e07937d256135d621c6e4519904fcf64852dda45b8a83c4743214b80'); -INSERT INTO blocks VALUES(310436,'a5e341ba92bdf9b3938691cd3aab87731eba5428bb61a804cecf9178c8da0c19',310436000,NULL,NULL,'82327b93bd3ffcdf797bc2f6470b9c8c5101e54b924ec5f141a31356aa8865c7','6dea3d8b96087a7d8486244de73a00933d2907ec07e0a4196b0cf25a8d4783e7','e519aa93a3e78050d29e58e3fec3bea0a201f8fc3ca2b7a6f61a6c33a1e9c3df'); -INSERT INTO blocks VALUES(310437,'9e18d0ffff2cb464c664cefc76e32d35752c9e639045542a73746f5ec2f3b002',310437000,NULL,NULL,'70d86f9ef8df495474de06b94e1857693c73d9ca3528356b82553a52fdce0dda','8dff997ceb062b6d40f2344bf50f613b91f532907889fdc871ebb9280276bad7','c690e3e9850506b60f6fe70842babe9dac8b8cda7bc3b8ac29e594043787ad76'); -INSERT INTO blocks VALUES(310438,'36be4b3470275ff5e23ed4be8f380d6e034eb827ebe9143218d6e4689ea5a9fc',310438000,NULL,NULL,'44b90478e32373205462f0fb212da636b31db6dfb99a2b56923beb97a3a64722','d20e153bee78483e1c806a1f04a07515d2d63a5ffb0c3f20e20a3b804aa4c2d4','2fb16271511e413943fe0ffb58ccc7e6b9c611fd4bbd9fc873a7b5da71db6923'); -INSERT INTO blocks VALUES(310439,'4f2449fce22be0edb4d2aefac6f35ce5a47b871623d07c2a8c166363112b2877',310439000,NULL,NULL,'66b791b9deb7d2fc8b075f41d712e300ffa9c46ca9d6f4e7cec6429ca6a65163','adee3f57d0b0e321cf086dd968fd1f34ccba9d587c6129ceb4d275730625e128','e135f6cc544c5b3c4cbb87ee5f06a9b0a274e947253ecaf0d3c9bd0becc27ee5'); -INSERT INTO blocks VALUES(310440,'89d6bd4cdac1cae08c704490406c41fbc5e1efa6c2d7f161e9175149175ef12a',310440000,NULL,NULL,'5baa10e1659182ba4511f87f08deda38d5de3501c63efd376604cc199140d27c','146729916823772773712688e19487a3bc762330b41cccf269276f7c29051cee','1843e5f8be3d4383179fac87df7a0ed90041b9d996d3fa5325cbb9dd206dfc92'); -INSERT INTO blocks VALUES(310441,'2df1dc53d6481a1ce3a6fee51ad4adcce95f702606fee7c43feda4965cf9ee15',310441000,NULL,NULL,'2d490229fead1b15a8350da7bcc83c483dae06e4a2f574c6e8fde248acd449d6','893bbc852be6773790420d61e81293c2c8da6f8c866aa40a3352f92febdb1b46','be76b185f74f5f36836df80df4912ea70d5a4c3b8489f026766dad709471e05a'); -INSERT INTO blocks VALUES(310442,'50844c48722edb7681c5d0095c524113415106691e71db34acc44dbc6462bfec',310442000,NULL,NULL,'a3728bacfbdd289b7af24248b9bdacd5643bd5412bb993f5380278631eabb9e9','4ce5b5e387775c726eb270051ba3d9aa04de5a9192bae0e0b2d58c85bbc31ffd','413859f783f7e9727a844c5205b944bee7b4e420f7417d7e9cb05eeed0585700'); -INSERT INTO blocks VALUES(310443,'edc940455632270b7deda409a3489b19b147be89c4d8f434c284e326b749c79a',310443000,NULL,NULL,'d829da764f6397b22a6b97ef396b363ef2cf071990df2dc9c0d03806db6a46b5','2469f62b60a06221d180955ec8de95fd024c6841edead8814b0791d86a170f33','746ff4d1cc286d7f707c576cc40fd556fbb38ad3948b7c61dff2fd13758da8fd'); -INSERT INTO blocks VALUES(310444,'68c9efab28e78e0ef8d316239612f918408ce66be09e8c03428049a6ee3d32e4',310444000,NULL,NULL,'ef53249bf0f13e1f2073b815c8d8da3ab744b6d277b29ddbc0bd68bd006af34b','6a9893c9853db945cd2a54bfa2220a26c5d47a0a5b7b7625626d07c4fbf07305','99585f09e9bcd7b5d969dcbeb7f3b58258f2e2fcf1b470d87690de2346b31c83'); -INSERT INTO blocks VALUES(310445,'22a2e3896f1c56aefb2d27032a234ea38d93edf2b6331e72e7b4e3952f0234ef',310445000,NULL,NULL,'7e731cda90932b2b4844abdbc3ff60683173104e6c72ed81c65d9a17fd4872dc','3791d19b786372e99e843a64cea73c347693c9cc43d189b4dcdf8696ef8a7a74','87a69ff53bd04bb834eba8807933a31933616a50e1d18e5605e93b06b9bfda79'); -INSERT INTO blocks VALUES(310446,'e8b0856eff3efce5f5114d6378a4e5c9e69e972825bc55cc00c26954cd1c8837',310446000,NULL,NULL,'db55bac8025e95a567ba984f36dcb09357aa3e9b8706bb594e669b628d4e7204','9794bfbe4e87fd7c5ca20643a63c5ddf8ab02589a6b02c363712ded35aa63c19','6e0454ee0801dc86373629f4fc087c12638ba62490fec3042a678b32e0e6b57b'); -INSERT INTO blocks VALUES(310447,'3f4bc894c0bc04ee24ed1e34849af9f719f55df50c8bc36dc059ec5fa0e1c8a8',310447000,NULL,NULL,'5cc4fa447cc291ffcce7be3c4f8fc70041bf8af5c2dd591136d4a449095d2570','a92b78fe89c4dcc3fb6a3f237613b9bf107cdac0806f803be02ae7ce09cefcaf','fa17d0421b12fec316bac14e662d39ccae9d7e92e8794a6d89e95994f56d117f'); -INSERT INTO blocks VALUES(310448,'6a6c7c07ba5b579abd81a7e888bd36fc0e02a2bcfb69dbfa061b1b64bfa1bd10',310448000,NULL,NULL,'ce49854f4493c163bc891888f920fbc6dd8855c30870beb757df69b33de52633','55029c9c957499ecded788d5be49ca498ca932891aab365f992a36317dc658b8','a336df80b73368b66166759f44c0fcc6020fe95a0f8bcf4dd811bdc42287e178'); -INSERT INTO blocks VALUES(310449,'9e256a436ff8dae9ff77ed4cac4c3bfbbf026681548265a1b62c771d9d8e0779',310449000,NULL,NULL,'84557595cf2067a95924119b8ed5fea114acd9ca1b0df4dbe4ae5181a739b5d1','9c89b6a9d31edaf6443e20ad8778575c75322b3eace427f62c5943d892e3c1ca','b5edfb94c5caf9faa037a209487ce42479a97061bc9589d596fa2a5cb95b9eb6'); -INSERT INTO blocks VALUES(310450,'2d9b2ccc3ad3a32910295d7f7f0d0e671b074494adc373fc49aa874d575e36a3',310450000,NULL,NULL,'0e3b252b73fb652f904780da9fc59d1081d712337a9b15cf1a56ea72fbe96c73','f6066b795d0e3dcbed6141169c3f7627c8773e2b444fb9bb6564c56139f9def1','2c54faf8490940f9286c143e065e368cf484bfe99a1bdcd7b4cd481ff8bfed2a'); -INSERT INTO blocks VALUES(310451,'55731a82b9b28b1aa82445a9e351c9df3a58420f1c2f6b1c9db1874483277296',310451000,NULL,NULL,'790eccd04e24e5f10f843d63bbdc1538cf1aabb0e8e6c862104be0ef845f603f','2775b868e04a44a5f4d7b85df39a36bdb6f512442882d340caa280b50742d1f4','6255a353d31d30828436f3dfd34094b154d9be24e09f07a4fd533ea8129f21d6'); -INSERT INTO blocks VALUES(310452,'016abbaa1163348d8b6bc497cc487880d469f9300374a72ecb793a03d64572aa',310452000,NULL,NULL,'30962129b060b63050fe8f249592587d74cdabc4ebb5680230a280da880c8586','d2ea7ae3238ca82862ed3a8e839e041955157a5629e26ed145d8c7608c03e424','3a733f72594133ffb1eb46cd8deae7efbd0eaba2bc96bfdf64a75aea0e3157cc'); -INSERT INTO blocks VALUES(310453,'610be2f49623d3fe8c86eacf3620347ed1dc53194bf01e77393b83541ba5d776',310453000,NULL,NULL,'56f4aa1086d8985a00cc295cf9618d976e69ba426b0c3d103bea6b47b58e4355','ca605933771ad886761ea826a9265a8783877967e24ebe25a79f8659d4604fc5','52d53ef0f37156db2e5e3fc11caab09029c5bf6037a8cec23b78dfcf18fc142a'); -INSERT INTO blocks VALUES(310454,'baea6ad71f16d05b37bb30ca881c73bc48fd931f4bf3ac908a28d7681e976ee9',310454000,NULL,NULL,'38d14a206003b812cbaf5f200235dbe12aa6a674e5f3379cb186a781cb5a5654','435deec1f48e8091019224d553091beac9cde9e6daaa653a21741e5c14e3a572','df989b51acfeeb983b4e6293da9c1ca0d5f341e688960fea82fc58f35a923fb1'); -INSERT INTO blocks VALUES(310455,'31a375541362b0037245816d50628b0428a28255ff6eddd3dd92ef0262a0a744',310455000,NULL,NULL,'b2ff303a67c05bc12fcdfdb774ea4ddc690434c3371428b3416d38105f265f28','df5571e3a323a80468d2507e2f9a7e061d48e1ad10b41bcb5ac4fb89b2ddb7b5','a6d21c608406a410ab5167caf3bb46b5c327c20a2598872b86873dc30e365007'); -INSERT INTO blocks VALUES(310456,'5fee45c5019669a46a049142c0c4b6cf382e06127211e822f5f6f7320b6b50fa',310456000,NULL,NULL,'6cc16b442fd7758ed7bae9f50367fa60debdb5d81bffc5abccda044573aeaf15','42c717aa271ed07c28e8d1fb5502689e53c77348527cb160a7c8bf36bf1e4541','f52382eb7004c7f566dcb2a80860ac1eebc80103c28b071278ebf1a6b8c75a9f'); -INSERT INTO blocks VALUES(310457,'9ce5a2673739be824552754ce60fd5098cf954729bb18be1078395f0c437cce9',310457000,NULL,NULL,'8fa0401d245b1b1e8b40760a54f331564d8597e242462ec412878e36a9b06800','78e976a93fcaebe304a99823d7f56ccd35b305c426eeee9f89ef6c37f36bc95b','0f2e9232d22cc417ee55a04474395e7d7d040132d5c915eb1d053e182b138522'); -INSERT INTO blocks VALUES(310458,'deca40ba154ebc8c6268668b69a447e35ad292db4504d196e8a91abdc5312aac',310458000,NULL,NULL,'520f92700e31b8a35260a280ae11bf8668b0e09d34795a9d88678f2977e19f7c','9efde60c1de6829b08c6dd1ed22b3772cdaaad133695b6288bbd88e603914179','c26d769bf9ab8b91df23f6082fc5cf5ceee53d69af91a7d84e848162cf314c51'); -INSERT INTO blocks VALUES(310459,'839c15fa5eea10c91851e160a73a6a8ee273a31ab5385fe5bd71920cbc08b565',310459000,NULL,NULL,'d7f728b78228a914b8767a6caeaf2267e9dbd50490a27f6c23bd96060eab8ee0','f316b8df521e3d99a0155676da10f22ee0693638987938203b583ee4e09f7a65','a5a3bd88b44675f47aa1705a4f311c18f9d2b2165b5215f51ea1173fdd32d351'); -INSERT INTO blocks VALUES(310460,'9b5f351a5c85aaaa737b6a55f20ebf04cafdf36013cdee73c4aaac376ad4562b',310460000,NULL,NULL,'33c2b4c6d22888448a2458ff2ce6a1cfae5e858acae2a57e4cc0232980f8fa4a','54c04c407e35921e4187449898fb0f16f06d994cbfe5bda52de9a14b617c6fbc','b4b79889fd3160b1431fb7f5a349b307417978f7f8675c80e4dd1e628d44da07'); -INSERT INTO blocks VALUES(310461,'8131c823f11c22066362517f8c80d93bfc4c3b0a12890bdd51a0e5a043d26b7b',310461000,NULL,NULL,'22426912d3317922912326da552af284677c9b76b6416b6c056668f27ae4f19f','113fd87450c6cbf2d09d1be24f4977e75d7bccb2a97ddac22bfc96f1519a3004','807e0c00ef1f82882222eae619ea3ba7e75974655e54248bb1a1fbf03f543267'); -INSERT INTO blocks VALUES(310462,'16f8fad8c21560b9d7f88c3b22293192c24f5264c964d2de303a0c742c27d146',310462000,NULL,NULL,'74225b62e696aaeafbd4d6db40b41081c7493d9cc44984729d8619ff9450ce32','da1470a347e29dac9b817636441a316f307879a4691c566ea65573fe5afd9102','cac1f65b6825c2c404e51ad2e9fadc05959167fe307a52825c0e3410a2aaf87e'); -INSERT INTO blocks VALUES(310463,'bf919937d8d1b5d5f421b9f59e5893ecb9e77861c6ab6ffe6d2722f52483bd94',310463000,NULL,NULL,'b970979bfe0d44ae2f21f7d98bdcc4ae37287b93cad9fa51f32a62337ceba0c1','eec2943fecca426033e41929c8eba01b3578e9678fe9580e60a36c1bc3a68f84','ecd2bc297c66b0a442ef0de29ab2049f613fe099e639c42cd251440f4aeba45f'); -INSERT INTO blocks VALUES(310464,'91f08dec994751a6057753945249e9c11964b98b654704e585d9239462bc6f60',310464000,NULL,NULL,'00007a158b003fcca20c9fcaa8d73a556f0206bc9a7ab3e5c566ea1bda8648cb','a2d52f28e9736310150dfe4ffa1de76982d6ae53b13219ab6dd63b7d61aee8e2','b316cc77dc508c8187e44d9904a96d039d7d57786ab6ba469f15948864c65b61'); -INSERT INTO blocks VALUES(310465,'5686aaff2718a688b9a69411e237912869699f756c3eb7bf7c3cf2b9e3756b3d',310465000,NULL,NULL,'09c407870b056db90148a9e4cb8ada003898ff28c584bec6a5be90514758a851','6f697514367c7db6c79bb38c6ebc9c75391a105ef2a549ca26bfa791d6d75ea0','454947ff727b0ad198a206cf883906a98cde006e8273c8ef29b965d1a428e950'); -INSERT INTO blocks VALUES(310466,'8a68637850c014116da671bb544fb5deddda7682223055a58bdcf7b2e79501fc',310466000,NULL,NULL,'23bcfdbb44d8fc2ae6a86ea073ab080158014f04516b256a70d846399e7383cd','2ab1ee84837b0168059b0f15ec0c53d6936daa4af908316677d91e1ac92f0245','654d2afe7edbcfe164dc4d4362c452802e5665ab3e32287997337dc4862a1a1b'); -INSERT INTO blocks VALUES(310467,'d455a803e714bb6bd9e582edc34e624e7e3d80ee6c7b42f7207d763fff5c2bd3',310467000,NULL,NULL,'a43abeddb61ad99d57f208cb0c6cc3e0b05a200009e6d90641a2bc7aac707adf','bbb745a74368cbbb197cc4e014b58c11ff3753c6fdc4a347ca3d09afadacbab0','f2cf06bca7c41faf6ddc31d2d781b50f365808f3fe124349ecae0d6b9802e065'); -INSERT INTO blocks VALUES(310468,'d84dfd2fcf6d8005aeeac01e03b287af788c81955612375510e37a4ab5766891',310468000,NULL,NULL,'fc909facd6ba38fa0908fd49a6e2f25bd8284de5265ef761497b8a2d595344b3','856cb39b89535d6409b2e95efc30606b54f9097cfaf3de3899b937792859e911','947c9e48d1441d177adb8c58978cfbb0ba9b24f8c5db01603b2a2912c2735f90'); -INSERT INTO blocks VALUES(310469,'2fbbf2724f537d539b675acb6a479e530c7aac5f93b4045f4356ea4b0f8a8755',310469000,NULL,NULL,'09f0d1c9bde8cdd63544fbb5eab46c2954654d32f3736f9975cf860588aa65cf','4a0385bea6a64441bf0cdf873a256c9d0c81ed168921b8f557ba42ddb717fc2f','85d7e8d57c66094c882cac8f9df6c158b08ccdb5f5ffc9532ec2e7d724777466'); -INSERT INTO blocks VALUES(310470,'ebb7c8e3fbe0b123a456d753b85b8c123ca3b315da14a00379ebd34784b28921',310470000,NULL,NULL,'41832b12459e778621b8f576e597b9f639390338605b30e5be28423b016b199a','d19e14fe6eedddb69a9fb12ef1decf59ed9af236e864e1149ca629d5e9efa6c0','84b321e4e3968a082eedbb79f47726ac223606dc1e4651c9179faeef007c9d89'); -INSERT INTO blocks VALUES(310471,'fc6f8162c55ecffeaabb09f70f071fd0cb7a9ef1bccaafaf27fe9a936defb739',310471000,NULL,NULL,'bf701017153742cb597353349c90ec66f790f222dd98d617d98a0117f1de3274','9de099424725ade78ff256a2890f0dafe8bafe36002c3f06960bbbf3853597bd','5eb25c9c72d1c997ee201c87262d16288152fee9d515ea8873d4e607cd71a86f'); -INSERT INTO blocks VALUES(310472,'57ee5dec5e95b3d9c65a21c407294a32ed538658a6910b16124f18020f16bdf7',310472000,NULL,NULL,'2a162bbd5a20f89a39156995658fd0c4715881bc130922d0edf95b60ece60b9c','6b285a619970b68a21ab77556a6d9e3cd600bb8b2fca93b72027c62b96ebe75a','f08351bce87a6f94ef278cc9844ef6cefbaba427888634d748ab2365c614d79a'); -INSERT INTO blocks VALUES(310473,'33994c8f6d06134f886b47e14cb4b5af8fc0fd66e6bd60b3a71986622483e095',310473000,NULL,NULL,'1ce10996ec9e37d8ddc204f038542c6781da88d2d45bae1952a88ab993b81e88','c3c43c999494c3dbfec7cb3f5acc42cf6f958b0780aa15fc74dc2511ee4c717a','af336214162bc6b839eb7167adb0b9c9ecdbc5960c532a8837847c2cd74e9747'); -INSERT INTO blocks VALUES(310474,'312ee99e9526e9c240d76e3c3d1fe4c0a21f58156a15f2789605b3e7f7794a09',310474000,NULL,NULL,'5ae424c24ca30aad5aca8298a13ae9371f55b15bc789c7731d833c6e7c7cb04e','82d23939db01e3636c6ab7c9c6f584ca3bcb0adde02c0752c95de310d63e46a1','645dc29ab43ba971453e1b22288443680010f266e89024ce6f8790b031347d47'); -INSERT INTO blocks VALUES(310475,'bb9289bcd79075962117aef1161b333dbc403efebd593d93fc315146a2f040eb',310475000,NULL,NULL,'b9b257efe76a36c340629ceb265822dd10449a08eadc69667a8ea05af5c052f8','9cd0bd09a5d26d4073537905108433f8291d1dda717fb84282de462fa1500e2f','7ab319581051eb1352fc20bd63734b48c44f8f77d234091856e1a57661caeb2e'); -INSERT INTO blocks VALUES(310476,'3712e1ebd195749e0dc92f32f7f451dd76f499bf16d709462309ce358a9370d0',310476000,NULL,NULL,'070c06b36f3a77c04fb4bcc3ab1045e95f198f3f970846e59c35db0d03cdaf2c','ae366fe8193cd3c629805348e5d5e06e34666174592506e50bf420be6885ea89','b51d0021e6ebfc2f74566f014984311d5ee590c5c2d8eb91d79e321c716c47df'); -INSERT INTO blocks VALUES(310477,'7381973c554ac2bbdc849e8ea8c4a0ecbb46e7967d322446d0d83c3f9deab918',310477000,NULL,NULL,'4954596dd44d112fd0407c215be3c9534a348d6f708ae4a1e66527d1ac2830b1','183cd8f34601182c048a54b35fd9005e18de6c2a8bcd60ba90d2061d842b8c7b','016cf95f5ef186b54858ea4801da021894563c1b14d071d313b2f879996c12d1'); -INSERT INTO blocks VALUES(310478,'c09ee871af7f2a611d43e6130aed171e301c23c5d1a29d183d40bf15898b4fa0',310478000,NULL,NULL,'d9cac2e29863569bc96aaf022437906a534968a17bf965c54bf59931cd92e590','e6c44a25aa534d92a958e71892fd17171576a0bee6906188969999d3d5f0ea2d','e963f73fa3c84d27a8d061890564ba5bc36c7c5bce4bd0ccc2c19a7fd34abf93'); -INSERT INTO blocks VALUES(310479,'f3d691ce35f62df56d142160b6e2cdcba19d4995c01f802da6ce30bfe8d30030',310479000,NULL,NULL,'2e48a89a55b6f368745e1c022683e93c20bdd920011518f18fd936f2190ac5e0','4eca0ec6a908073e1f8c33d892e8710b99846e0615194a9649ff6240e038794d','8af23b95499afb3e32fdc640eff0bef799f9b1bce7d3ab106bff09b514dc4afb'); -INSERT INTO blocks VALUES(310480,'2694e89a62b3abd03a38dfd318c05eb5871f1be00a6e1bf06826fd54d142e681',310480000,NULL,NULL,'aa54124d86e74bebd14ea481ac2a5a5186236ffe214747f1af11ac370565525c','573ab72a761fca920bb30b326cdafa359b25fab5d60881433db23dfe078c6e15','72499c23c9910f40c523fa9d358bef815b83bad3513357e89027517b3cd98472'); -INSERT INTO blocks VALUES(310481,'db37d8f98630ebc61767736ae2c523e4e930095bf54259c01de4d36fd60b6f4a',310481000,NULL,NULL,'fbbe1266bb773e5a3f5b48e82566ff75bc74bfea9424f81f670952565db15c59','f23cc99c10d4249f7e82c2495feb2e2936af4eb7aea97320cac79bb58b4d2090','71fb1334a443cc2b9f6b3cd268d2f4d6c010d4b7ce28a64fca88e16b7370ab41'); -INSERT INTO blocks VALUES(310482,'2e27db87dfb6439c006637734e876cc662d1ca74c717756f90f0e535df0787d6',310482000,NULL,NULL,'bd28a97e90054319c4c301c3e99d68aaa5e1bf5a145a8f2c4529040bb8137209','666eb4e0c4fa24ef3af9f7b17c9ac2f9ef530ba77b8a2599444c64704a26c678','e42808663dbeb7fb489d9be0ac242316fb6c63c51cbb0d412f3cdb0ab1c2ecd1'); -INSERT INTO blocks VALUES(310483,'013bac61f8e33c8d8d0f60f5e6a4ec3de9b16696703dea9802f64a258601c460',310483000,NULL,NULL,'fbbeacec99c9ed99a7fc37cdd5673fe8bdce08eba7fcb25b696e262af29ca5d8','400287028df5fb8f313db35bedf95fa863f0de11f9b8386c7245613387aa3e0d','f43a6fba7b7be41943d46060d2482130af2f673d9ddcb6da5fd7f0b142945f77'); -INSERT INTO blocks VALUES(310484,'7cac2b3630c31b592fa0497792bed58d3c41120c009471c348b16b5578b3aa2b',310484000,NULL,NULL,'310bc7c61c1325ee3f97e888658fd74e1fe4adccef4924abb6978150fe6f3dad','7a5198442a1005e4730c979c433914561d23e2ee572c20104b163786b14944f2','560f1904b436ef07d19d2321be9e7608697d9223f045a74241743cbed742d417'); -INSERT INTO blocks VALUES(310485,'eab5febc9668cd438178496417b22da5f77ceaed5bb6e01fc0f04bef1f5b4478',310485000,NULL,NULL,'b7f66db9ea5838b65286422d0cac262f6b81bbd5a7397adf7b8d85b21354dbcd','069fd63fe9ad0e55767edb6dff81c5953732dcce30e3aa2ace62283da5b8811e','a7689d50ebe654cf0e04b6e1f57673298c8caf8570123db8debd2264b439f645'); -INSERT INTO blocks VALUES(310486,'d4fbe610cc60987f2d1d35c7d8ad3ce32156ee5fe36ef8cc4f08b46836388862',310486000,NULL,NULL,'0f829769e4da773089d7b05047a499db5f6d1b17795d4fba912882caee9813e0','27246d612f84feff6e5a061d193c949af6c1437acb9e69b2272ee36152af0ecc','acd127b9760bfd4cf56445c96f206111437f463d45ddacb4de05c47320c06de9'); -INSERT INTO blocks VALUES(310487,'32aa1b132d0643350bbb62dbd5f38ae0c270d8f491a2012c83b99158d58e464f',310487000,NULL,NULL,'4b4d7a79843342e96e5d9d71bbc49690245b3098be75e7b86f273021d526216d','916fda8dc753b14ba391417ff484d833248ddf45eb3198c31df06f4bfc643c67','0bcd4c3ba27b52370eebe564f3b7abb2bf7e3b659d1aec3fe72fc37183b309c0'); -INSERT INTO blocks VALUES(310488,'80b8dd5d7ce2e4886e6721095b892a39fb699980fe2bc1c17e747f822f4c4b1b',310488000,NULL,NULL,'2d7e59026ea4c8933e9c7474936931ca49d4af91f9b9985f3c76085fb3a69104','83a5940261b37c4aee43abe70e94380b0692c0828a018f6390df0d070dbfb96d','7a42ffbfed613243b4ec478f130c103e3b5752aae46c755f20c0a33762c7e345'); -INSERT INTO blocks VALUES(310489,'2efdb36f986b3e3ccc6cc9b0c1c3cdcb07429fb43cbc0cc3b6c87d1b33f258b6',310489000,NULL,NULL,'716354a370f344980e98785a444b56b21188bc699e7fbd0c877b6f2fabf35efc','e5d62c71154e8a0f81a521470ff2a72696589d100f71063086220190880625c8','6ef6e3fe07dd6721997a621b6a2ddb8f461f0d89b8bdaf7f5faa13d445fad6b1'); -INSERT INTO blocks VALUES(310490,'e2cb04b8a7368c95359c9d5ff33e64209200fb606de0d64b7c0f67bb1cb8d87c',310490000,NULL,NULL,'906a38f4256f50312891119c99721537992438af85421e317574ce1810e2b909','9cbde7b2c3fa85a09f1a100659a13a41db7dfb9a6d100048ff24dee837fe546a','6997a9533f8bc2b67f623288e944459711c3ed05bbeac97169e08583f7dd2184'); -INSERT INTO blocks VALUES(310491,'811abd7cf2b768cfdaa84ab44c63f4463c96a368ead52125bf149cf0c7447b16',310491000,NULL,NULL,'3114d8091cfcaa9944c6fab49d51950535c4ef269877d58c372ed80b2b472ec6','77c53eb01eeb99a712bb8cc8013fed4dbc918fd3a3dad81717d07cea5d77f36a','61d1f921131c30184a631c159352732bace2366359bd8f335430d85b9503a80e'); -INSERT INTO blocks VALUES(310492,'8a09b2faf0a7ad67eb4ab5c948b9769fc87eb2ec5e16108f2cde8bd9e6cf7607',310492000,NULL,NULL,'98af18583618fdeed545347c013763d068e8294405d265911cc5e1bc420bc740','5ffd5a36e3748d4a2de46184f9b7473dff9da7f461cff5eb2039e86362e1ea25','54e39ac0cee587ff52c65fcc34a6b2b78dc40b310a44b00f02a1f2343a7c8f2f'); -INSERT INTO blocks VALUES(310493,'c19e2915b750279b2be4b52e57e5ce29f63dffb4e14d9aad30c9e820affc0cbf',310493000,NULL,NULL,'29119cd30a4733916fbfd0551506eaa16f7bb1bdfbdf8d17ac4e5bb20d1cb09c','f25deae56ede44d1ec9d4fd282c99b5a5a723230c6ab6fa4126004d5a12bd72f','ddc083f979895849be1e37a4ce77122af621a9db288eb8fd15fdeac4a609ceaa'); -INSERT INTO blocks VALUES(310494,'7dda1d3e12785313d5651ee5314d0aecf17588196f9150b10c55695dbaebee5d',310494000,NULL,NULL,'72d71bd72263699ea9f2b097ad141be5bc394f49d8b0b0a6b2ff6a87b0ee3919','a18a699232e62a58f87c5b1d24d1753916ff3ec1b3bbb2676318f54d7305b5f8','9446af38205016d801c7ca2587d8944021eee0425c9a9eee368c4eb3c27b6675'); -INSERT INTO blocks VALUES(310495,'4769aa7030f28a05a137a85ef4ee0c1765c37013773212b93ec90f1227168b67',310495000,NULL,NULL,'5a7e5a36882466373d576bb5f4ccd1bc72ecaf548b9589baa803a7275a7a24cd','5f582341738669c30569b0a1e7930e128b43b897d76d3441e04a3c6b5cf5e8d3','ad4876ab119297bcc3b86b3cb9bc96c72b74842f2356aa405c4d8f6cb1d851d0'); -INSERT INTO blocks VALUES(310496,'65884816927e8c566655e85c07bc2bc2c7ee26e625742f219939d43238fb31f8',310496000,NULL,NULL,'7ac6121c624b634f44695172761830926afe76bb18c4cc9195773f3a26966941','2f78db67dc720f820dd1eb2422638ae828996f893af843edff0e18c649536e18','2d5dc3d4408cc8fea56feefa35c1f0558761ed3d50c5e0ece61651266e28aea5'); -INSERT INTO blocks VALUES(310497,'f1118591fe79b8bf52ccf0c5de9826bfd266b1fdc24b44676cf22bbcc76d464e',310497000,NULL,NULL,'28c6e92b2299b9cbbb5953f8b7ff3de0fe962d15642ba27e43faa64e1935e819','2802fef5b6f878a4d82b8bdb65c41b91518aa4343c254875ed03fdb3fb9add27','b31594651e8d38353910b63503393f51945452786fef60e198fe4f2a28273f30'); -INSERT INTO blocks VALUES(310498,'b7058b6d1ddc325a10bf33144937e06ce6025215b416518ae120da9440ae279e',310498000,NULL,NULL,'5fe6cdb0828379bf240fad99c68bba34e1889bbc19605ce5c297b82352264414','f5e38f106f3b01c9f9f1411ce6a6d5b6175729ff3948099ab530dcef30f07164','8493ce8a902a7a8862f40a2545e2cac6a4536f11b37437b6b541a6e829a4bdbc'); -INSERT INTO blocks VALUES(310499,'1950e1a4d7fc820ed9603f6df6819c3c953c277c726340dec2a4253e261a1764',310499000,NULL,NULL,'b9fcbdafddd46fdda061f6e9f8744b426b6ca37e32b315df1098cbc7899ae9b9','362e1dca37ace8ff1153d9d0718caad5a6e4abbac810b5ae3dad26566490f8e8','78d740a346a018f1aa02da3694f8d57ef9b531e068a533f5dddf48dab1d0c60a'); -INSERT INTO blocks VALUES(310500,'54aeaf47d5387964e2d51617bf3af50520a0449410e0d096cf8c2aa9dad5550b',310500000,NULL,NULL,'5ffefc7a2724be6bd697796bb82638ec913c5cbb73627153d1a13b48c7a6c02d','230349742d5a3e30b568712a54171da4f71de21d5c6fd353cdc59c6270afdc7e','42dc71a72aceaecf8874b326cf83858cac52f83fb0edc4769ff3aa6191a915cf'); --- Triggers and indices on blocks -CREATE INDEX block_index_idx ON blocks (block_index); -CREATE INDEX index_hash_idx ON blocks (block_index, block_hash); - --- Table broadcasts -DROP TABLE IF EXISTS broadcasts; -CREATE TABLE broadcasts( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - timestamp INTEGER, - value REAL, - fee_fraction_int INTEGER, - text TEXT, - locked BOOL, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO broadcasts VALUES(18,'3330c302fd75cb6b9e4d08ccc8821fee8f6f88c8a42123386941193813653c7a',310017,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000000,1.0,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(19,'a9d599c0f1669b071bf107f7e90f88fe692d56ca00b81e57c71a56530590e7ee',310018,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH',0,NULL,NULL,NULL,1,'valid'); -INSERT INTO broadcasts VALUES(103,'8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8',310102,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',1388000002,1.0,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(112,'510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186',310111,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',1388000002,1.0,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(487,'096883e142a87377d3a4103f4702556e25824f1e23667aceb1690f66e1417062',310486,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',1388000000,1.0,5000000,'Unit Test',0,'valid'); -INSERT INTO broadcasts VALUES(489,'9b1cad827c97c463c2b39cc9d550693c438010ef85a10ee04d3db8699193e906',310488,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',1388000002,1.0,0,'options 0',0,'valid'); -INSERT INTO broadcasts VALUES(490,'9a39bade308462ec65be3c8420a0f2189b1d4e947d4c7950a37176de71de4f87',310489,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',0,NULL,NULL,NULL,1,'valid'); -INSERT INTO broadcasts VALUES(491,'4b233a74b9db14a8619ee8ec5558149e53ab033be31e803257f760aa9ef2f3b9',310490,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',1388000004,1.0,0,'options 1',0,'valid'); --- Triggers and indices on broadcasts -CREATE TRIGGER _broadcasts_delete BEFORE DELETE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO broadcasts(rowid,tx_index,tx_hash,block_index,source,timestamp,value,fee_fraction_int,text,locked,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.timestamp)||','||quote(old.value)||','||quote(old.fee_fraction_int)||','||quote(old.text)||','||quote(old.locked)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _broadcasts_insert AFTER INSERT ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM broadcasts WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _broadcasts_update AFTER UPDATE ON broadcasts BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE broadcasts SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',timestamp='||quote(old.timestamp)||',value='||quote(old.value)||',fee_fraction_int='||quote(old.fee_fraction_int)||',text='||quote(old.text)||',locked='||quote(old.locked)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_source_idx ON broadcasts (status, source); -CREATE INDEX status_source_index_idx ON broadcasts (status, source, tx_index); -CREATE INDEX timestamp_idx ON broadcasts (timestamp); - --- Table btcpays -DROP TABLE IF EXISTS btcpays; -CREATE TABLE btcpays( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - order_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on btcpays -CREATE TRIGGER _btcpays_delete BEFORE DELETE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO btcpays(rowid,tx_index,tx_hash,block_index,source,destination,btc_amount,order_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.btc_amount)||','||quote(old.order_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _btcpays_insert AFTER INSERT ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM btcpays WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _btcpays_update AFTER UPDATE ON btcpays BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE btcpays SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',btc_amount='||quote(old.btc_amount)||',order_match_id='||quote(old.order_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table burns -DROP TABLE IF EXISTS burns; -CREATE TABLE burns( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - burned INTEGER, - earned INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO burns VALUES(1,'6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',310000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',62000000,93000000000,'valid'); -INSERT INTO burns VALUES(104,'65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b',310103,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',62000000,92999138821,'valid'); -INSERT INTO burns VALUES(105,'95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff',310104,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b',62000000,92999130460,'valid'); -INSERT INTO burns VALUES(106,'e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa',310105,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',62000000,92999122099,'valid'); -INSERT INTO burns VALUES(107,'bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3',310106,'mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK',10000,14999857,'valid'); -INSERT INTO burns VALUES(109,'93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73',310108,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',31000000,46499548508,'valid'); -INSERT INTO burns VALUES(117,'27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9',310116,'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx',62000000,92999030129,'valid'); -INSERT INTO burns VALUES(494,'c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a',310493,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH',62000000,92995878046,'valid'); --- Triggers and indices on burns -CREATE TRIGGER _burns_delete BEFORE DELETE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO burns(rowid,tx_index,tx_hash,block_index,source,burned,earned,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.burned)||','||quote(old.earned)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _burns_insert AFTER INSERT ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM burns WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _burns_update AFTER UPDATE ON burns BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE burns SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',burned='||quote(old.burned)||',earned='||quote(old.earned)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table cancels -DROP TABLE IF EXISTS cancels; -CREATE TABLE cancels( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - offer_hash TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on cancels -CREATE TRIGGER _cancels_delete BEFORE DELETE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO cancels(rowid,tx_index,tx_hash,block_index,source,offer_hash,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.offer_hash)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _cancels_insert AFTER INSERT ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM cancels WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _cancels_update AFTER UPDATE ON cancels BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE cancels SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',offer_hash='||quote(old.offer_hash)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX cancels_block_index_idx ON cancels (block_index); - --- Table credits -DROP TABLE IF EXISTS credits; -CREATE TABLE credits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - calling_function TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO credits VALUES(310000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',93000000000,'burn','6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597'); -INSERT INTO credits VALUES(310001,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000000,'issuance','9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e'); -INSERT INTO credits VALUES(310002,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',1000,'issuance','2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73'); -INSERT INTO credits VALUES(310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','CALLABLE',1000,'issuance','4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb'); -INSERT INTO credits VALUES(310004,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','LOCKED',1000,'issuance','e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1'); -INSERT INTO credits VALUES(310007,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000,'send','95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef'); -INSERT INTO credits VALUES(310008,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'send','8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc'); -INSERT INTO credits VALUES(310012,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000,'send','1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568'); -INSERT INTO credits VALUES(310013,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000,'send','62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd'); -INSERT INTO credits VALUES(310014,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5,'send','9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba'); -INSERT INTO credits VALUES(310015,'1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10,'send','62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4'); -INSERT INTO credits VALUES(310016,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','MAXI',9223372036854775807,'issuance','19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93'); -INSERT INTO credits VALUES(310020,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'filled','acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0'); -INSERT INTO credits VALUES(310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',0,'filled','acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0'); -INSERT INTO credits VALUES(310102,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',9,'bet settled','8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8'); -INSERT INTO credits VALUES(310102,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',9,'bet settled','8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8'); -INSERT INTO credits VALUES(310102,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'feed fee','8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8'); -INSERT INTO credits VALUES(310103,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',92999138821,'burn','65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b'); -INSERT INTO credits VALUES(310104,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',92999130460,'burn','95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff'); -INSERT INTO credits VALUES(310105,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',92999122099,'burn','e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa'); -INSERT INTO credits VALUES(310106,'mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','XCP',14999857,'burn','bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3'); -INSERT INTO credits VALUES(310108,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',46499548508,'burn','93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73'); -INSERT INTO credits VALUES(310109,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','PAYTOSCRIPT',1000,'issuance','ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e'); -INSERT INTO credits VALUES(310110,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000,'send','f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481'); -INSERT INTO credits VALUES(310113,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','LOCKEDPREV',1000,'issuance','5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9'); -INSERT INTO credits VALUES(310116,'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','XCP',92999030129,'burn','27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9'); -INSERT INTO credits VALUES(310481,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'send','b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5'); -INSERT INTO credits VALUES(310482,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'send','c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34'); -INSERT INTO credits VALUES(310493,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92995878046,'burn','c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a'); -INSERT INTO credits VALUES(310494,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',100,'issuance','4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5'); -INSERT INTO credits VALUES(310495,'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10,'send','129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc'); -INSERT INTO credits VALUES(310496,'mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046,'send','1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6'); -INSERT INTO credits VALUES(310497,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','PARENT',100000000,'issuance','076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f'); -INSERT INTO credits VALUES(310498,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','A95428956661682277',100000000,'issuance','0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf'); --- Triggers and indices on credits -CREATE TRIGGER _credits_delete BEFORE DELETE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO credits(rowid,block_index,address,asset,quantity,calling_function,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.calling_function)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _credits_insert AFTER INSERT ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM credits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _credits_update AFTER UPDATE ON credits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE credits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',calling_function='||quote(old.calling_function)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; - --- Table debits -DROP TABLE IF EXISTS debits; -CREATE TABLE debits( - block_index INTEGER, - address TEXT, - asset TEXT, - quantity INTEGER, - action TEXT, - event TEXT, - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); -INSERT INTO debits VALUES(310001,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e'); -INSERT INTO debits VALUES(310002,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73'); -INSERT INTO debits VALUES(310003,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb'); -INSERT INTO debits VALUES(310004,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1'); -INSERT INTO debits VALUES(310005,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',0,'issuance fee','1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579'); -INSERT INTO debits VALUES(310006,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3'); -INSERT INTO debits VALUES(310007,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000,'send','95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef'); -INSERT INTO debits VALUES(310008,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'send','8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc'); -INSERT INTO debits VALUES(310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391'); -INSERT INTO debits VALUES(310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145'); -INSERT INTO debits VALUES(310012,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',300000000,'send','1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568'); -INSERT INTO debits VALUES(310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',1000000000,'send','62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd'); -INSERT INTO debits VALUES(310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',5,'send','9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba'); -INSERT INTO debits VALUES(310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','NODIVISIBLE',10,'send','62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4'); -INSERT INTO debits VALUES(310016,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93'); -INSERT INTO debits VALUES(310019,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',9,'bet','c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d'); -INSERT INTO debits VALUES(310020,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',9,'bet','acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0'); -INSERT INTO debits VALUES(310101,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',10,'bet','aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305'); -INSERT INTO debits VALUES(310107,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',100,'open dispenser','9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec'); -INSERT INTO debits VALUES(310109,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',50000000,'issuance fee','ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e'); -INSERT INTO debits VALUES(310110,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','DIVISIBLE',100000000,'send','f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481'); -INSERT INTO debits VALUES(310112,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','XCP',10,'bet','d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048'); -INSERT INTO debits VALUES(310113,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',50000000,'issuance fee','5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9'); -INSERT INTO debits VALUES(310114,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',0,'issuance fee','74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe'); -INSERT INTO debits VALUES(310115,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','XCP',0,'issuance fee','214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d'); -INSERT INTO debits VALUES(310481,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'send','b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5'); -INSERT INTO debits VALUES(310482,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'send','c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34'); -INSERT INTO debits VALUES(310487,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','XCP',9,'bet','2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275'); -INSERT INTO debits VALUES(310491,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'open order','9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09'); -INSERT INTO debits VALUES(310494,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',50000000,'issuance fee','4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5'); -INSERT INTO debits VALUES(310495,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','DIVIDEND',10,'send','129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc'); -INSERT INTO debits VALUES(310496,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','XCP',92945878046,'send','1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6'); -INSERT INTO debits VALUES(310497,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',50000000,'issuance fee','076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f'); -INSERT INTO debits VALUES(310498,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',25000000,'issuance fee','0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf'); --- Triggers and indices on debits -CREATE TRIGGER _debits_delete BEFORE DELETE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO debits(rowid,block_index,address,asset,quantity,action,event) VALUES('||old.rowid||','||quote(old.block_index)||','||quote(old.address)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.action)||','||quote(old.event)||')'); - END; -CREATE TRIGGER _debits_insert AFTER INSERT ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM debits WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _debits_update AFTER UPDATE ON debits BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE debits SET block_index='||quote(old.block_index)||',address='||quote(old.address)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',action='||quote(old.action)||',event='||quote(old.event)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX address_idx ON debits (address); -CREATE INDEX asset_idx ON debits (asset); - --- Table destructions -DROP TABLE IF EXISTS destructions; -CREATE TABLE destructions( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset INTEGER, - quantity INTEGER, - tag TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on destructions -CREATE TRIGGER _destructions_delete BEFORE DELETE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO destructions(rowid,tx_index,tx_hash,block_index,source,asset,quantity,tag,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.tag)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _destructions_insert AFTER INSERT ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM destructions WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _destructions_update AFTER UPDATE ON destructions BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE destructions SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',tag='||quote(old.tag)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX status_idx ON destructions (status); - --- Table dispensers -DROP TABLE IF EXISTS dispensers; -CREATE TABLE dispensers( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - give_quantity INTEGER, - escrow_quantity INTEGER, - satoshirate INTEGER, - status INTEGER, - give_remaining INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO dispensers VALUES(108,'9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec',310107,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','XCP',100,100,100,0,100); --- Triggers and indices on dispensers -CREATE TRIGGER _dispensers_delete BEFORE DELETE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispensers(rowid,tx_index,tx_hash,block_index,source,asset,give_quantity,escrow_quantity,satoshirate,status,give_remaining) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.give_quantity)||','||quote(old.escrow_quantity)||','||quote(old.satoshirate)||','||quote(old.status)||','||quote(old.give_remaining)||')'); - END; -CREATE TRIGGER _dispensers_insert AFTER INSERT ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispensers WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispensers_update AFTER UPDATE ON dispensers BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispensers SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',give_quantity='||quote(old.give_quantity)||',escrow_quantity='||quote(old.escrow_quantity)||',satoshirate='||quote(old.satoshirate)||',status='||quote(old.status)||',give_remaining='||quote(old.give_remaining)||' WHERE rowid='||old.rowid); - END; - --- Table dispenses -DROP TABLE IF EXISTS dispenses; -CREATE TABLE dispenses( - tx_index INTEGER, - dispense_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - dispense_quantity INTEGER, - dispenser_tx_hash TEXT, - PRIMARY KEY (tx_index, dispense_index, source, destination), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dispenses -CREATE TRIGGER _dispenses_delete BEFORE DELETE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dispenses(rowid,tx_index,dispense_index,tx_hash,block_index,source,destination,asset,dispense_quantity,dispenser_tx_hash) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.dispense_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.dispense_quantity)||','||quote(old.dispenser_tx_hash)||')'); - END; -CREATE TRIGGER _dispenses_insert AFTER INSERT ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dispenses WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dispenses_update AFTER UPDATE ON dispenses BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dispenses SET tx_index='||quote(old.tx_index)||',dispense_index='||quote(old.dispense_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',dispense_quantity='||quote(old.dispense_quantity)||',dispenser_tx_hash='||quote(old.dispenser_tx_hash)||' WHERE rowid='||old.rowid); - END; - --- Table dividends -DROP TABLE IF EXISTS dividends; -CREATE TABLE dividends( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - asset TEXT, - dividend_asset TEXT, - quantity_per_unit INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on dividends -CREATE TRIGGER _dividends_delete BEFORE DELETE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO dividends(rowid,tx_index,tx_hash,block_index,source,asset,dividend_asset,quantity_per_unit,fee_paid,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.asset)||','||quote(old.dividend_asset)||','||quote(old.quantity_per_unit)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _dividends_insert AFTER INSERT ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM dividends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _dividends_update AFTER UPDATE ON dividends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE dividends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',asset='||quote(old.asset)||',dividend_asset='||quote(old.dividend_asset)||',quantity_per_unit='||quote(old.quantity_per_unit)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; - --- Table issuances -DROP TABLE IF EXISTS issuances; -CREATE TABLE "issuances"( - tx_index INTEGER, - tx_hash TEXT, - msg_index INTEGER DEFAULT 0, - block_index INTEGER, - asset TEXT, - quantity INTEGER, - divisible BOOL, - source TEXT, - issuer TEXT, - transfer BOOL, - callable BOOL, - call_date INTEGER, - call_price REAL, - description TEXT, - fee_paid INTEGER, - locked BOOL, - status TEXT, - asset_longname TEXT, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index)); -INSERT INTO issuances VALUES(2,'9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e',0,310001,'DIVISIBLE',100000000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Divisible asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(3,'2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73',0,310002,'NODIVISIBLE',1000,0,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'No divisible asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(4,'4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb',0,310003,'CALLABLE',1000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Callable asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(5,'e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1',0,310004,'LOCKED',1000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Locked asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(6,'1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579',0,310005,'LOCKED',0,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Locked asset',0,1,'valid',NULL); -INSERT INTO issuances VALUES(17,'19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93',0,310016,'MAXI',9223372036854775807,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Maximum quantity',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(110,'ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e',0,310109,'PAYTOSCRIPT',1000,0,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',0,0,0,0.0,'PSH issued asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(114,'5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9',0,310113,'LOCKEDPREV',1000,1,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',0,0,0,0.0,'Locked asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(115,'74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe',0,310114,'LOCKEDPREV',0,1,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',0,0,0,0.0,'Locked asset',0,1,'valid',NULL); -INSERT INTO issuances VALUES(116,'214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d',0,310115,'LOCKEDPREV',0,1,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42',0,0,0,0.0,'changed',0,0,'valid',NULL); -INSERT INTO issuances VALUES(495,'4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5',0,310494,'DIVIDEND',100,1,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH',0,0,0,0.0,'Test dividend',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(498,'076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f',0,310497,'PARENT',100000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Parent asset',50000000,0,'valid',NULL); -INSERT INTO issuances VALUES(499,'0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf',0,310498,'A95428956661682277',100000000,1,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',0,0,0,0.0,'Child of parent',25000000,0,'valid','PARENT.already.issued'); --- Triggers and indices on issuances -CREATE TRIGGER _issuances_delete BEFORE DELETE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO issuances(rowid,tx_index,tx_hash,msg_index,block_index,asset,quantity,divisible,source,issuer,transfer,callable,call_date,call_price,description,fee_paid,locked,status,asset_longname) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.msg_index)||','||quote(old.block_index)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.divisible)||','||quote(old.source)||','||quote(old.issuer)||','||quote(old.transfer)||','||quote(old.callable)||','||quote(old.call_date)||','||quote(old.call_price)||','||quote(old.description)||','||quote(old.fee_paid)||','||quote(old.locked)||','||quote(old.status)||','||quote(old.asset_longname)||')'); - END; -CREATE TRIGGER _issuances_insert AFTER INSERT ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM issuances WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _issuances_update AFTER UPDATE ON issuances BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE issuances SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',msg_index='||quote(old.msg_index)||',block_index='||quote(old.block_index)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',divisible='||quote(old.divisible)||',source='||quote(old.source)||',issuer='||quote(old.issuer)||',transfer='||quote(old.transfer)||',callable='||quote(old.callable)||',call_date='||quote(old.call_date)||',call_price='||quote(old.call_price)||',description='||quote(old.description)||',fee_paid='||quote(old.fee_paid)||',locked='||quote(old.locked)||',status='||quote(old.status)||',asset_longname='||quote(old.asset_longname)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX valid_asset_idx ON issuances (asset, status); - --- Table mempool -DROP TABLE IF EXISTS mempool; -CREATE TABLE mempool( - tx_hash TEXT, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); - --- Table messages -DROP TABLE IF EXISTS messages; -CREATE TABLE messages( - message_index INTEGER PRIMARY KEY, - block_index INTEGER, - command TEXT, - category TEXT, - bindings TEXT, - timestamp INTEGER); -INSERT INTO messages VALUES(0,310000,'insert','credits','{"action": "burn", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310000, "event": "6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597", "quantity": 93000000000}',0); -INSERT INTO messages VALUES(1,310000,'insert','burns','{"block_index": 310000, "burned": 62000000, "earned": 93000000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597", "tx_index": 1}',0); -INSERT INTO messages VALUES(2,310001,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310001, "event": "9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e", "quantity": 50000000}',0); -INSERT INTO messages VALUES(3,310001,'insert','issuances','{"asset": "DIVISIBLE", "asset_longname": null, "block_index": 310001, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Divisible asset", "divisible": true, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 100000000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e", "tx_index": 2}',0); -INSERT INTO messages VALUES(4,310001,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "DIVISIBLE", "block_index": 310001, "event": "9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e", "quantity": 100000000000}',0); -INSERT INTO messages VALUES(5,310002,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310002, "event": "2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73", "quantity": 50000000}',0); -INSERT INTO messages VALUES(6,310002,'insert','issuances','{"asset": "NODIVISIBLE", "asset_longname": null, "block_index": 310002, "call_date": 0, "call_price": 0.0, "callable": false, "description": "No divisible asset", "divisible": false, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 1000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73", "tx_index": 3}',0); -INSERT INTO messages VALUES(7,310002,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "NODIVISIBLE", "block_index": 310002, "event": "2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73", "quantity": 1000}',0); -INSERT INTO messages VALUES(8,310003,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310003, "event": "4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb", "quantity": 50000000}',0); -INSERT INTO messages VALUES(9,310003,'insert','issuances','{"asset": "CALLABLE", "asset_longname": null, "block_index": 310003, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Callable asset", "divisible": true, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 1000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb", "tx_index": 4}',0); -INSERT INTO messages VALUES(10,310003,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "CALLABLE", "block_index": 310003, "event": "4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb", "quantity": 1000}',0); -INSERT INTO messages VALUES(11,310004,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310004, "event": "e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1", "quantity": 50000000}',0); -INSERT INTO messages VALUES(12,310004,'insert','issuances','{"asset": "LOCKED", "asset_longname": null, "block_index": 310004, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Locked asset", "divisible": true, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 1000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1", "tx_index": 5}',0); -INSERT INTO messages VALUES(13,310004,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "LOCKED", "block_index": 310004, "event": "e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1", "quantity": 1000}',0); -INSERT INTO messages VALUES(14,310005,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310005, "event": "1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579", "quantity": 0}',0); -INSERT INTO messages VALUES(15,310005,'insert','issuances','{"asset": "LOCKED", "asset_longname": null, "block_index": 310005, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Locked asset", "divisible": true, "fee_paid": 0, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": true, "quantity": 0, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579", "tx_index": 6}',0); -INSERT INTO messages VALUES(16,310006,'insert','debits','{"action": "open order", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310006, "event": "b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3", "quantity": 100000000}',0); -INSERT INTO messages VALUES(17,310006,'insert','orders','{"block_index": 310006, "expiration": 2000, "expire_index": 312006, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "DIVISIBLE", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "XCP", "give_quantity": 100000000, "give_remaining": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "tx_hash": "b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3", "tx_index": 7}',0); -INSERT INTO messages VALUES(18,310007,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "DIVISIBLE", "block_index": 310007, "event": "95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef", "quantity": 100000000}',0); -INSERT INTO messages VALUES(19,310007,'insert','credits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "DIVISIBLE", "block_index": 310007, "event": "95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef", "quantity": 100000000}',0); -INSERT INTO messages VALUES(20,310007,'insert','sends','{"asset": "DIVISIBLE", "block_index": 310007, "destination": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "quantity": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef", "tx_index": 8}',0); -INSERT INTO messages VALUES(21,310008,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310008, "event": "8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc", "quantity": 100000000}',0); -INSERT INTO messages VALUES(22,310008,'insert','credits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310008, "event": "8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc", "quantity": 100000000}',0); -INSERT INTO messages VALUES(23,310008,'insert','sends','{"asset": "XCP", "block_index": 310008, "destination": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "quantity": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc", "tx_index": 9}',0); -INSERT INTO messages VALUES(24,310009,'insert','debits','{"action": "open order", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310009, "event": "d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391", "quantity": 100000000}',0); -INSERT INTO messages VALUES(25,310009,'insert','orders','{"block_index": 310009, "expiration": 2000, "expire_index": 312009, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "DIVISIBLE", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "XCP", "give_quantity": 100000000, "give_remaining": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "tx_hash": "d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391", "tx_index": 10}',0); -INSERT INTO messages VALUES(26,310010,'insert','debits','{"action": "open order", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310010, "event": "c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145", "quantity": 100000000}',0); -INSERT INTO messages VALUES(27,310010,'insert','orders','{"block_index": 310010, "expiration": 2000, "expire_index": 312010, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 900000, "fee_required_remaining": 900000, "get_asset": "BTC", "get_quantity": 1000000, "get_remaining": 1000000, "give_asset": "XCP", "give_quantity": 100000000, "give_remaining": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "tx_hash": "c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145", "tx_index": 11}',0); -INSERT INTO messages VALUES(28,310011,'insert','orders','{"block_index": 310011, "expiration": 2000, "expire_index": 312011, "fee_provided": 1000000, "fee_provided_remaining": 1000000, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "BTC", "give_quantity": 666667, "give_remaining": 666667, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "tx_hash": "601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e", "tx_index": 12}',0); -INSERT INTO messages VALUES(29,310012,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310012, "event": "1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568", "quantity": 300000000}',0); -INSERT INTO messages VALUES(30,310012,'insert','credits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "XCP", "block_index": 310012, "event": "1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568", "quantity": 300000000}',0); -INSERT INTO messages VALUES(31,310012,'insert','sends','{"asset": "XCP", "block_index": 310012, "destination": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 300000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568", "tx_index": 13}',0); -INSERT INTO messages VALUES(32,310013,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "DIVISIBLE", "block_index": 310013, "event": "62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd", "quantity": 1000000000}',0); -INSERT INTO messages VALUES(33,310013,'insert','credits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "DIVISIBLE", "block_index": 310013, "event": "62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd", "quantity": 1000000000}',0); -INSERT INTO messages VALUES(34,310013,'insert','sends','{"asset": "DIVISIBLE", "block_index": 310013, "destination": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 1000000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd", "tx_index": 14}',0); -INSERT INTO messages VALUES(35,310014,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "NODIVISIBLE", "block_index": 310014, "event": "9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba", "quantity": 5}',0); -INSERT INTO messages VALUES(36,310014,'insert','credits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "NODIVISIBLE", "block_index": 310014, "event": "9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba", "quantity": 5}',0); -INSERT INTO messages VALUES(37,310014,'insert','sends','{"asset": "NODIVISIBLE", "block_index": 310014, "destination": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "quantity": 5, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba", "tx_index": 15}',0); -INSERT INTO messages VALUES(38,310015,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "NODIVISIBLE", "block_index": 310015, "event": "62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4", "quantity": 10}',0); -INSERT INTO messages VALUES(39,310015,'insert','credits','{"action": "send", "address": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "asset": "NODIVISIBLE", "block_index": 310015, "event": "62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4", "quantity": 10}',0); -INSERT INTO messages VALUES(40,310015,'insert','sends','{"asset": "NODIVISIBLE", "block_index": 310015, "destination": "1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2", "quantity": 10, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4", "tx_index": 16}',0); -INSERT INTO messages VALUES(41,310016,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310016, "event": "19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93", "quantity": 50000000}',0); -INSERT INTO messages VALUES(42,310016,'insert','issuances','{"asset": "MAXI", "asset_longname": null, "block_index": 310016, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Maximum quantity", "divisible": true, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 9223372036854775807, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93", "tx_index": 17}',0); -INSERT INTO messages VALUES(43,310016,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "MAXI", "block_index": 310016, "event": "19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93", "quantity": 9223372036854775807}',0); -INSERT INTO messages VALUES(44,310017,'insert','broadcasts','{"block_index": 310017, "fee_fraction_int": 5000000, "locked": false, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "text": "Unit Test", "timestamp": 1388000000, "tx_hash": "3330c302fd75cb6b9e4d08ccc8821fee8f6f88c8a42123386941193813653c7a", "tx_index": 18, "value": 1.0}',0); -INSERT INTO messages VALUES(45,310018,'insert','broadcasts','{"block_index": 310018, "fee_fraction_int": null, "locked": true, "source": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "status": "valid", "text": null, "timestamp": 0, "tx_hash": "a9d599c0f1669b071bf107f7e90f88fe692d56ca00b81e57c71a56530590e7ee", "tx_index": 19, "value": null}',0); -INSERT INTO messages VALUES(46,310019,'insert','debits','{"action": "bet", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310019, "event": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d", "quantity": 9}',0); -INSERT INTO messages VALUES(47,310019,'insert','bets','{"bet_type": 1, "block_index": 310019, "counterwager_quantity": 9, "counterwager_remaining": 9, "deadline": 1388000001, "expiration": 100, "expire_index": 310119, "fee_fraction_int": 5000000.0, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "leverage": 5040, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "target_value": 0.0, "tx_hash": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d", "tx_index": 20, "wager_quantity": 9, "wager_remaining": 9}',0); -INSERT INTO messages VALUES(48,310020,'insert','debits','{"action": "bet", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310020, "event": "acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "quantity": 9}',0); -INSERT INTO messages VALUES(49,310020,'insert','bets','{"bet_type": 0, "block_index": 310020, "counterwager_quantity": 9, "counterwager_remaining": 9, "deadline": 1388000001, "expiration": 100, "expire_index": 310120, "fee_fraction_int": 5000000.0, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "leverage": 5040, "source": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "status": "open", "target_value": 0.0, "tx_hash": "acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "tx_index": 21, "wager_quantity": 9, "wager_remaining": 9}',0); -INSERT INTO messages VALUES(50,310020,'insert','credits','{"action": "filled", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310020, "event": "acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "quantity": 0}',0); -INSERT INTO messages VALUES(51,310020,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(52,310020,'insert','credits','{"action": "filled", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310020, "event": "acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "quantity": 0}',0); -INSERT INTO messages VALUES(53,310020,'update','bets','{"counterwager_remaining": 0, "status": "filled", "tx_hash": "acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "wager_remaining": 0}',0); -INSERT INTO messages VALUES(54,310020,'insert','bet_matches','{"backward_quantity": 9, "block_index": 310020, "deadline": 1388000001, "fee_fraction_int": 5000000, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "forward_quantity": 9, "id": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "initial_value": 1.0, "leverage": 5040, "match_expire_index": 310119, "status": "pending", "target_value": 0.0, "tx0_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "tx0_bet_type": 1, "tx0_block_index": 310019, "tx0_expiration": 100, "tx0_hash": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d", "tx0_index": 20, "tx1_address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "tx1_bet_type": 0, "tx1_block_index": 310020, "tx1_expiration": 100, "tx1_hash": "acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "tx1_index": 21}',0); -INSERT INTO messages VALUES(55,310101,'insert','debits','{"action": "bet", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310101, "event": "aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305", "quantity": 10}',0); -INSERT INTO messages VALUES(56,310101,'insert','bets','{"bet_type": 3, "block_index": 310101, "counterwager_quantity": 10, "counterwager_remaining": 10, "deadline": 1388000200, "expiration": 1000, "expire_index": 311101, "fee_fraction_int": 5000000.0, "feed_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "leverage": 5040, "source": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "status": "open", "target_value": 0.0, "tx_hash": "aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305", "tx_index": 102, "wager_quantity": 10, "wager_remaining": 10}',0); -INSERT INTO messages VALUES(57,310102,'insert','broadcasts','{"block_index": 310102, "fee_fraction_int": 5000000, "locked": false, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "text": "Unit Test", "timestamp": 1388000002, "tx_hash": "8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8", "tx_index": 103, "value": 1.0}',0); -INSERT INTO messages VALUES(58,310102,'insert','credits','{"action": "bet settled", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310102, "event": "8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8", "quantity": 9}',0); -INSERT INTO messages VALUES(59,310102,'insert','credits','{"action": "bet settled", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310102, "event": "8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8", "quantity": 9}',0); -INSERT INTO messages VALUES(60,310102,'insert','credits','{"action": "feed fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310102, "event": "8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8", "quantity": 0}',0); -INSERT INTO messages VALUES(61,310102,'insert','bet_match_resolutions','{"bear_credit": 9, "bet_match_id": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "bet_match_type_id": 1, "block_index": 310102, "bull_credit": 9, "escrow_less_fee": null, "fee": 0, "settled": true, "winner": null}',0); -INSERT INTO messages VALUES(62,310102,'update','bet_matches','{"bet_match_id": "c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d_acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0", "status": "settled"}',0); -INSERT INTO messages VALUES(63,310103,'insert','credits','{"action": "burn", "address": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "asset": "XCP", "block_index": 310103, "event": "65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b", "quantity": 92999138821}',0); -INSERT INTO messages VALUES(64,310103,'insert','burns','{"block_index": 310103, "burned": 62000000, "earned": 92999138821, "source": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "status": "valid", "tx_hash": "65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b", "tx_index": 104}',0); -INSERT INTO messages VALUES(65,310104,'insert','credits','{"action": "burn", "address": "munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b", "asset": "XCP", "block_index": 310104, "event": "95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff", "quantity": 92999130460}',0); -INSERT INTO messages VALUES(66,310104,'insert','burns','{"block_index": 310104, "burned": 62000000, "earned": 92999130460, "source": "munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b", "status": "valid", "tx_hash": "95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff", "tx_index": 105}',0); -INSERT INTO messages VALUES(67,310105,'insert','credits','{"action": "burn", "address": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "asset": "XCP", "block_index": 310105, "event": "e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa", "quantity": 92999122099}',0); -INSERT INTO messages VALUES(68,310105,'insert','burns','{"block_index": 310105, "burned": 62000000, "earned": 92999122099, "source": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "status": "valid", "tx_hash": "e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa", "tx_index": 106}',0); -INSERT INTO messages VALUES(69,310106,'insert','credits','{"action": "burn", "address": "mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK", "asset": "XCP", "block_index": 310106, "event": "bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3", "quantity": 14999857}',0); -INSERT INTO messages VALUES(70,310106,'insert','burns','{"block_index": 310106, "burned": 10000, "earned": 14999857, "source": "mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK", "status": "valid", "tx_hash": "bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3", "tx_index": 107}',0); -INSERT INTO messages VALUES(71,310107,'insert','debits','{"action": "open dispenser", "address": "munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b", "asset": "XCP", "block_index": 310107, "event": "9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec", "quantity": 100}',0); -INSERT INTO messages VALUES(72,310107,'insert','dispensers','{"asset": "XCP", "block_index": 310107, "escrow_quantity": 100, "give_quantity": 100, "give_remaining": 100, "satoshirate": 100, "source": "munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b", "status": 0, "tx_hash": "9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec", "tx_index": 108}',0); -INSERT INTO messages VALUES(73,310108,'insert','credits','{"action": "burn", "address": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "asset": "XCP", "block_index": 310108, "event": "93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73", "quantity": 46499548508}',0); -INSERT INTO messages VALUES(74,310108,'insert','burns','{"block_index": 310108, "burned": 31000000, "earned": 46499548508, "source": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "status": "valid", "tx_hash": "93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73", "tx_index": 109}',0); -INSERT INTO messages VALUES(75,310109,'insert','debits','{"action": "issuance fee", "address": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "asset": "XCP", "block_index": 310109, "event": "ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e", "quantity": 50000000}',0); -INSERT INTO messages VALUES(76,310109,'insert','issuances','{"asset": "PAYTOSCRIPT", "asset_longname": null, "block_index": 310109, "call_date": 0, "call_price": 0.0, "callable": false, "description": "PSH issued asset", "divisible": false, "fee_paid": 50000000, "issuer": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "locked": false, "quantity": 1000, "source": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "status": "valid", "transfer": false, "tx_hash": "ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e", "tx_index": 110}',0); -INSERT INTO messages VALUES(77,310109,'insert','credits','{"action": "issuance", "address": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "asset": "PAYTOSCRIPT", "block_index": 310109, "event": "ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e", "quantity": 1000}',0); -INSERT INTO messages VALUES(78,310110,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "DIVISIBLE", "block_index": 310110, "event": "f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481", "quantity": 100000000}',0); -INSERT INTO messages VALUES(79,310110,'insert','credits','{"action": "send", "address": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "asset": "DIVISIBLE", "block_index": 310110, "event": "f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481", "quantity": 100000000}',0); -INSERT INTO messages VALUES(80,310110,'insert','sends','{"asset": "DIVISIBLE", "block_index": 310110, "destination": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "quantity": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481", "tx_index": 111}',0); -INSERT INTO messages VALUES(81,310111,'insert','broadcasts','{"block_index": 310111, "fee_fraction_int": 5000000, "locked": false, "source": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "status": "valid", "text": "Unit Test", "timestamp": 1388000002, "tx_hash": "510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186", "tx_index": 112, "value": 1.0}',0); -INSERT INTO messages VALUES(82,310112,'insert','debits','{"action": "bet", "address": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "asset": "XCP", "block_index": 310112, "event": "d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048", "quantity": 10}',0); -INSERT INTO messages VALUES(83,310112,'insert','bets','{"bet_type": 3, "block_index": 310112, "counterwager_quantity": 10, "counterwager_remaining": 10, "deadline": 1388000200, "expiration": 1000, "expire_index": 311112, "fee_fraction_int": 5000000.0, "feed_address": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "leverage": 5040, "source": "2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy", "status": "open", "target_value": 0.0, "tx_hash": "d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048", "tx_index": 113, "wager_quantity": 10, "wager_remaining": 10}',0); -INSERT INTO messages VALUES(84,310113,'insert','debits','{"action": "issuance fee", "address": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "asset": "XCP", "block_index": 310113, "event": "5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9", "quantity": 50000000}',0); -INSERT INTO messages VALUES(85,310113,'insert','issuances','{"asset": "LOCKEDPREV", "asset_longname": null, "block_index": 310113, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Locked asset", "divisible": true, "fee_paid": 50000000, "issuer": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "locked": false, "quantity": 1000, "source": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "status": "valid", "transfer": false, "tx_hash": "5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9", "tx_index": 114}',0); -INSERT INTO messages VALUES(86,310113,'insert','credits','{"action": "issuance", "address": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "asset": "LOCKEDPREV", "block_index": 310113, "event": "5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9", "quantity": 1000}',0); -INSERT INTO messages VALUES(87,310114,'insert','debits','{"action": "issuance fee", "address": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "asset": "XCP", "block_index": 310114, "event": "74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe", "quantity": 0}',0); -INSERT INTO messages VALUES(88,310114,'insert','issuances','{"asset": "LOCKEDPREV", "asset_longname": null, "block_index": 310114, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Locked asset", "divisible": true, "fee_paid": 0, "issuer": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "locked": true, "quantity": 0, "source": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "status": "valid", "transfer": false, "tx_hash": "74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe", "tx_index": 115}',0); -INSERT INTO messages VALUES(89,310115,'insert','debits','{"action": "issuance fee", "address": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "asset": "XCP", "block_index": 310115, "event": "214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d", "quantity": 0}',0); -INSERT INTO messages VALUES(90,310115,'insert','issuances','{"asset": "LOCKEDPREV", "asset_longname": null, "block_index": 310115, "call_date": 0, "call_price": 0.0, "callable": false, "description": "changed", "divisible": true, "fee_paid": 0, "issuer": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "locked": false, "quantity": 0, "source": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "status": "valid", "transfer": false, "tx_hash": "214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d", "tx_index": 116}',0); -INSERT INTO messages VALUES(91,310116,'insert','credits','{"action": "burn", "address": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx", "asset": "XCP", "block_index": 310116, "event": "27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9", "quantity": 92999030129}',0); -INSERT INTO messages VALUES(92,310116,'insert','burns','{"block_index": 310116, "burned": 62000000, "earned": 92999030129, "source": "tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx", "status": "valid", "tx_hash": "27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9", "tx_index": 117}',0); -INSERT INTO messages VALUES(93,310481,'insert','debits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310481, "event": "b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5", "quantity": 100000000}',0); -INSERT INTO messages VALUES(94,310481,'insert','credits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310481, "event": "b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5", "quantity": 100000000}',0); -INSERT INTO messages VALUES(95,310481,'insert','sends','{"asset": "XCP", "block_index": 310481, "destination": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "memo": "68656c6c6f", "quantity": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "tx_hash": "b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5", "tx_index": 482}',0); -INSERT INTO messages VALUES(96,310482,'insert','debits','{"action": "send", "address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "asset": "XCP", "block_index": 310482, "event": "c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34", "quantity": 100000000}',0); -INSERT INTO messages VALUES(97,310482,'insert','credits','{"action": "send", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310482, "event": "c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34", "quantity": 100000000}',0); -INSERT INTO messages VALUES(98,310482,'insert','sends','{"asset": "XCP", "block_index": 310482, "destination": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "memo": "fade0001", "quantity": 100000000, "source": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "status": "valid", "tx_hash": "c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34", "tx_index": 483}',0); -INSERT INTO messages VALUES(99,310486,'insert','broadcasts','{"block_index": 310486, "fee_fraction_int": 5000000, "locked": false, "source": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "status": "valid", "text": "Unit Test", "timestamp": 1388000000, "tx_hash": "096883e142a87377d3a4103f4702556e25824f1e23667aceb1690f66e1417062", "tx_index": 487, "value": 1.0}',0); -INSERT INTO messages VALUES(100,310487,'insert','debits','{"action": "bet", "address": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "asset": "XCP", "block_index": 310487, "event": "2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275", "quantity": 9}',0); -INSERT INTO messages VALUES(101,310487,'insert','bets','{"bet_type": 1, "block_index": 310487, "counterwager_quantity": 9, "counterwager_remaining": 9, "deadline": 1388000001, "expiration": 100, "expire_index": 310587, "fee_fraction_int": 5000000.0, "feed_address": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "leverage": 5040, "source": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "status": "open", "target_value": 0.0, "tx_hash": "2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275", "tx_index": 488, "wager_quantity": 9, "wager_remaining": 9}',0); -INSERT INTO messages VALUES(102,310488,'insert','broadcasts','{"block_index": 310488, "fee_fraction_int": 0, "locked": false, "source": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "status": "valid", "text": "options 0", "timestamp": 1388000002, "tx_hash": "9b1cad827c97c463c2b39cc9d550693c438010ef85a10ee04d3db8699193e906", "tx_index": 489, "value": 1.0}',0); -INSERT INTO messages VALUES(103,310488,'insert','replace','{"address": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "block_index": 310488, "options": 0}',0); -INSERT INTO messages VALUES(104,310489,'insert','broadcasts','{"block_index": 310489, "fee_fraction_int": null, "locked": true, "source": "myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM", "status": "valid", "text": null, "timestamp": 0, "tx_hash": "9a39bade308462ec65be3c8420a0f2189b1d4e947d4c7950a37176de71de4f87", "tx_index": 490, "value": null}',0); -INSERT INTO messages VALUES(105,310490,'insert','broadcasts','{"block_index": 310490, "fee_fraction_int": 0, "locked": false, "source": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "status": "valid", "text": "options 1", "timestamp": 1388000004, "tx_hash": "4b233a74b9db14a8619ee8ec5558149e53ab033be31e803257f760aa9ef2f3b9", "tx_index": 491, "value": 1.0}',0); -INSERT INTO messages VALUES(106,310490,'insert','replace','{"address": "mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42", "block_index": 310490, "options": 1}',0); -INSERT INTO messages VALUES(107,310491,'insert','debits','{"action": "open order", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310491, "event": "9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09", "quantity": 100000000}',0); -INSERT INTO messages VALUES(108,310491,'insert','orders','{"block_index": 310491, "expiration": 2000, "expire_index": 312491, "fee_provided": 6800, "fee_provided_remaining": 6800, "fee_required": 900000, "fee_required_remaining": 900000, "get_asset": "BTC", "get_quantity": 800000, "get_remaining": 800000, "give_asset": "XCP", "give_quantity": 100000000, "give_remaining": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "open", "tx_hash": "9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09", "tx_index": 492}',0); -INSERT INTO messages VALUES(109,310492,'insert','orders','{"block_index": 310492, "expiration": 2000, "expire_index": 312492, "fee_provided": 1000000, "fee_provided_remaining": 1000000, "fee_required": 0, "fee_required_remaining": 0, "get_asset": "XCP", "get_quantity": 100000000, "get_remaining": 100000000, "give_asset": "BTC", "give_quantity": 800000, "give_remaining": 800000, "source": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "status": "open", "tx_hash": "2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4", "tx_index": 493}',0); -INSERT INTO messages VALUES(110,310492,'update','orders','{"fee_provided_remaining": 6800, "fee_required_remaining": 892800, "get_remaining": 0, "give_remaining": 0, "status": "open", "tx_hash": "9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09"}',0); -INSERT INTO messages VALUES(111,310492,'update','orders','{"fee_provided_remaining": 992800, "fee_required_remaining": 0, "get_remaining": 0, "give_remaining": 0, "status": "open", "tx_hash": "2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4"}',0); -INSERT INTO messages VALUES(112,310492,'insert','order_matches','{"backward_asset": "BTC", "backward_quantity": 800000, "block_index": 310492, "fee_paid": 7200, "forward_asset": "XCP", "forward_quantity": 100000000, "id": "9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09_2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4", "match_expire_index": 310512, "status": "pending", "tx0_address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "tx0_block_index": 310491, "tx0_expiration": 2000, "tx0_hash": "9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09", "tx0_index": 492, "tx1_address": "mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns", "tx1_block_index": 310492, "tx1_expiration": 2000, "tx1_hash": "2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4", "tx1_index": 493}',0); -INSERT INTO messages VALUES(113,310493,'insert','credits','{"action": "burn", "address": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "asset": "XCP", "block_index": 310493, "event": "c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a", "quantity": 92995878046}',0); -INSERT INTO messages VALUES(114,310493,'insert','burns','{"block_index": 310493, "burned": 62000000, "earned": 92995878046, "source": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "status": "valid", "tx_hash": "c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a", "tx_index": 494}',0); -INSERT INTO messages VALUES(115,310494,'insert','debits','{"action": "issuance fee", "address": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "asset": "XCP", "block_index": 310494, "event": "4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5", "quantity": 50000000}',0); -INSERT INTO messages VALUES(116,310494,'insert','issuances','{"asset": "DIVIDEND", "asset_longname": null, "block_index": 310494, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Test dividend", "divisible": true, "fee_paid": 50000000, "issuer": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "locked": false, "quantity": 100, "source": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "status": "valid", "transfer": false, "tx_hash": "4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5", "tx_index": 495}',0); -INSERT INTO messages VALUES(117,310494,'insert','credits','{"action": "issuance", "address": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "asset": "DIVIDEND", "block_index": 310494, "event": "4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5", "quantity": 100}',0); -INSERT INTO messages VALUES(118,310495,'insert','debits','{"action": "send", "address": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "asset": "DIVIDEND", "block_index": 310495, "event": "129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc", "quantity": 10}',0); -INSERT INTO messages VALUES(119,310495,'insert','credits','{"action": "send", "address": "mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj", "asset": "DIVIDEND", "block_index": 310495, "event": "129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc", "quantity": 10}',0); -INSERT INTO messages VALUES(120,310495,'insert','sends','{"asset": "DIVIDEND", "block_index": 310495, "destination": "mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj", "quantity": 10, "source": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "status": "valid", "tx_hash": "129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc", "tx_index": 496}',0); -INSERT INTO messages VALUES(121,310496,'insert','debits','{"action": "send", "address": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "asset": "XCP", "block_index": 310496, "event": "1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6", "quantity": 92945878046}',0); -INSERT INTO messages VALUES(122,310496,'insert','credits','{"action": "send", "address": "mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj", "asset": "XCP", "block_index": 310496, "event": "1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6", "quantity": 92945878046}',0); -INSERT INTO messages VALUES(123,310496,'insert','sends','{"asset": "XCP", "block_index": 310496, "destination": "mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj", "quantity": 92945878046, "source": "mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH", "status": "valid", "tx_hash": "1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6", "tx_index": 497}',0); -INSERT INTO messages VALUES(124,310497,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310497, "event": "076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f", "quantity": 50000000}',0); -INSERT INTO messages VALUES(125,310497,'insert','issuances','{"asset": "PARENT", "asset_longname": null, "block_index": 310497, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Parent asset", "divisible": true, "fee_paid": 50000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f", "tx_index": 498}',0); -INSERT INTO messages VALUES(126,310497,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "PARENT", "block_index": 310497, "event": "076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f", "quantity": 100000000}',0); -INSERT INTO messages VALUES(127,310498,'insert','debits','{"action": "issuance fee", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "XCP", "block_index": 310498, "event": "0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf", "quantity": 25000000}',0); -INSERT INTO messages VALUES(128,310498,'insert','issuances','{"asset": "A95428956661682277", "asset_longname": "PARENT.already.issued", "block_index": 310498, "call_date": 0, "call_price": 0.0, "callable": false, "description": "Child of parent", "divisible": true, "fee_paid": 25000000, "issuer": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "locked": false, "quantity": 100000000, "source": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "status": "valid", "transfer": false, "tx_hash": "0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf", "tx_index": 499}',0); -INSERT INTO messages VALUES(129,310498,'insert','credits','{"action": "issuance", "address": "mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc", "asset": "A95428956661682277", "block_index": 310498, "event": "0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf", "quantity": 100000000}',0); --- Triggers and indices on messages -CREATE INDEX block_index_message_index_idx ON messages (block_index, message_index); - --- Table order_expirations -DROP TABLE IF EXISTS order_expirations; -CREATE TABLE order_expirations( - order_index INTEGER PRIMARY KEY, - order_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (order_index, order_hash) REFERENCES orders(tx_index, tx_hash)); --- Triggers and indices on order_expirations -CREATE TRIGGER _order_expirations_delete BEFORE DELETE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_expirations(rowid,order_index,order_hash,source,block_index) VALUES('||old.rowid||','||quote(old.order_index)||','||quote(old.order_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_expirations_insert AFTER INSERT ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_expirations_update AFTER UPDATE ON order_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_expirations SET order_index='||quote(old.order_index)||',order_hash='||quote(old.order_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_match_expirations -DROP TABLE IF EXISTS order_match_expirations; -CREATE TABLE order_match_expirations( - order_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (order_match_id) REFERENCES order_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on order_match_expirations -CREATE TRIGGER _order_match_expirations_delete BEFORE DELETE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_match_expirations(rowid,order_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.order_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _order_match_expirations_insert AFTER INSERT ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_match_expirations_update AFTER UPDATE ON order_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_match_expirations SET order_match_id='||quote(old.order_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table order_matches -DROP TABLE IF EXISTS order_matches; -CREATE TABLE order_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - forward_asset TEXT, - forward_quantity INTEGER, - backward_asset TEXT, - backward_quantity INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - fee_paid INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); -INSERT INTO order_matches VALUES('9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09_2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4',492,'9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',493,'2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'BTC',800000,310491,310492,310492,2000,2000,310512,7200,'pending'); --- Triggers and indices on order_matches -CREATE TRIGGER _order_matches_delete BEFORE DELETE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO order_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,forward_asset,forward_quantity,backward_asset,backward_quantity,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,fee_paid,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.forward_asset)||','||quote(old.forward_quantity)||','||quote(old.backward_asset)||','||quote(old.backward_quantity)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.fee_paid)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _order_matches_insert AFTER INSERT ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM order_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _order_matches_update AFTER UPDATE ON order_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE order_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',forward_asset='||quote(old.forward_asset)||',forward_quantity='||quote(old.forward_quantity)||',backward_asset='||quote(old.backward_asset)||',backward_quantity='||quote(old.backward_quantity)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',fee_paid='||quote(old.fee_paid)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX backward_status_idx ON order_matches (backward_asset, status); -CREATE INDEX forward_status_idx ON order_matches (forward_asset, status); -CREATE INDEX match_expire_idx ON order_matches (status, match_expire_index); -CREATE INDEX tx0_address_idx ON order_matches (tx0_address); -CREATE INDEX tx1_address_idx ON order_matches (tx1_address); - --- Table orders -DROP TABLE IF EXISTS orders; -CREATE TABLE orders( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - give_asset TEXT, - give_quantity INTEGER, - give_remaining INTEGER, - get_asset TEXT, - get_quantity INTEGER, - get_remaining INTEGER, - expiration INTEGER, - expire_index INTEGER, - fee_required INTEGER, - fee_required_remaining INTEGER, - fee_provided INTEGER, - fee_provided_remaining INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); -INSERT INTO orders VALUES(7,'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3',310006,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'DIVISIBLE',100000000,100000000,2000,312006,0,0,6800,6800,'open'); -INSERT INTO orders VALUES(10,'d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391',310009,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'DIVISIBLE',100000000,100000000,2000,312009,0,0,6800,6800,'open'); -INSERT INTO orders VALUES(11,'c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145',310010,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,100000000,'BTC',1000000,1000000,2000,312010,900000,900000,6800,6800,'open'); -INSERT INTO orders VALUES(12,'601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e',310011,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','BTC',666667,666667,'XCP',100000000,100000000,2000,312011,0,0,1000000,1000000,'open'); -INSERT INTO orders VALUES(492,'9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09',310491,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,0,'BTC',800000,0,2000,312491,900000,892800,6800,6800,'open'); -INSERT INTO orders VALUES(493,'2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4',310492,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','BTC',800000,0,'XCP',100000000,0,2000,312492,0,0,1000000,992800,'open'); --- Triggers and indices on orders -CREATE TRIGGER _orders_delete BEFORE DELETE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO orders(rowid,tx_index,tx_hash,block_index,source,give_asset,give_quantity,give_remaining,get_asset,get_quantity,get_remaining,expiration,expire_index,fee_required,fee_required_remaining,fee_provided,fee_provided_remaining,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.give_asset)||','||quote(old.give_quantity)||','||quote(old.give_remaining)||','||quote(old.get_asset)||','||quote(old.get_quantity)||','||quote(old.get_remaining)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.fee_required)||','||quote(old.fee_required_remaining)||','||quote(old.fee_provided)||','||quote(old.fee_provided_remaining)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _orders_insert AFTER INSERT ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM orders WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _orders_update AFTER UPDATE ON orders BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE orders SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',give_asset='||quote(old.give_asset)||',give_quantity='||quote(old.give_quantity)||',give_remaining='||quote(old.give_remaining)||',get_asset='||quote(old.get_asset)||',get_quantity='||quote(old.get_quantity)||',get_remaining='||quote(old.get_remaining)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',fee_required='||quote(old.fee_required)||',fee_required_remaining='||quote(old.fee_required_remaining)||',fee_provided='||quote(old.fee_provided)||',fee_provided_remaining='||quote(old.fee_provided_remaining)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX expire_idx ON orders (expire_index, status); -CREATE INDEX give_asset_idx ON orders (give_asset); -CREATE INDEX give_get_status_idx ON orders (get_asset, give_asset, status); -CREATE INDEX give_status_idx ON orders (give_asset, status); -CREATE INDEX source_give_status_idx ON orders (source, give_asset, status); - --- Table rps -DROP TABLE IF EXISTS rps; -CREATE TABLE rps( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - possible_moves INTEGER, - wager INTEGER, - move_random_hash TEXT, - expiration INTEGER, - expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - PRIMARY KEY (tx_index, tx_hash)); --- Triggers and indices on rps -CREATE TRIGGER _rps_delete BEFORE DELETE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps(rowid,tx_index,tx_hash,block_index,source,possible_moves,wager,move_random_hash,expiration,expire_index,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.possible_moves)||','||quote(old.wager)||','||quote(old.move_random_hash)||','||quote(old.expiration)||','||quote(old.expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_insert AFTER INSERT ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_update AFTER UPDATE ON rps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',possible_moves='||quote(old.possible_moves)||',wager='||quote(old.wager)||',move_random_hash='||quote(old.move_random_hash)||',expiration='||quote(old.expiration)||',expire_index='||quote(old.expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX matching_idx ON rps (wager, possible_moves); - --- Table rps_expirations -DROP TABLE IF EXISTS rps_expirations; -CREATE TABLE rps_expirations( - rps_index INTEGER PRIMARY KEY, - rps_hash TEXT UNIQUE, - source TEXT, - block_index INTEGER, - FOREIGN KEY (block_index) REFERENCES blocks(block_index), - FOREIGN KEY (rps_index, rps_hash) REFERENCES rps(tx_index, tx_hash)); --- Triggers and indices on rps_expirations -CREATE TRIGGER _rps_expirations_delete BEFORE DELETE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_expirations(rowid,rps_index,rps_hash,source,block_index) VALUES('||old.rowid||','||quote(old.rps_index)||','||quote(old.rps_hash)||','||quote(old.source)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_expirations_insert AFTER INSERT ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_expirations_update AFTER UPDATE ON rps_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_expirations SET rps_index='||quote(old.rps_index)||',rps_hash='||quote(old.rps_hash)||',source='||quote(old.source)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_match_expirations -DROP TABLE IF EXISTS rps_match_expirations; -CREATE TABLE rps_match_expirations( - rps_match_id TEXT PRIMARY KEY, - tx0_address TEXT, - tx1_address TEXT, - block_index INTEGER, - FOREIGN KEY (rps_match_id) REFERENCES rps_matches(id), - FOREIGN KEY (block_index) REFERENCES blocks(block_index)); --- Triggers and indices on rps_match_expirations -CREATE TRIGGER _rps_match_expirations_delete BEFORE DELETE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_match_expirations(rowid,rps_match_id,tx0_address,tx1_address,block_index) VALUES('||old.rowid||','||quote(old.rps_match_id)||','||quote(old.tx0_address)||','||quote(old.tx1_address)||','||quote(old.block_index)||')'); - END; -CREATE TRIGGER _rps_match_expirations_insert AFTER INSERT ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_match_expirations WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_match_expirations_update AFTER UPDATE ON rps_match_expirations BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_match_expirations SET rps_match_id='||quote(old.rps_match_id)||',tx0_address='||quote(old.tx0_address)||',tx1_address='||quote(old.tx1_address)||',block_index='||quote(old.block_index)||' WHERE rowid='||old.rowid); - END; - --- Table rps_matches -DROP TABLE IF EXISTS rps_matches; -CREATE TABLE rps_matches( - id TEXT PRIMARY KEY, - tx0_index INTEGER, - tx0_hash TEXT, - tx0_address TEXT, - tx1_index INTEGER, - tx1_hash TEXT, - tx1_address TEXT, - tx0_move_random_hash TEXT, - tx1_move_random_hash TEXT, - wager INTEGER, - possible_moves INTEGER, - tx0_block_index INTEGER, - tx1_block_index INTEGER, - block_index INTEGER, - tx0_expiration INTEGER, - tx1_expiration INTEGER, - match_expire_index INTEGER, - status TEXT, - FOREIGN KEY (tx0_index, tx0_hash, tx0_block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - FOREIGN KEY (tx1_index, tx1_hash, tx1_block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rps_matches -CREATE TRIGGER _rps_matches_delete BEFORE DELETE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rps_matches(rowid,id,tx0_index,tx0_hash,tx0_address,tx1_index,tx1_hash,tx1_address,tx0_move_random_hash,tx1_move_random_hash,wager,possible_moves,tx0_block_index,tx1_block_index,block_index,tx0_expiration,tx1_expiration,match_expire_index,status) VALUES('||old.rowid||','||quote(old.id)||','||quote(old.tx0_index)||','||quote(old.tx0_hash)||','||quote(old.tx0_address)||','||quote(old.tx1_index)||','||quote(old.tx1_hash)||','||quote(old.tx1_address)||','||quote(old.tx0_move_random_hash)||','||quote(old.tx1_move_random_hash)||','||quote(old.wager)||','||quote(old.possible_moves)||','||quote(old.tx0_block_index)||','||quote(old.tx1_block_index)||','||quote(old.block_index)||','||quote(old.tx0_expiration)||','||quote(old.tx1_expiration)||','||quote(old.match_expire_index)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rps_matches_insert AFTER INSERT ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rps_matches WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rps_matches_update AFTER UPDATE ON rps_matches BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rps_matches SET id='||quote(old.id)||',tx0_index='||quote(old.tx0_index)||',tx0_hash='||quote(old.tx0_hash)||',tx0_address='||quote(old.tx0_address)||',tx1_index='||quote(old.tx1_index)||',tx1_hash='||quote(old.tx1_hash)||',tx1_address='||quote(old.tx1_address)||',tx0_move_random_hash='||quote(old.tx0_move_random_hash)||',tx1_move_random_hash='||quote(old.tx1_move_random_hash)||',wager='||quote(old.wager)||',possible_moves='||quote(old.possible_moves)||',tx0_block_index='||quote(old.tx0_block_index)||',tx1_block_index='||quote(old.tx1_block_index)||',block_index='||quote(old.block_index)||',tx0_expiration='||quote(old.tx0_expiration)||',tx1_expiration='||quote(old.tx1_expiration)||',match_expire_index='||quote(old.match_expire_index)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_expire_idx ON rps_matches (status, match_expire_index); -CREATE INDEX rps_tx0_address_idx ON rps_matches (tx0_address); -CREATE INDEX rps_tx1_address_idx ON rps_matches (tx1_address); - --- Table rpsresolves -DROP TABLE IF EXISTS rpsresolves; -CREATE TABLE rpsresolves( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - move INTEGER, - random TEXT, - rps_match_id TEXT, - status TEXT, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on rpsresolves -CREATE TRIGGER _rpsresolves_delete BEFORE DELETE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO rpsresolves(rowid,tx_index,tx_hash,block_index,source,move,random,rps_match_id,status) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.move)||','||quote(old.random)||','||quote(old.rps_match_id)||','||quote(old.status)||')'); - END; -CREATE TRIGGER _rpsresolves_insert AFTER INSERT ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM rpsresolves WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _rpsresolves_update AFTER UPDATE ON rpsresolves BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE rpsresolves SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',move='||quote(old.move)||',random='||quote(old.random)||',rps_match_id='||quote(old.rps_match_id)||',status='||quote(old.status)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX rps_match_id_idx ON rpsresolves (rps_match_id); - --- Table sends -DROP TABLE IF EXISTS sends; -CREATE TABLE "sends"( - tx_index INTEGER, - tx_hash TEXT, - block_index INTEGER, - source TEXT, - destination TEXT, - asset TEXT, - quantity INTEGER, - status TEXT, - msg_index INTEGER DEFAULT 0, memo BLOB, - PRIMARY KEY (tx_index, msg_index), - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index), - UNIQUE (tx_hash, msg_index) ON CONFLICT FAIL); -INSERT INTO sends VALUES(8,'95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef',310007,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','DIVISIBLE',100000000,'valid',0,NULL); -INSERT INTO sends VALUES(9,'8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc',310008,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'valid',0,NULL); -INSERT INTO sends VALUES(13,'1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568',310012,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','XCP',300000000,'valid',0,NULL); -INSERT INTO sends VALUES(14,'62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd',310013,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','DIVISIBLE',1000000000,'valid',0,NULL); -INSERT INTO sends VALUES(15,'9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba',310014,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','NODIVISIBLE',5,'valid',0,NULL); -INSERT INTO sends VALUES(16,'62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4',310015,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2','NODIVISIBLE',10,'valid',0,NULL); -INSERT INTO sends VALUES(111,'f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481',310110,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','DIVISIBLE',100000000,'valid',0,NULL); -INSERT INTO sends VALUES(482,'b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5',310481,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','XCP',100000000,'valid',0,X'68656C6C6F'); -INSERT INTO sends VALUES(483,'c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34',310482,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','XCP',100000000,'valid',0,X'FADE0001'); -INSERT INTO sends VALUES(496,'129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc',310495,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','DIVIDEND',10,'valid',0,NULL); -INSERT INTO sends VALUES(497,'1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6',310496,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj','XCP',92945878046,'valid',0,NULL); --- Triggers and indices on sends -CREATE TRIGGER _sends_delete BEFORE DELETE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sends(rowid,tx_index,tx_hash,block_index,source,destination,asset,quantity,status,msg_index,memo) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.asset)||','||quote(old.quantity)||','||quote(old.status)||','||quote(old.msg_index)||','||quote(old.memo)||')'); - END; -CREATE TRIGGER _sends_insert AFTER INSERT ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sends WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sends_update AFTER UPDATE ON sends BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sends SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',asset='||quote(old.asset)||',quantity='||quote(old.quantity)||',status='||quote(old.status)||',msg_index='||quote(old.msg_index)||',memo='||quote(old.memo)||' WHERE rowid='||old.rowid); - END; -CREATE INDEX destination_idx ON sends (destination); -CREATE INDEX memo_idx ON sends (memo); -CREATE INDEX source_idx ON sends (source); - --- Table sweeps -DROP TABLE IF EXISTS sweeps; -CREATE TABLE sweeps( - tx_index INTEGER PRIMARY KEY, - tx_hash TEXT UNIQUE, - block_index INTEGER, - source TEXT, - destination TEXT, - flags INTEGER, - status TEXT, - memo BLOB, - fee_paid INTEGER, - FOREIGN KEY (tx_index, tx_hash, block_index) REFERENCES transactions(tx_index, tx_hash, block_index)); --- Triggers and indices on sweeps -CREATE TRIGGER _sweeps_delete BEFORE DELETE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'INSERT INTO sweeps(rowid,tx_index,tx_hash,block_index,source,destination,flags,status,memo,fee_paid) VALUES('||old.rowid||','||quote(old.tx_index)||','||quote(old.tx_hash)||','||quote(old.block_index)||','||quote(old.source)||','||quote(old.destination)||','||quote(old.flags)||','||quote(old.status)||','||quote(old.memo)||','||quote(old.fee_paid)||')'); - END; -CREATE TRIGGER _sweeps_insert AFTER INSERT ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'DELETE FROM sweeps WHERE rowid='||new.rowid); - END; -CREATE TRIGGER _sweeps_update AFTER UPDATE ON sweeps BEGIN - INSERT INTO undolog VALUES(NULL, 'UPDATE sweeps SET tx_index='||quote(old.tx_index)||',tx_hash='||quote(old.tx_hash)||',block_index='||quote(old.block_index)||',source='||quote(old.source)||',destination='||quote(old.destination)||',flags='||quote(old.flags)||',status='||quote(old.status)||',memo='||quote(old.memo)||',fee_paid='||quote(old.fee_paid)||' WHERE rowid='||old.rowid); - END; - --- Table transactions -DROP TABLE IF EXISTS transactions; -CREATE TABLE transactions( - tx_index INTEGER UNIQUE, - tx_hash TEXT UNIQUE, - block_index INTEGER, - block_hash TEXT, - block_time INTEGER, - source TEXT, - destination TEXT, - btc_amount INTEGER, - fee INTEGER, - data BLOB, - supported BOOL DEFAULT 1, - FOREIGN KEY (block_index, block_hash) REFERENCES blocks(block_index, block_hash), - PRIMARY KEY (tx_index, tx_hash, block_index)); -INSERT INTO transactions VALUES(1,'6dc5b0a33d4d4297e0f5cc2d23ae307951d32aab2d86b7fa147b385219f3a597',310000,'505d8d82c4ced7daddef7ed0b05ba12ecc664176887b938ef56c6af276f3b30c',310000000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); -INSERT INTO transactions VALUES(2,'9cd12fbcb360926dfbc6fc57c2e513a149a66fd12092453c2765bc89d725d57e',310001,'3c9f6a9c6cac46a9273bd3db39ad775acd5bc546378ec2fb0587e06e112cc78e',310001000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'00000014000000A25BE34B66000000174876E800010000000000000000000F446976697369626C65206173736574',1); -INSERT INTO transactions VALUES(3,'2efe98f74b6d5963e271457253e6a1748a90992eb0531d60a615d3ccc3986b73',310002,'fbb60f1144e1f7d4dc036a4a158a10ea6dea2ba6283a723342a49b8eb5cc9964',310002000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'000000140006CAD8DC7F0B6600000000000003E800000000000000000000124E6F20646976697369626C65206173736574',1); -INSERT INTO transactions VALUES(4,'4361d0ef173c245f3cc5053d5e2513ef9120e5e8abcdcf7c86e164becd53ceeb',310003,'d50825dcb32bcf6f69994d616eba18de7718d3d859497e80751b2cb67e333e8a',310003000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001400000003C58E5C5600000000000003E8010000000000000000000E43616C6C61626C65206173736574',1); -INSERT INTO transactions VALUES(5,'e73d6a9873df9f2264fe2d7f2da66e3a8975bce90d9ec285e79eb47348b41fe1',310004,'60cdc0ac0e3121ceaa2c3885f21f5789f49992ffef6e6ff99f7da80e36744615',310004000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001400000000082C82E300000000000003E8010000000000000000000C4C6F636B6564206173736574',1); -INSERT INTO transactions VALUES(6,'1aa86ffaf6e3bafbd00660ccb794267a9e95814406394d2f1d5dbd6d2ef01579',310005,'8005c2926b7ecc50376642bc661a49108b6dc62636463a5c492b123e2184cd9a',310005000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001400000000082C82E3000000000000000001000000000000000000044C4F434B',1); -INSERT INTO transactions VALUES(7,'b0240284e3e44dfcae7bd3e6ea9d8152f8424bd55659df84c866e07a3f6566f3',310006,'bdad69d1669eace68b9f246de113161099d4f83322e2acf402c42defef3af2bb',310006000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000A25BE34B660000000005F5E10007D00000000000000000',1); -INSERT INTO transactions VALUES(8,'95f1a544034d2814b7c484e4525891813fa9c10bb71f012f70602f99f31195ef',310007,'10a642b96d60091d08234d17dfdecf3025eca41e4fc8e3bbe71a91c5a457cb4b',310007000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'00000000000000A25BE34B660000000005F5E100',1); -INSERT INTO transactions VALUES(9,'8d1e0fb12f2d7522615b11f81dcde1c58892f47e44b7f56b51f639440dbd4dbc',310008,'47d0e3acbdc6916aeae95e987f9cfa16209b3df1e67bb38143b3422b32322c33',310008000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'0000000000000000000000010000000005F5E100',1); -INSERT INTO transactions VALUES(10,'d83119298ac7c823cff97a1f9e333104696f19433e534eea64ebe0af42051391',310009,'4d474992b141620bf3753863db7ee5e8af26cadfbba27725911f44fa657bc1c0',310009000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000A25BE34B660000000005F5E10007D00000000000000000',1); -INSERT INTO transactions VALUES(11,'c073532bca106afd5faa1c6fde8d6b4d9cb148a8940fc05a5ba66c7757365145',310010,'a58162dff81a32e6a29b075be759dbb9fa9b8b65303e69c78fb4d7b0acc37042',310010000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000000000000000000000000F424007D000000000000DBBA0',1); -INSERT INTO transactions VALUES(12,'601cf81f77b46d4921ccd22a1156d8ca75bd7106570d9514101934e5ca644f3e',310011,'8042cc2ef293fd73d050f283fbd075c79dd4c49fdcca054dc0714fc3a50dc1bb',310011000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,1000000,X'0000000A000000000000000000000000000A2C2B00000000000000010000000005F5E10007D00000000000000000',1); -INSERT INTO transactions VALUES(13,'1acf929efa6296558b1335f3cf94bd7260979c531097e2c4d0efc3d333fa5568',310012,'cdba329019d93a67b31b79d05f76ce1b7791d430ea0d6c1c2168fe78d2f67677',310012000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'0000000000000000000000010000000011E1A300',1); -INSERT INTO transactions VALUES(14,'62dfaed0ee983d767b9aec98cc49d716b807281e9e8e5d5cd8c5207c0d2f15dd',310013,'0425e5e832e4286757dc0228cd505b8d572081007218abd3a0983a3bcd502a61',310013000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'00000000000000A25BE34B66000000003B9ACA00',1); -INSERT INTO transactions VALUES(15,'9bb2e42d2f4ab601b7e8f50364fb1caed9dc9e8dc9071f660804f559bef875ba',310014,'85b28d413ebda2968ed82ae53643677338650151b997ed1e4656158005b9f65f',310014000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns',5430,7650,X'000000000006CAD8DC7F0B660000000000000005',1); -INSERT INTO transactions VALUES(16,'62172989ab319f239125b4635102e593a01cb4e7ba70a42d533ed9c61fadcca4',310015,'4cf77d688f18f0c68c077db882f62e49f31859dfa6144372457cd73b29223922',310015000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','1_mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc_mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns_2',7800,7650,X'000000000006CAD8DC7F0B66000000000000000A',1); -INSERT INTO transactions VALUES(17,'19cf9fd72fd7c1c766589c39cbba55cfd7495047d1773fa46e6b91c16ad85f93',310016,'99dc7d2627efb4e5e618a53b9898b4ca39c70e98fe9bf39f68a6c980f5b64ef9',310016000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'000000140000000000033A3E7FFFFFFFFFFFFFFF01000000000000000000104D6178696D756D207175616E74697479',1); -INSERT INTO transactions VALUES(18,'3330c302fd75cb6b9e4d08ccc8821fee8f6f88c8a42123386941193813653c7a',310017,'8a4fedfbf734b91a5c5761a7bcb3908ea57169777a7018148c51ff611970e4a3',310017000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB33003FF0000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(19,'a9d599c0f1669b071bf107f7e90f88fe692d56ca00b81e57c71a56530590e7ee',310018,'35c06f9e3de39e4e56ceb1d1a22008f52361c50dd0d251c0acbe2e3c2dba8ed3',310018000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','',0,6800,X'0000001E4CC552003FF000000000000000000000046C6F636B',1); -INSERT INTO transactions VALUES(20,'c698148a6da277d898f71fb2efeabf9530af97dd834c698a1a62c85019430e0d',310019,'114affa0c4f34b1ebf8e2778c9477641f60b5b9e8a69052158041d4c41893294',310019000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000152BB3301000000000000000900000000000000090000000000000000000013B000000064',1); -INSERT INTO transactions VALUES(21,'acb20e35d26e55048ed34b3e1f4046a704c8b6d130a7d33c064cb04b24356ee0',310020,'d93c79920e4a42164af74ecb5c6b903ff6055cdc007376c74dfa692c8d85ebc9',310020000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000052BB3301000000000000000900000000000000090000000000000000000013B000000064',1); -INSERT INTO transactions VALUES(102,'aac845aa4eb4232be418d70586755f7b132dc33d418da3bc96ced4f79570a305',310101,'369472409995ca1a2ebecbad6bf9dab38c378ab1e67e1bdf13d4ce1346731cd6',310101000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc',5430,7650,X'00000028000352BB33C8000000000000000A000000000000000A0000000000000000000013B0000003E8',1); -INSERT INTO transactions VALUES(103,'8da9a88357858b606f32f406e9a3f41d838178d0e1eb142f7a680fe8c4371ad8',310102,'11e25883fd0479b78ddb1953ef67e3c3d1ffc82bd1f9e918a75c2194f7137f99',310102000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000001E52BB33023FF0000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(104,'65d4048700fb8ae03f321be93c6669b8497f506a1f43920f96d994f43358c35b',310103,'559a208afea6dd27b8bfeb031f1bd8f57182dcab6cf55c4089a6c49fb4744f17',310103000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,-99994375,X'',1); -INSERT INTO transactions VALUES(105,'95332a7e3e2b04f2c10e3027327bfc31b686947fb05381e28903e3ff569bd4ff',310104,'55b82e631b61d22a8524981ff3b5e3ab4ad7b732b7d1a06191064334b8f2dfd2',310104000,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,-99994375,X'',1); -INSERT INTO transactions VALUES(106,'e062d1ebf4cb71bd22d80c949b956f5286080838a7607ccf87945b2b3abfcafa',310105,'1d72cdf6c4a02a5f973e6eaa53c28e9e13014b4f5bb13f91621a911b27fe936a',310105000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,-99994375,X'',1); -INSERT INTO transactions VALUES(107,'bbf0b9f6992755a3e371fb0c0b72f6828831e81c6f7ada6f95ba1104fb901ac3',310106,'9d39cbe8c8a5357fc56e5c2f95bf132382ddad14cbc8abd54e549d58248140ff',310106000,'mrPk7hTeZWjjSCrMTC2ET4SAUThQt7C4uK','mvCounterpartyXXXXXXXXXXXXXXW24Hef',10000,5625,X'',1); -INSERT INTO transactions VALUES(108,'9834219d2825b4d85ca7ee0d75a5372d9d42ce75eb9144951fca1af5a25915ec',310107,'51cc04005e49fa49e661946a0e147240b0e5aac174252c96481ab7ddd5487435',310107000,'munimLLHjPhGeSU5rYB2HN79LJa8bRZr5b','',0,6150,X'0000000C000000000000000100000000000000640000000000000064000000000000006400',1); -INSERT INTO transactions VALUES(109,'93c6d2499a0536c31c77a3db3fc9fc8456fbd0726c45b8f716af16f938727a73',310108,'8f2d3861aa42f8e75dc14a23d6046bd89feef0d81996b6e1adc2a2828fbc8b34',310108000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','mvCounterpartyXXXXXXXXXXXXXXW24Hef',31000000,5625,X'',1); -INSERT INTO transactions VALUES(110,'ac74d6a7dcf68a578440851f0148cd4e6ade9416db80fd04c1b9c93e9e53d27e',310109,'d23aaaae55e6a912eaaa8d20fe2a9ad4819fe9dc1ed58977265af58fad89d8f9',310109000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','',0,6800,X'0000001400078A8FE2E5E44100000000000003E8000000000000000000001050534820697373756564206173736574',1); -INSERT INTO transactions VALUES(111,'f0d9e5f8a7d8a13b0d90f126c33843139a50e9d496f6a5ca90e832466e6c6481',310110,'cecc8e4791bd3081995bd9fd67acb6b97415facfd2b68f926a70b22d9a258382',310110000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',5430,7650,X'00000000000000A25BE34B660000000005F5E100',1); -INSERT INTO transactions VALUES(112,'510f6feb902159622d83f64eae590a4fec88989869a20caf5804c313aa5e0186',310111,'fde71b9756d5ba0b6d8b230ee885af01f9c4461a55dbde8678279166a21b20ae',310111000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','',0,5975,X'0000001E52BB33023FF0000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(113,'d79b590e4ec3e74cbc3eb4d0f956ce7abb0e3af2ccac85ff90ed8acf13f2e048',310112,'5b06f69bfdde1083785cf68ebc2211b464839033c30a099d3227b490bf3ab251',310112000,'2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy','2MyJHMUenMWonC35Yi6PHC7i2tkS7PuomCy',5430,7124,X'00000028000352BB33C8000000000000000A000000000000000A0000000000000000000013B0000003E8',1); -INSERT INTO transactions VALUES(114,'5f66cb2a8f0a4605cf274a21daf0a61af10fdf3fdc5210e5bcf8f9f3d26b0bc9',310113,'63914cf376d3076b697b9234810dfc084ed5a885d5cd188dd5462560da25d5e7',310113000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'00000014000038FEDF6D2C6900000000000003E8010000000000000000000C4C6F636B6564206173736574',1); -INSERT INTO transactions VALUES(115,'74aa7471cdb1b13162e0116dd0cbcc4022cbdbdadef0ee0c5b8d63e527e666fe',310114,'24fc2dded4f811eff58b32cda85d90fb5773e81b9267e9a03c359bc730d82283',310114000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'00000014000038FEDF6D2C69000000000000000001000000000000000000044C4F434B',1); -INSERT INTO transactions VALUES(116,'214edd39455a080e261e3c319f23d3fe5f064f48c044c0973811b6a85dd2990d',310115,'a632d67ff5f832fe9c3c675f855f08a4969c6d78c0211e71b2a24fe04be5656a',310115000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'00000014000038FEDF6D2C69000000000000000001000000000000000000076368616E676564',1); -INSERT INTO transactions VALUES(117,'27929c4fcad307a76ea7da34dd2691084f678a22ee43ce7f3842b78730ee08f9',310116,'8495ba36b331473c4f3529681a118a4cc4fa4d51cd9b8dccb1f13e5ef841dd84',310116000,'tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); -INSERT INTO transactions VALUES(482,'b00bdf03402d81a2cbdbeac4b0df90cff5ab6bf9688f653383d49fe42b8422a5',310481,'db37d8f98630ebc61767736ae2c523e4e930095bf54259c01de4d36fd60b6f4a',310481000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6375,X'0000000200000000000000010000000005F5E1006F8D6AE8A3B381663118B4E1EFF4CFC7D0954DD6EC68656C6C6F',1); -INSERT INTO transactions VALUES(483,'c8716524f33646b9af94d6f5e52494ff3b34466497094b1db2ab920e4f79bc34',310482,'2e27db87dfb6439c006637734e876cc662d1ca74c717756f90f0e535df0787d6',310482000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','',0,6350,X'0000000200000000000000010000000005F5E1006F4838D8B3588C4C7BA7C1D06F866E9B3739C63037FADE0001',1); -INSERT INTO transactions VALUES(487,'096883e142a87377d3a4103f4702556e25824f1e23667aceb1690f66e1417062',310486,'d4fbe610cc60987f2d1d35c7d8ad3ce32156ee5fe36ef8cc4f08b46836388862',310486000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','',0,6800,X'0000001E52BB33003FF0000000000000004C4B4009556E69742054657374',1); -INSERT INTO transactions VALUES(488,'2447f6974033ac41c40b4598dfb73fc7479fd85bb9d01de2267b3f7842803275',310487,'32aa1b132d0643350bbb62dbd5f38ae0c270d8f491a2012c83b99158d58e464f',310487000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM',5430,7650,X'00000028000152BB3301000000000000000900000000000000090000000000000000000013B000000064',1); -INSERT INTO transactions VALUES(489,'9b1cad827c97c463c2b39cc9d550693c438010ef85a10ee04d3db8699193e906',310488,'80b8dd5d7ce2e4886e6721095b892a39fb699980fe2bc1c17e747f822f4c4b1b',310488000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','',0,6800,X'0000001E52BB33023FF000000000000000000000096F7074696F6E732030',1); -INSERT INTO transactions VALUES(490,'9a39bade308462ec65be3c8420a0f2189b1d4e947d4c7950a37176de71de4f87',310489,'2efdb36f986b3e3ccc6cc9b0c1c3cdcb07429fb43cbc0cc3b6c87d1b33f258b6',310489000,'myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM','',0,6800,X'0000001E52BB33033FF000000000000000000000046C6F636B',1); -INSERT INTO transactions VALUES(491,'4b233a74b9db14a8619ee8ec5558149e53ab033be31e803257f760aa9ef2f3b9',310490,'e2cb04b8a7368c95359c9d5ff33e64209200fb606de0d64b7c0f67bb1cb8d87c',310490000,'mwtPsLQxW9xpm7gdLmwWvJK5ABdPUVJm42','',0,6800,X'0000001E52BB33043FF000000000000000000000096F7074696F6E732031',1); -INSERT INTO transactions VALUES(492,'9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09',310491,'811abd7cf2b768cfdaa84ab44c63f4463c96a368ead52125bf149cf0c7447b16',310491000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6800,X'0000000A00000000000000010000000005F5E100000000000000000000000000000C350007D000000000000DBBA0',1); -INSERT INTO transactions VALUES(493,'2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4',310492,'8a09b2faf0a7ad67eb4ab5c948b9769fc87eb2ec5e16108f2cde8bd9e6cf7607',310492000,'mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns','',0,1000000,X'0000000A000000000000000000000000000C350000000000000000010000000005F5E10007D00000000000000000',1); -INSERT INTO transactions VALUES(494,'c0733e1287afb1bb3d2fdacd1db7c74ea84f14362f3a8d1c038e662e1d0b1b1a',310493,'c19e2915b750279b2be4b52e57e5ce29f63dffb4e14d9aad30c9e820affc0cbf',310493000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mvCounterpartyXXXXXXXXXXXXXXW24Hef',62000000,5625,X'',1); -INSERT INTO transactions VALUES(495,'4bbddd2cf3a0fa225f926dcd9d4c2f097c57b7ed24d1ef72e86dd1bf865124b5',310494,'7dda1d3e12785313d5651ee5314d0aecf17588196f9150b10c55695dbaebee5d',310494000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','',0,6800,X'00000014000000063E985FFD0000000000000064010000000000000000000D54657374206469766964656E64',1); -INSERT INTO transactions VALUES(496,'129c05d3d374b75f05557ea2a014a2b93e99672b5f0cf542f9542768a19e20bc',310495,'4769aa7030f28a05a137a85ef4ee0c1765c37013773212b93ec90f1227168b67',310495000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj',5430,7650,X'00000000000000063E985FFD000000000000000A',1); -INSERT INTO transactions VALUES(497,'1410217c3b1b38ea0b90940f20b874a2375c457b0828de9f9808e4fd63fd54e6',310496,'65884816927e8c566655e85c07bc2bc2c7ee26e625742f219939d43238fb31f8',310496000,'mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH','mqPCfvqTfYctXMUfmniXeG2nyaN8w6tPmj',5430,7650,X'00000000000000000000000100000015A4018C1E',1); -INSERT INTO transactions VALUES(498,'076ae3d8eeb7fb40d2ae27692340157c746d9832806766b0dac5adb1526dc78f',310497,'f1118591fe79b8bf52ccf0c5de9826bfd266b1fdc24b44676cf22bbcc76d464e',310497000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6300,X'00000014000000000AA4097D0000000005F5E100010000000000000000000C506172656E74206173736574',1); -INSERT INTO transactions VALUES(499,'0abfce2662c05852fd8b181a60900678643cedad47b23a853b8c4eda82cb2cbf',310498,'b7058b6d1ddc325a10bf33144937e06ce6025215b416518ae120da9440ae279e',310498000,'mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc','',0,6550,X'0000001501530821671B10650000000005F5E10001108E90A57DBA9967C422E83080F22F0C684368696C64206F6620706172656E74',1); --- Triggers and indices on transactions -CREATE INDEX index_hash_index_idx ON transactions (tx_index, tx_hash, block_index); -CREATE INDEX index_index_idx ON transactions (block_index, tx_index); -CREATE INDEX tx_hash_idx ON transactions (tx_hash); -CREATE INDEX tx_index_idx ON transactions (tx_index); - --- Table undolog -DROP TABLE IF EXISTS undolog; -CREATE TABLE undolog( - undo_index INTEGER PRIMARY KEY AUTOINCREMENT, - sql TEXT); -INSERT INTO undolog VALUES(152,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92050000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(153,'DELETE FROM debits WHERE rowid=26'); -INSERT INTO undolog VALUES(154,'UPDATE balances SET address=''mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'',asset=''XCP'',quantity=99999990 WHERE rowid=7'); -INSERT INTO undolog VALUES(155,'DELETE FROM credits WHERE rowid=27'); -INSERT INTO undolog VALUES(156,'DELETE FROM sends WHERE rowid=8'); -INSERT INTO undolog VALUES(157,'UPDATE balances SET address=''mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'',asset=''XCP'',quantity=199999990 WHERE rowid=7'); -INSERT INTO undolog VALUES(158,'DELETE FROM debits WHERE rowid=27'); -INSERT INTO undolog VALUES(159,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=91950000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(160,'DELETE FROM credits WHERE rowid=28'); -INSERT INTO undolog VALUES(161,'DELETE FROM sends WHERE rowid=9'); -INSERT INTO undolog VALUES(162,'DELETE FROM broadcasts WHERE rowid=487'); -INSERT INTO undolog VALUES(163,'UPDATE balances SET address=''myAtcJEHAsDLbTkai6ipWDZeeL7VkxXsiM'',asset=''XCP'',quantity=92999138821 WHERE rowid=13'); -INSERT INTO undolog VALUES(164,'DELETE FROM debits WHERE rowid=28'); -INSERT INTO undolog VALUES(165,'DELETE FROM bets WHERE rowid=5'); -INSERT INTO undolog VALUES(166,'DELETE FROM broadcasts WHERE rowid=489'); -INSERT INTO undolog VALUES(167,'DELETE FROM addresses WHERE rowid=1'); -INSERT INTO undolog VALUES(168,'DELETE FROM broadcasts WHERE rowid=490'); -INSERT INTO undolog VALUES(169,'DELETE FROM broadcasts WHERE rowid=491'); -INSERT INTO undolog VALUES(170,'DELETE FROM addresses WHERE rowid=2'); -INSERT INTO undolog VALUES(171,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=92050000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(172,'DELETE FROM debits WHERE rowid=29'); -INSERT INTO undolog VALUES(173,'DELETE FROM orders WHERE rowid=5'); -INSERT INTO undolog VALUES(174,'DELETE FROM orders WHERE rowid=6'); -INSERT INTO undolog VALUES(175,'UPDATE orders SET tx_index=492,tx_hash=''9824ae8e25cedac1ab4f327198f1fb2f79106a281926971bcfa465a490066b09'',block_index=310491,source=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',give_asset=''XCP'',give_quantity=100000000,give_remaining=100000000,get_asset=''BTC'',get_quantity=800000,get_remaining=800000,expiration=2000,expire_index=312491,fee_required=900000,fee_required_remaining=900000,fee_provided=6800,fee_provided_remaining=6800,status=''open'' WHERE rowid=5'); -INSERT INTO undolog VALUES(176,'UPDATE orders SET tx_index=493,tx_hash=''2bbbe2bb7716c425c52891010c693b5ed2335d338cf271df0ff34e95dc026de4'',block_index=310492,source=''mtQheFaSfWELRB2MyMBaiWjdDm6ux9Ezns'',give_asset=''BTC'',give_quantity=800000,give_remaining=800000,get_asset=''XCP'',get_quantity=100000000,get_remaining=100000000,expiration=2000,expire_index=312492,fee_required=0,fee_required_remaining=0,fee_provided=1000000,fee_provided_remaining=1000000,status=''open'' WHERE rowid=6'); -INSERT INTO undolog VALUES(177,'DELETE FROM order_matches WHERE rowid=1'); -INSERT INTO undolog VALUES(178,'DELETE FROM balances WHERE rowid=22'); -INSERT INTO undolog VALUES(179,'DELETE FROM credits WHERE rowid=29'); -INSERT INTO undolog VALUES(180,'DELETE FROM burns WHERE rowid=494'); -INSERT INTO undolog VALUES(181,'UPDATE balances SET address=''mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH'',asset=''XCP'',quantity=92995878046 WHERE rowid=22'); -INSERT INTO undolog VALUES(182,'DELETE FROM debits WHERE rowid=30'); -INSERT INTO undolog VALUES(183,'DELETE FROM assets WHERE rowid=10'); -INSERT INTO undolog VALUES(184,'DELETE FROM issuances WHERE rowid=11'); -INSERT INTO undolog VALUES(185,'DELETE FROM balances WHERE rowid=23'); -INSERT INTO undolog VALUES(186,'DELETE FROM credits WHERE rowid=30'); -INSERT INTO undolog VALUES(187,'UPDATE balances SET address=''mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH'',asset=''DIVIDEND'',quantity=100 WHERE rowid=23'); -INSERT INTO undolog VALUES(188,'DELETE FROM debits WHERE rowid=31'); -INSERT INTO undolog VALUES(189,'DELETE FROM balances WHERE rowid=24'); -INSERT INTO undolog VALUES(190,'DELETE FROM credits WHERE rowid=31'); -INSERT INTO undolog VALUES(191,'DELETE FROM sends WHERE rowid=10'); -INSERT INTO undolog VALUES(192,'UPDATE balances SET address=''mnfAHmddVibnZNSkh8DvKaQoiEfNsxjXzH'',asset=''XCP'',quantity=92945878046 WHERE rowid=22'); -INSERT INTO undolog VALUES(193,'DELETE FROM debits WHERE rowid=32'); -INSERT INTO undolog VALUES(194,'DELETE FROM balances WHERE rowid=25'); -INSERT INTO undolog VALUES(195,'DELETE FROM credits WHERE rowid=32'); -INSERT INTO undolog VALUES(196,'DELETE FROM sends WHERE rowid=11'); -INSERT INTO undolog VALUES(197,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=91950000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(198,'DELETE FROM debits WHERE rowid=33'); -INSERT INTO undolog VALUES(199,'DELETE FROM assets WHERE rowid=11'); -INSERT INTO undolog VALUES(200,'DELETE FROM issuances WHERE rowid=12'); -INSERT INTO undolog VALUES(201,'DELETE FROM balances WHERE rowid=26'); -INSERT INTO undolog VALUES(202,'DELETE FROM credits WHERE rowid=33'); -INSERT INTO undolog VALUES(203,'UPDATE balances SET address=''mn6q3dS2EnDUx3bmyWc6D4szJNVGtaR7zc'',asset=''XCP'',quantity=91900000000 WHERE rowid=1'); -INSERT INTO undolog VALUES(204,'DELETE FROM debits WHERE rowid=34'); -INSERT INTO undolog VALUES(205,'DELETE FROM assets WHERE rowid=12'); -INSERT INTO undolog VALUES(206,'DELETE FROM issuances WHERE rowid=13'); -INSERT INTO undolog VALUES(207,'DELETE FROM balances WHERE rowid=27'); -INSERT INTO undolog VALUES(208,'DELETE FROM credits WHERE rowid=34'); - --- Table undolog_block -DROP TABLE IF EXISTS undolog_block; -CREATE TABLE undolog_block( - block_index INTEGER PRIMARY KEY, - first_undo_index INTEGER); -INSERT INTO undolog_block VALUES(310400,152); -INSERT INTO undolog_block VALUES(310401,152); -INSERT INTO undolog_block VALUES(310402,152); -INSERT INTO undolog_block VALUES(310403,152); -INSERT INTO undolog_block VALUES(310404,152); -INSERT INTO undolog_block VALUES(310405,152); -INSERT INTO undolog_block VALUES(310406,152); -INSERT INTO undolog_block VALUES(310407,152); -INSERT INTO undolog_block VALUES(310408,152); -INSERT INTO undolog_block VALUES(310409,152); -INSERT INTO undolog_block VALUES(310410,152); -INSERT INTO undolog_block VALUES(310411,152); -INSERT INTO undolog_block VALUES(310412,152); -INSERT INTO undolog_block VALUES(310413,152); -INSERT INTO undolog_block VALUES(310414,152); -INSERT INTO undolog_block VALUES(310415,152); -INSERT INTO undolog_block VALUES(310416,152); -INSERT INTO undolog_block VALUES(310417,152); -INSERT INTO undolog_block VALUES(310418,152); -INSERT INTO undolog_block VALUES(310419,152); -INSERT INTO undolog_block VALUES(310420,152); -INSERT INTO undolog_block VALUES(310421,152); -INSERT INTO undolog_block VALUES(310422,152); -INSERT INTO undolog_block VALUES(310423,152); -INSERT INTO undolog_block VALUES(310424,152); -INSERT INTO undolog_block VALUES(310425,152); -INSERT INTO undolog_block VALUES(310426,152); -INSERT INTO undolog_block VALUES(310427,152); -INSERT INTO undolog_block VALUES(310428,152); -INSERT INTO undolog_block VALUES(310429,152); -INSERT INTO undolog_block VALUES(310430,152); -INSERT INTO undolog_block VALUES(310431,152); -INSERT INTO undolog_block VALUES(310432,152); -INSERT INTO undolog_block VALUES(310433,152); -INSERT INTO undolog_block VALUES(310434,152); -INSERT INTO undolog_block VALUES(310435,152); -INSERT INTO undolog_block VALUES(310436,152); -INSERT INTO undolog_block VALUES(310437,152); -INSERT INTO undolog_block VALUES(310438,152); -INSERT INTO undolog_block VALUES(310439,152); -INSERT INTO undolog_block VALUES(310440,152); -INSERT INTO undolog_block VALUES(310441,152); -INSERT INTO undolog_block VALUES(310442,152); -INSERT INTO undolog_block VALUES(310443,152); -INSERT INTO undolog_block VALUES(310444,152); -INSERT INTO undolog_block VALUES(310445,152); -INSERT INTO undolog_block VALUES(310446,152); -INSERT INTO undolog_block VALUES(310447,152); -INSERT INTO undolog_block VALUES(310448,152); -INSERT INTO undolog_block VALUES(310449,152); -INSERT INTO undolog_block VALUES(310450,152); -INSERT INTO undolog_block VALUES(310451,152); -INSERT INTO undolog_block VALUES(310452,152); -INSERT INTO undolog_block VALUES(310453,152); -INSERT INTO undolog_block VALUES(310454,152); -INSERT INTO undolog_block VALUES(310455,152); -INSERT INTO undolog_block VALUES(310456,152); -INSERT INTO undolog_block VALUES(310457,152); -INSERT INTO undolog_block VALUES(310458,152); -INSERT INTO undolog_block VALUES(310459,152); -INSERT INTO undolog_block VALUES(310460,152); -INSERT INTO undolog_block VALUES(310461,152); -INSERT INTO undolog_block VALUES(310462,152); -INSERT INTO undolog_block VALUES(310463,152); -INSERT INTO undolog_block VALUES(310464,152); -INSERT INTO undolog_block VALUES(310465,152); -INSERT INTO undolog_block VALUES(310466,152); -INSERT INTO undolog_block VALUES(310467,152); -INSERT INTO undolog_block VALUES(310468,152); -INSERT INTO undolog_block VALUES(310469,152); -INSERT INTO undolog_block VALUES(310470,152); -INSERT INTO undolog_block VALUES(310471,152); -INSERT INTO undolog_block VALUES(310472,152); -INSERT INTO undolog_block VALUES(310473,152); -INSERT INTO undolog_block VALUES(310474,152); -INSERT INTO undolog_block VALUES(310475,152); -INSERT INTO undolog_block VALUES(310476,152); -INSERT INTO undolog_block VALUES(310477,152); -INSERT INTO undolog_block VALUES(310478,152); -INSERT INTO undolog_block VALUES(310479,152); -INSERT INTO undolog_block VALUES(310480,152); -INSERT INTO undolog_block VALUES(310481,152); -INSERT INTO undolog_block VALUES(310482,157); -INSERT INTO undolog_block VALUES(310483,162); -INSERT INTO undolog_block VALUES(310484,162); -INSERT INTO undolog_block VALUES(310485,162); -INSERT INTO undolog_block VALUES(310486,162); -INSERT INTO undolog_block VALUES(310487,163); -INSERT INTO undolog_block VALUES(310488,166); -INSERT INTO undolog_block VALUES(310489,168); -INSERT INTO undolog_block VALUES(310490,169); -INSERT INTO undolog_block VALUES(310491,171); -INSERT INTO undolog_block VALUES(310492,174); -INSERT INTO undolog_block VALUES(310493,178); -INSERT INTO undolog_block VALUES(310494,181); -INSERT INTO undolog_block VALUES(310495,187); -INSERT INTO undolog_block VALUES(310496,192); -INSERT INTO undolog_block VALUES(310497,197); -INSERT INTO undolog_block VALUES(310498,203); -INSERT INTO undolog_block VALUES(310499,209); -INSERT INTO undolog_block VALUES(310500,209); - --- For primary key autoincrements the next id to use is stored in --- sqlite_sequence -DELETE FROM main.sqlite_sequence WHERE name='undolog'; -INSERT INTO main.sqlite_sequence VALUES ('undolog', 208); - -COMMIT TRANSACTION; diff --git a/counterpartylib/test/reparse_test.py b/counterpartylib/test/reparse_test.py deleted file mode 100644 index 6dc684002f..0000000000 --- a/counterpartylib/test/reparse_test.py +++ /dev/null @@ -1,15 +0,0 @@ -#! /usr/bin/python3 -import tempfile -import pytest - -from counterpartylib.test import conftest # this is require near the top to do setup of the test suite -from counterpartylib.test import util_test -from counterpartylib.test.util_test import CURR_DIR -from counterpartylib import server -from counterpartylib.lib import (config, check, database) - - -def test_book(testnet): - """Reparse all the transactions in the database to see check blockhain's integrity.""" - conftest.DISABLE_ALL_MOCK_PROTOCOL_CHANGES_AT_BLOCK = True - util_test.reparse(testnet=testnet) diff --git a/docker/bitcoind/Dockerfile b/docker/bitcoind/Dockerfile new file mode 100644 index 0000000000..e50bf9f977 --- /dev/null +++ b/docker/bitcoind/Dockerfile @@ -0,0 +1,3 @@ +FROM kylemanna/bitcoind + +COPY bitcoin.conf /bitcoin/.bitcoin/ diff --git a/docker/bitcoind/bitcoin.conf b/docker/bitcoind/bitcoin.conf new file mode 100644 index 0000000000..3bde28b421 --- /dev/null +++ b/docker/bitcoind/bitcoin.conf @@ -0,0 +1,12 @@ +rpcallowip=0.0.0.0/0 +rpcbind=0.0.0.0 +rpcport=8332 +rpcuser=rpc +rpcpassword=rpc +listen=1 +server=1 +addresstype=legacy +txindex=1 +prune=0 +dbcache=4000 +mempoolfullrbf=1 diff --git a/docker/counterparty-core/client.conf b/docker/counterparty-core/client.conf new file mode 100644 index 0000000000..b718f632c5 --- /dev/null +++ b/docker/counterparty-core/client.conf @@ -0,0 +1,8 @@ +[Default] +wallet-name = bitcoincore +wallet-connect = localhost +wallet-user = rpc +wallet-password = rpc +counterparty-rpc-connect = localhost +counterparty-rpc-user = rpc +counterparty-rpc-password = rpc diff --git a/docker/counterparty-core/server.conf b/docker/counterparty-core/server.conf new file mode 100644 index 0000000000..ae860700e3 --- /dev/null +++ b/docker/counterparty-core/server.conf @@ -0,0 +1,9 @@ +[Default] +backend-name = indexd +backend-user = rpc +backend-password = rpc +indexd-connect = addrindexrs +rpc-user = rpc +rpc-password = rpc +log-file = 1 +api-log-file = 1 diff --git a/docker/server.conf b/docker/server.conf deleted file mode 100644 index a0a06f49dd..0000000000 --- a/docker/server.conf +++ /dev/null @@ -1,4 +0,0 @@ -[Default] -backend-ssl-no-verify=True -backend-name=addrindex -rpc-host=0.0.0.0 diff --git a/docker/start.sh b/docker/start.sh deleted file mode 100644 index a750b30ff1..0000000000 --- a/docker/start.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -# Run "setup.py develop" if we need to (can be the case if the .egg-info paths get removed, or mounted over, e.g. fednode) -if [ ! -d /counterparty-lib/counterparty_lib.egg-info ]; then - cd /counterparty-lib; python3 setup.py develop; cd / -fi -if [ ! -d /counterparty-cli/counterparty_cli.egg-info ]; then - cd /counterparty-cli; python3 setup.py develop; cd / -fi - -# Bootstrap if the database does not exist (do this here to handle cases -# where a volume is mounted over the share dir, like the fednode docker compose config does...) -if ([ -z "$2" ] || [ $2 != "true" ]); then - if [ ! -f /root/.local/share/counterparty/counterparty.db ] && [ $1 = "mainnet" ]; then - echo "Downloading mainnet bootstrap DB..." - counterparty-server bootstrap --quiet - PARAMS="${PARAMS} --checkdb" - fi - if [ ! -f /root/.local/share/counterparty/counterparty.testnet.db ] && [ $1 = "testnet" ]; then - echo "Downloading testnet bootstrap DB..." - counterparty-server --testnet bootstrap --quiet - PARAMS="${PARAMS} --checkdb" - fi -fi - -# Kick off the server, defaulting to the "start" subcommand -# Launch utilizing the SIGTERM/SIGINT propagation pattern from -# http://veithen.github.io/2014/11/16/sigterm-propagation.html -: ${PARAMS:=""} -: ${COMMAND:="start"} - -trap 'kill -TERM $PID' TERM INT -/usr/local/bin/counterparty-server ${PARAMS} ${COMMAND} & -PID=$! -wait $PID -trap - TERM INT -wait $PID -EXIT_STATUS=$? diff --git a/pylintrc b/pylintrc new file mode 100644 index 0000000000..ae6de9c7ad --- /dev/null +++ b/pylintrc @@ -0,0 +1,630 @@ +[MAIN] + +# Analyse import fallback blocks. This can be used to support both Python 2 and +# 3 compatible code, which means that the block might have code that exists +# only in one or another interpreter, leading to false positives when analysed. +analyse-fallback-blocks=no + +# Clear in-memory caches upon conclusion of linting. Useful if running pylint +# in a server-like mode. +clear-cache-post-run=no + +# Load and enable all available extensions. Use --list-extensions to see a list +# all available extensions. +#enable-all-extensions= + +# In error mode, messages with a category besides ERROR or FATAL are +# suppressed, and no reports are done by default. Error mode is compatible with +# disabling specific errors. +#errors-only= + +# Always return a 0 (non-error) status code, even if lint errors are found. +# This is primarily useful in continuous integration scripts. +#exit-zero= + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. +extension-pkg-allow-list= + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. (This is an alternative name to extension-pkg-allow-list +# for backward compatibility.) +extension-pkg-whitelist= + +# Return non-zero exit code if any of these messages/categories are detected, +# even if score is above --fail-under value. Syntax same as enable. Messages +# specified are enabled, while categories only check already-enabled messages. +fail-on= + +# Specify a score threshold under which the program will exit with error. +fail-under=10 + +# Interpret the stdin as a python script, whose filename needs to be passed as +# the module_or_package argument. +#from-stdin= + +# Files or directories to be skipped. They should be base names, not paths. +ignore=CVS + +# Add files or directories matching the regular expressions patterns to the +# ignore-list. The regex matches against paths and can be in Posix or Windows +# format. Because '\\' represents the directory delimiter on Windows systems, +# it can't be used as an escape character. +ignore-paths= + +# Files or directories matching the regular expression patterns are skipped. +# The regex matches against base names, not paths. The default value ignores +# Emacs file locks +ignore-patterns=^\.# + +# List of module names for which member attributes should not be checked +# (useful for modules/projects where namespaces are manipulated during runtime +# and thus existing member attributes cannot be deduced by static analysis). It +# supports qualified module names, as well as Unix pattern matching. +ignored-modules= + +# Python code to execute, usually for sys.path manipulation such as +# pygtk.require(). +#init-hook= + +# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the +# number of processors available to use, and will cap the count on Windows to +# avoid hangs. +jobs=1 + +# Control the amount of potential inferred values when inferring a single +# object. This can help the performance when dealing with large functions or +# complex, nested conditions. +limit-inference-results=100 + +# List of plugins (as comma separated values of python module names) to load, +# usually to register additional checkers. +load-plugins= + +# Pickle collected data for later comparisons. +persistent=yes + +# Minimum Python version to use for version dependent checks. Will default to +# the version used to run pylint. +py-version=3.11 + +# Discover python modules and packages in the file system subtree. +recursive=yes + +# Add paths to the list of the source roots. Supports globbing patterns. The +# source root is an absolute path or a path relative to the current working +# directory used to determine a package namespace for modules located under the +# source root. +source-roots= + +# When enabled, pylint would attempt to guess common misconfiguration and emit +# user-friendly hints instead of false-positive error messages. +suggestion-mode=yes + +# Allow loading of arbitrary C extensions. Extensions are imported into the +# active Python interpreter and may run arbitrary code. +unsafe-load-any-extension=no + +# In verbose mode, extra non-checker-related info will be displayed. +#verbose= + + +[BASIC] + +# Naming style matching correct argument names. +argument-naming-style=snake_case + +# Regular expression matching correct argument names. Overrides argument- +# naming-style. If left empty, argument names will be checked with the set +# naming style. +#argument-rgx= + +# Naming style matching correct attribute names. +attr-naming-style=snake_case + +# Regular expression matching correct attribute names. Overrides attr-naming- +# style. If left empty, attribute names will be checked with the set naming +# style. +#attr-rgx= + +# Bad variable names which should always be refused, separated by a comma. +bad-names=foo, + bar, + baz, + toto, + tutu, + tata + +# Bad variable names regexes, separated by a comma. If names match any regex, +# they will always be refused +bad-names-rgxs= + +# Naming style matching correct class attribute names. +class-attribute-naming-style=any + +# Regular expression matching correct class attribute names. Overrides class- +# attribute-naming-style. If left empty, class attribute names will be checked +# with the set naming style. +#class-attribute-rgx= + +# Naming style matching correct class constant names. +class-const-naming-style=UPPER_CASE + +# Regular expression matching correct class constant names. Overrides class- +# const-naming-style. If left empty, class constant names will be checked with +# the set naming style. +#class-const-rgx= + +# Naming style matching correct class names. +class-naming-style=PascalCase + +# Regular expression matching correct class names. Overrides class-naming- +# style. If left empty, class names will be checked with the set naming style. +#class-rgx= + +# Naming style matching correct constant names. +const-naming-style=UPPER_CASE + +# Regular expression matching correct constant names. Overrides const-naming- +# style. If left empty, constant names will be checked with the set naming +# style. +#const-rgx= + +# Minimum line length for functions/classes that require docstrings, shorter +# ones are exempt. +docstring-min-length=-1 + +# Naming style matching correct function names. +function-naming-style=snake_case + +# Regular expression matching correct function names. Overrides function- +# naming-style. If left empty, function names will be checked with the set +# naming style. +#function-rgx= + +# Good variable names which should always be accepted, separated by a comma. +good-names=i, + j, + k, + ex, + Run, + _ + +# Good variable names regexes, separated by a comma. If names match any regex, +# they will always be accepted +good-names-rgxs= + +# Include a hint for the correct naming format with invalid-name. +include-naming-hint=no + +# Naming style matching correct inline iteration names. +inlinevar-naming-style=any + +# Regular expression matching correct inline iteration names. Overrides +# inlinevar-naming-style. If left empty, inline iteration names will be checked +# with the set naming style. +#inlinevar-rgx= + +# Naming style matching correct method names. +method-naming-style=snake_case + +# Regular expression matching correct method names. Overrides method-naming- +# style. If left empty, method names will be checked with the set naming style. +#method-rgx= + +# Naming style matching correct module names. +module-naming-style=snake_case + +# Regular expression matching correct module names. Overrides module-naming- +# style. If left empty, module names will be checked with the set naming style. +#module-rgx= + +# Colon-delimited sets of names that determine each other's naming style when +# the name regexes allow several styles. +name-group= + +# Regular expression which should only match function or class names that do +# not require a docstring. +no-docstring-rgx=^_ + +# List of decorators that produce properties, such as abc.abstractproperty. Add +# to this list to register other decorators that produce valid properties. +# These decorators are taken in consideration only for invalid-name. +property-classes=abc.abstractproperty + +# Regular expression matching correct type alias names. If left empty, type +# alias names will be checked with the set naming style. +#typealias-rgx= + +# Regular expression matching correct type variable names. If left empty, type +# variable names will be checked with the set naming style. +#typevar-rgx= + +# Naming style matching correct variable names. +variable-naming-style=snake_case + +# Regular expression matching correct variable names. Overrides variable- +# naming-style. If left empty, variable names will be checked with the set +# naming style. +#variable-rgx= + + +[CLASSES] + +# Warn about protected attribute access inside special methods +check-protected-access-in-special-methods=no + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__, + __new__, + setUp, + asyncSetUp, + __post_init__ + +# List of member names, which should be excluded from the protected access +# warning. +exclude-protected=_asdict,_fields,_replace,_source,_make,os._exit + +# List of valid names for the first argument in a class method. +valid-classmethod-first-arg=cls + +# List of valid names for the first argument in a metaclass class method. +valid-metaclass-classmethod-first-arg=mcs + + +[DESIGN] + +# List of regular expressions of class ancestor names to ignore when counting +# public methods (see R0903) +exclude-too-few-public-methods= + +# List of qualified class names to ignore when counting class parents (see +# R0901) +ignored-parents= + +# Maximum number of arguments for function / method. +max-args=5 + +# Maximum number of attributes for a class (see R0902). +max-attributes=7 + +# Maximum number of boolean expressions in an if statement (see R0916). +max-bool-expr=5 + +# Maximum number of branch for function / method body. +max-branches=12 + +# Maximum number of locals for function / method body. +max-locals=20 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=20 + +# Maximum number of return / yield for function / method body. +max-returns=6 + +# Maximum number of statements in function / method body. +max-statements=50 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=2 + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when caught. +overgeneral-exceptions=builtins.BaseException,builtins.Exception + + +[FORMAT] + +# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. +expected-line-ending-format= + +# Regexp for a line that is allowed to be longer than the limit. +ignore-long-lines=^\s*(# )??$ + +# Number of spaces of indent required inside a hanging or continued line. +indent-after-paren=4 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + +# Maximum number of characters on a single line. +max-line-length=100 + +# Maximum number of lines in a module. +max-module-lines=1000 + +# Allow the body of a class to be on the same line as the declaration if body +# contains single statement. +single-line-class-stmt=no + +# Allow the body of an if to be on the same line as the test if there is no +# else. +single-line-if-stmt=no + + +[IMPORTS] + +# List of modules that can be imported at any level, not just the top level +# one. +allow-any-import-level= + +# Allow explicit reexports by alias from a package __init__. +allow-reexport-from-package=no + +# Allow wildcard imports from modules that define __all__. +allow-wildcard-with-all=no + +# Deprecated modules which should not be used, separated by a comma. +deprecated-modules= + +# Output a graph (.gv or any supported image format) of external dependencies +# to the given file (report RP0402 must not be disabled). +ext-import-graph= + +# Output a graph (.gv or any supported image format) of all (i.e. internal and +# external) dependencies to the given file (report RP0402 must not be +# disabled). +import-graph= + +# Output a graph (.gv or any supported image format) of internal dependencies +# to the given file (report RP0402 must not be disabled). +int-import-graph= + +# Force import order to recognize a module as part of the standard +# compatibility libraries. +known-standard-library= + +# Force import order to recognize a module as part of a third party library. +known-third-party=enchant + +# Couples of modules and preferred modules, separated by a comma. +preferred-modules= + + +[LOGGING] + +# The type of string formatting that logging methods do. `old` means using % +# formatting, `new` is for `{}` formatting. +logging-format-style=old + +# Logging modules to check that the string format arguments are in logging +# function parameter format. +logging-modules=logging + + +[MESSAGES CONTROL] + +# Only show warnings with the listed confidence levels. Leave empty to show +# all. Valid levels: HIGH, CONTROL_FLOW, INFERENCE, INFERENCE_FAILURE, +# UNDEFINED. +confidence=HIGH, + CONTROL_FLOW, + INFERENCE, + INFERENCE_FAILURE, + UNDEFINED + +# Disable the message, report, category or checker with the given id(s). You +# can either give multiple identifiers separated by comma (,) or put this +# option multiple times (only on the command line, not in the configuration +# file where it should appear only once). You can also use "--disable=all" to +# disable everything first and then re-enable specific checks. For example, if +# you want to run only the similarities checker, you can use "--disable=all +# --enable=similarities". If you want to run only the classes checker, but have +# no Warning level messages displayed, use "--disable=all --enable=classes +# --disable=W". +disable=line-too-long, + missing-function-docstring, + missing-class-docstring, + missing-module-docstring, + logging-format-interpolation, + logging-fstring-interpolation, + +# Enable the message, report, category or checker with the given id(s). You can +# either give multiple identifier separated by comma (,) or put this option +# multiple time (only on the command line, not in the configuration file where +# it should appear only once). See also the "--disable" option for examples. +enable= + + +[METHOD_ARGS] + +# List of qualified names (i.e., library.method) which require a timeout +# parameter e.g. 'requests.api.get,requests.api.post' +timeout-methods=requests.api.delete,requests.api.get,requests.api.head,requests.api.options,requests.api.patch,requests.api.post,requests.api.put,requests.api.request + + +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME, + XXX, + TODO + +# Regular expression of note tags to take in consideration. +notes-rgx= + + +[REFACTORING] + +# Maximum number of nested blocks for function / method body +max-nested-blocks=5 + +# Complete name of functions that never returns. When checking for +# inconsistent-return-statements if a never returning function is called then +# it will be considered as an explicit return statement and no message will be +# printed. +never-returning-functions=sys.exit,argparse.parse_error + + +[REPORTS] + +# Python expression which should return a score less than or equal to 10. You +# have access to the variables 'fatal', 'error', 'warning', 'refactor', +# 'convention', and 'info' which contain the number of messages in each +# category, as well as 'statement' which is the total number of statements +# analyzed. This score is used by the global evaluation report (RP0004). +evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)) + +# Template used to display messages. This is a python new-style format string +# used to format the message information. See doc for all details. +msg-template= + +# Set the output format. Available formats are: text, parseable, colorized, +# json2 (improved json format), json (old json format) and msvs (visual +# studio). You can also give a reporter class, e.g. +# mypackage.mymodule.MyReporterClass. +#output-format= + +# Tells whether to display a full report or only the messages. +reports=no + +# Activate the evaluation score. +score=yes + + +[SIMILARITIES] + +# Comments are removed from the similarity computation +ignore-comments=yes + +# Docstrings are removed from the similarity computation +ignore-docstrings=yes + +# Imports are removed from the similarity computation +ignore-imports=yes + +# Signatures are removed from the similarity computation +ignore-signatures=yes + +# Minimum lines number of a similarity. +min-similarity-lines=4 + + +[SPELLING] + +# Limits count of emitted suggestions for spelling mistakes. +max-spelling-suggestions=4 + +# Spelling dictionary name. No available dictionaries : You need to install +# both the python package and the system dependency for enchant to work. +spelling-dict= + +# List of comma separated words that should be considered directives if they +# appear at the beginning of a comment and should not be checked. +spelling-ignore-comment-directives=fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy: + +# List of comma separated words that should not be checked. +spelling-ignore-words= + +# A path to a file that contains the private dictionary; one word per line. +spelling-private-dict-file= + +# Tells whether to store unknown words to the private dictionary (see the +# --spelling-private-dict-file option) instead of raising a message. +spelling-store-unknown-words=no + + +[STRING] + +# This flag controls whether inconsistent-quotes generates a warning when the +# character used as a quote delimiter is used inconsistently within a module. +check-quote-consistency=no + +# This flag controls whether the implicit-str-concat should generate a warning +# on implicit string concatenation in sequences defined over several lines. +check-str-concat-over-line-jumps=no + + +[TYPECHECK] + +# List of decorators that produce context managers, such as +# contextlib.contextmanager. Add to this list to register other decorators that +# produce valid context managers. +contextmanager-decorators=contextlib.contextmanager + +# List of members which are set dynamically and missed by pylint inference +# system, and so shouldn't trigger E1101 when accessed. Python regular +# expressions are accepted. +generated-members= + +# Tells whether to warn about missing members when the owner of the attribute +# is inferred to be None. +ignore-none=yes + +# This flag controls whether pylint should warn about no-member and similar +# checks whenever an opaque object is returned when inferring. The inference +# can return multiple potential results while evaluating a Python object, but +# some branches might not be evaluated, which results in partial inference. In +# that case, it might be useful to still emit no-member and other checks for +# the rest of the inferred objects. +ignore-on-opaque-inference=yes + +# List of symbolic message names to ignore for Mixin members. +ignored-checks-for-mixins=no-member, + not-async-context-manager, + not-context-manager, + attribute-defined-outside-init + +# List of class names for which member attributes should not be checked (useful +# for classes with dynamically set attributes). This supports the use of +# qualified names. +ignored-classes=optparse.Values,thread._local,_thread._local,argparse.Namespace + +# Show a hint with possible names when a member name was not found. The aspect +# of finding the hint is based on edit distance. +missing-member-hint=yes + +# The minimum edit distance a name should have in order to be considered a +# similar match for a missing member name. +missing-member-hint-distance=1 + +# The total number of similar names that should be taken in consideration when +# showing a hint for a missing member. +missing-member-max-choices=1 + +# Regex pattern to define which classes are considered mixins. +mixin-class-rgx=.*[Mm]ixin + +# List of decorators that change the signature of a decorated function. +signature-mutators= + + +[VARIABLES] + +# List of additional names supposed to be defined in builtins. Remember that +# you should avoid defining new builtins when possible. +additional-builtins= + +# Tells whether unused global variables should be treated as a violation. +allow-global-unused-variables=yes + +# List of names allowed to shadow builtins +allowed-redefined-builtins= + +# List of strings which can identify a callback function by name. A callback +# name must start or end with one of those strings. +callbacks=cb_, + _cb + +# A regular expression matching the name of dummy variables (i.e. expected to +# not be used). +dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ + +# Argument names that match this expression will be ignored. +ignored-argument-names=_.*|^ignored_|^unused_ + +# Tells whether we should check for unused import in __init__ files. +init-import=no + +# List of qualified module names which can have objects that can redefine +# builtins. +redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io diff --git a/release-notes/defunct/counterparty-cli-changelog.md b/release-notes/defunct/counterparty-cli-changelog.md new file mode 100644 index 0000000000..6752bb0f96 --- /dev/null +++ b/release-notes/defunct/counterparty-cli-changelog.md @@ -0,0 +1,36 @@ +# ChangeLog for `counterparty-cli` Pre-v9.61.2 + +* master (unreleased) + * Added indexd arguments + * removed backend-name argument +* v1.1.4 (2017/10/26) + * Added enhanced send arguments support. +* v1.1.3 (2017/05/01) + * Added `vacuum` command to server CLI. +* v1.1.2 (2016/07/11) + * Added P2SH support (to match counterparty-lib 9.55.0) + * added `get_tx_info` command + * added `--disable-utxo-locks` to `compose_transaction` to disable the locking of selected UTXOs for when the 'user' doesn't intend to broadcast the TX (straight away) + * Peg dependency versions in `setup.py` + * Added `debug_config` argument to print config to CLI. + * Added `--quiet` flag to `bootstrap` command + * Logging improvements + * Removed `rps` and `rpsresolve` commands + * Updated `README.md` +* v1.1.1 (2015/04/20) + * Fix `broadcast` command + * Cleaner, Commented-out Default Config Files + * Support new configuration parameter: `no-check-asset-conservation`, `rpc-batch-size`, `requests-timeout` +* v1.1.0 (2015/03/31) + * Code reorganisation + * Remove `market` command + * Add `getrows` command + * Add `clientapi` module + * Rename `get_running_info` to `getinfo` + * Rename `backend-ssl-verify` to `backend-ssl-no-verify` + * Rename `rpc-allow-cors` to `rpc-no-allow-cors` + * Change installation procedure +* v1.0.1 (2015/03/18) + * Update minimum `counterparty-lib` version from `v9.49.4` to `v9.50.0` +* v1.0.0 (2015/02/05) + * Initial Release \ No newline at end of file diff --git a/ChangeLog.md b/release-notes/defunct/counterparty-lib-changelog.md similarity index 98% rename from ChangeLog.md rename to release-notes/defunct/counterparty-lib-changelog.md index cd4683a7fb..4dd9e3848d 100644 --- a/ChangeLog.md +++ b/release-notes/defunct/counterparty-lib-changelog.md @@ -1,8 +1,5 @@ -## Library Versions ## -* v9.61.2 (2024-02-28) - * Fix integer overflow in dispensers. - * Invalidate broadcast with malformed text. - * Fix Logging for Destructions with Invalid Asset. +# ChangeLog for `counterparty-lib` Pre-v9.61.2 + * v9.60.0 (2022-08-29) * Removed `callable`,`call_date`, and `call_price` from issuances * Added support for CIP24 (Oracled Dispensers) @@ -396,6 +393,7 @@ * initial release ## Other Protocol Changes ## + * issuances fees regression: 285306 * double credits on order match expirations: retroactive * arbitrary spend with multi‐sig input: retroactive @@ -407,4 +405,4 @@ * filtered negative order fees: 294000 * dividends on escrowed funds: 294500 * fractions, not decimals, for rounding: 294500 -* no dividends to self: 296000 +* no dividends to self: 296000 \ No newline at end of file diff --git a/release-notes/release-notes-v10.0.0.md b/release-notes/release-notes-v10.0.0.md new file mode 100644 index 0000000000..45979cbb04 --- /dev/null +++ b/release-notes/release-notes-v10.0.0.md @@ -0,0 +1,96 @@ +# Release Notes - Counterparty Core v10.0.0 (2024-03-??) + +Counterparty Core v10.0.0 is a very large release comprising many improvements across different portions of the codebase. “Counterparty Core” is also the new name for the codebase and repository that is the result of a merge between `counterparty-lib`, `counterparty-cli` and a new Rust library, `counterparty-rs`. + +# Upgrade Procedure +This release does not include any protocol changes, so there is no deadline for upgrading. However it is **strongly recommended** that all users upgrade as soon as possible, in particular to avoid consensus problems due to non-determinism in previous versions. The Counterparty Core API is also unchanged for this release. + +Because this release includes numerous changes to the database schema, a full database rebuild is required and the major version number has been bumped from 9 to 10. Follow the updated installation instructions in the [README](../README.md) to download and install the latest version of Counterparty Core, run `counterparty-server kickstart` (while `bitcoind` is not running), then start the server with `counterparty-server start`. The rebuild should happen automatically, and it should take between 8 and 24 hours hours to complete. + +**IMPORTANT** Be certain that your are running the latest version of AddrIndexRs (v0.4.3). + + +# ChangeLog + +## Codebase +* Upgrade from Python 3.7 to Python >= 3.10 +* Support Ubuntu 22.04 and macOS officially +* Upgrade packaging system: replace `setup.py` with `pyproject.toml` and use Hatchling as a build system +* Upgrade all pip dependencies to the latest available version +* Rename `counterparty-lib` repository to `counterparty-core`. **NOTE:** The normal redirect for GitHub URLs cannot be implemented. +* Merge the `counterparty-cli` repository into the `counterparty-core` repository +* Add Rust library, `counterparty-rs`, for performance-critical code +* Synchronize versions of `counterparty-rs`, `counterparty-lib` and `counterparty-cli` +* Update URL for hosting bootstrap files to +* Update URL for hosting notifications for protocol changes to + + +## Documentation and Testing +* Fix test suite, with automated builds on supported operating systems +* Add Github Workflows for building, testing and running automated code scanners: + * PyLint + * Bandit + * CodeQL + * License Scanner +* Add checkpoints for `mainnet` up to block 825,000 and for `testnet` up to block 2,540,000 +* Rewrite README + + +## Stability and Correctness +* Fix multiple sources of non-determinism caused by generic exception handling +* Fix source of non-determinism in AddrIndexRs caused by `txid_limit` and `get_oldest_tx` +* Fix consensus break due to missing support for segwit transactions in `kickstart` logic +* Fix crash in software version checking caused by a format change of `protocol_changes.json` + + +## Deployment +* Rewrite Dockerfile and publish new official Docker images +* Implement `simplenode` Docker Compose file, an alternative to Federated Node +* Change default `bitcoind` user from `bitcoinrpc` to `rpc` +* Changed default port for communication with AddrIndexRs to `8432` (and `81432` for `testnet`) + + +## Command-Line Interface +* Disable console logs except for with `counterparty-server start` +* Show fancy spinners for all discrete operations +* Rename `checkdb` command to `check-db` +* Rename `debugconfig` to `show-config`; clean up output +* Don't log values for transactions except with `--verbose` (for performance) +* Move noisy log messages to `DEBUG` +* Always log to a file, unless `--no-log-files` is set +* Fix and refactor `log.set_up()` +* Improve thread shutdown logic + + +## Refactoring and Performance Optimizations +* Rewrite `kickstart`, splitting work across two Python processes using shared memory and queue for communication +* Activate write-ahead-log in SQLite and implement `apsw.best_pratices()`, improving performance and fixing crashes from deadlocks +* Fix database version checking which launched a rebuilds instead of rollbacks / reparses +* Add numerous missing database indexes +* Fix collisions between existing database indexes +* DRY and refactor database index creation. +* DRY and isolate all SQL queries in `ledger.py` (except first insertion still inside contracts) +* Fix database integrity check and re-include assert conservation check +* Migrate to log-structured database for simpler and faster rollback and reparse + * Add `block_index` field to the `balances` table + * Remove all `UPDATE` queries—use the `ledger.insert_update()` function, which adds a new row with a new `block_index` + * Update all `SELECT` queries—always use `MAX(rowid)` + * Remove the `undolog` completely + * Implement `rollback` and `reparse` by deleting table rows using the `block_index` field +* Migrate performance-critical logic to Rust library, `counterparty-rs` + * `b58_encode()` and `b58_decode()` + * `script_to_asm()` + * `script_to_address()` + * `inverse_hash()` +* Refactor connection logic for AddrIndexRs RPC +* Pre-fetch blocks with multiple threads for `start` +* DRY and refactor `get_tx_info*()` functions + * Isolate transaction parsing inside `gettxinfo.py` module + * Heavily refactor code; eliminate unused code blocks + * Isolate dispenser logic in `get_dispensers_outputs()` and `get_dispensers_tx_info()` + + +# Credits +* Ouziel Slama +* Adam Krellenstein +* Warren Puffet diff --git a/release-notes/release-notes-v9.61.2.md b/release-notes/release-notes-v9.61.2.md new file mode 100644 index 0000000000..5508dbb1f7 --- /dev/null +++ b/release-notes/release-notes-v9.61.2.md @@ -0,0 +1,16 @@ +# Release Notes - `counterparty-lib` v9.61.2 (2024-02-28) + +This is a hotfix release for three critical bugs, each of which causes the network suddenly to halt when triggered. + +# Bugfixes +* Fix integer overflow in dispensers +* Invalidate broadcast with malformed text +* Fix logging for destructions with invalid asset + +# Credits +* Juan Alemán +* Javier Varona +* Dan Anderson +* Curtis Lacy +* Ouziel Slama +* Adam Krellenstein diff --git a/release_procedure.md b/release_procedure.md deleted file mode 100644 index ae2b6d35cd..0000000000 --- a/release_procedure.md +++ /dev/null @@ -1,21 +0,0 @@ -**Development team:** - -- Merge pending dev branches into `develop` -- Update `ChangeLog.md` -- Update `VERSION_` variables in `lib/config.py` -- Update `protocol_changes.json` (as necessary) -- Create `develop` PR to merge into `master` for final dev team review -- Make sure all PR CI test runners pass -- Merge PR into `master` -- Tag and Sign Release (for release notes, use the relevant text from `ChangeLog.md`) -- Rebase `gh-pages` to `master` -- Upload (signed) package to PyPi - * `sudo python3 setup.py sdist build` - * `sudo python3 setup.py sdist upload -r pypi` -- Update documentation (as appropriate) - -**Announce:**: - -- Post to [Official Forums](https://counterpartytalk.org/t/new-version-announcements-counterparty-and-counterpartyd/363)) and Slack -- Send emails on Dev announcement mailing list, main mailing list -- Post to social media: Facebook, Twitter, etc. diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index e6ccd13e9e..0000000000 --- a/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ ---index-url https://pypi.python.org/simple/ - -requests>=2.20.0 -git+https://github.com/chiguireitor/python-bitcoinlib.git@bech32-address#egg=python-bitcoinlib --e . diff --git a/setup.py b/setup.py deleted file mode 100644 index d7e403471c..0000000000 --- a/setup.py +++ /dev/null @@ -1,227 +0,0 @@ -#!/usr/bin/env python -from setuptools.command.install import install as _install -from setuptools.command.bdist_egg import bdist_egg as _bdist_egg -from setuptools import setup, find_packages, Command -import inspect -import ssl -import os -import zipfile -import urllib.request -import sys -import shutil - -from counterpartylib.lib import config - -CURRENT_VERSION = config.VERSION_STRING -APSW_VERSION = "3.24.0-r1" -APSW_SHORT_VERSION = APSW_VERSION.replace('-r1', '') - -# NOTE: Why we don't use the the PyPi package: -# -class install_apsw(Command): - description = "Install APSW %s with the appropriate version of SQLite" % APSW_VERSION - user_options = [] - - def initialize_options(self): - pass - def finalize_options(self): - pass - - def run(self): - # In Windows APSW should be installed manually - if os.name == 'nt': - print('To complete the installation you have to install APSW: https://github.com/rogerbinns/apsw/releases') - return - - try: - import apsw - if apsw.apswversion() == APSW_VERSION: - print('APSW %s already installed' % apsw.apswversion()) - return - else: - print('APSW %s already installed, need %s' % (apsw.apswversion(), APSW_VERSION)) - - except: - pass - - print("downloading apsw.") - with urllib.request.urlopen('https://github.com/rogerbinns/apsw/releases/download/%s/apsw-%s.zip' % (APSW_VERSION, APSW_VERSION)) as u, \ - open('apsw-%s.zip' % APSW_VERSION, 'wb') as f: - f.write(u.read()) - - print("extracting.") - with zipfile.ZipFile('apsw-%s.zip' % APSW_VERSION, 'r') as zip_file: - zip_file.extractall() - - executable = sys.executable - if executable is None: - executable = "python" - - print("install apsw.") - install_command = ('cd apsw-{version} && {executable} ' - 'setup.py fetch --version={shortversion} --all build ' - '--enable-all-extensions install'.format(executable=executable, version=APSW_VERSION, shortversion=APSW_SHORT_VERSION) - ) - os.system(install_command) - - print("clean files.") - shutil.rmtree('apsw-%s' % APSW_VERSION) - os.remove('apsw-%s.zip' % APSW_VERSION) - - -class move_old_db(Command): - description = "Move database from old to new default data directory" - user_options = [] - - def initialize_options(self): - pass - def finalize_options(self): - pass - - def run(self): - import appdirs - - old_data_dir = appdirs.user_config_dir(appauthor='Counterparty', appname='counterpartyd', roaming=True) - old_database = os.path.join(old_data_dir, 'counterpartyd.9.db') - old_database_testnet = os.path.join(old_data_dir, 'counterpartyd.9.testnet.db') - - new_data_dir = appdirs.user_data_dir(appauthor=config.XCP_NAME, appname=config.APP_NAME, roaming=True) - new_database = os.path.join(new_data_dir, '{}.db'.format(config.APP_NAME)) - new_database_testnet = os.path.join(new_data_dir, '{}.testnet.db'.format(config.APP_NAME)) - - # User have an old version of `counterpartyd` - if os.path.exists(old_data_dir): - # Move database - if not os.path.exists(new_data_dir): - os.makedirs(new_data_dir) - files_to_copy = { - old_database: new_database, - old_database_testnet: new_database_testnet - } - for src_file in files_to_copy: - if os.path.exists(src_file): - dest_file = files_to_copy[src_file] - print('Copy {} to {}'.format(src_file, dest_file)) - shutil.copy(src_file, dest_file) - -def post_install(cmd): - cmd.run_command('install_apsw') - cmd.run_command('move_old_db') - -class install(_install): - user_options = _install.user_options - boolean_options = _install.boolean_options - - def initialize_options(self): - _install.initialize_options(self) - - #Some of this code taken from https://bitbucket.org/pypa/setuptools/src/4ce518784af886e6977fa2dbe58359d0fe161d0d/setuptools/command/install.py?at=default&fileviewer=file-view-default - @staticmethod - def _called_from_setup(run_frame): - """ - Attempt to detect whether run() was called from setup() or by another - command. If called by setup(), the parent caller will be the - 'run_command' method in 'distutils.dist', and *its* caller will be - the 'run_commands' method. If called any other way, the - immediate caller *might* be 'run_command', but it won't have been - called by 'run_commands'. Return True in that case or if a call stack - is unavailable. Return False otherwise. - """ - if run_frame is None: - msg = "Call stack not available. bdist_* commands may fail." - warnings.warn(msg) - if platform.python_implementation() == 'IronPython': - msg = "For best results, pass -X:Frames to enable call stack." - warnings.warn(msg) - return True - res = inspect.getouterframes(run_frame)[2] - caller, = res[:1] - info = inspect.getframeinfo(caller) - caller_module = caller.f_globals.get('__name__', '') - return ( - caller_module == 'distutils.dist' - and info.function == 'run_commands' - ) - - def run(self): - # Explicit request for old-style install? Just do it - if self.old_and_unmanageable or self.single_version_externally_managed: - _install.run(self) - self.execute(post_install, (self,), msg="Running post install tasks") - return - - if not self._called_from_setup(inspect.currentframe()): - # Run in backward-compatibility mode to support bdist_* commands. - _install.run(self) - else: - self.do_egg_install() - self.execute(post_install, (self,), msg="Running post install tasks") - -class bdist_egg(_bdist_egg): - def run(self): - _bdist_egg.run(self) - self.execute(post_install, (self,), msg="Running post install tasks") - -required_packages = [ - 'appdirs==1.4.0', - 'setuptools-markdown==0.2', - 'python-dateutil==2.5.3', - 'Flask-HTTPAuth==3.1.2', - 'Flask==0.11.1', - 'colorlog==2.7.0', - 'json-rpc==1.10.3', - 'pycoin==0.77', - 'pycrypto==2.6.1', - 'pysha3==0.3', - 'pytest==2.9.2', - 'pytest-cov==2.2.1', - # 'python-bitcoinlib==0.10.1', <-- restore this when python-bitcoinlib 0.10.x with bech32 support is released - 'requests>=2.20.0', - 'tendo==0.2.8', - 'xmltodict==0.10.1', - 'cachetools==1.1.6', - 'bitstring==3.1.5' -] - -setup_options = { - 'name': 'counterparty-lib', - 'version': CURRENT_VERSION, - 'author': 'Counterparty Developers', - 'author_email': 'dev@counterparty.io', - 'maintainer': 'Counterparty Developers', - 'maintainer_email': 'dev@counterparty.io', - 'url': 'http://counterparty.io', - 'license': 'MIT', - 'description': 'Counterparty Protocol Reference Implementation', - 'keywords': 'counterparty, bitcoin', - 'classifiers': [ - "Development Status :: 5 - Production/Stable", - "Intended Audience :: Developers", - "Intended Audience :: Financial and Insurance Industry", - "License :: OSI Approved :: MIT License", - "Natural Language :: English", - "Operating System :: Microsoft :: Windows", - "Operating System :: POSIX", - "Programming Language :: Python :: 3 :: Only", - "Topic :: Office/Business :: Financial", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: System :: Distributed Computing" - ], - 'download_url': 'https://github.com/CounterpartyXCP/counterparty-lib/releases/tag/' + CURRENT_VERSION, - 'provides': ['counterpartylib'], - 'packages': find_packages(), - 'zip_safe': False, - 'setup_requires': ['appdirs', 'setuptools-markdown'], - 'install_requires': required_packages, - 'include_package_data': True, - 'cmdclass': { - 'install': install, - 'move_old_db': move_old_db, - 'install_apsw': install_apsw - } -} - -if sys.argv[1] == 'sdist': - setup_options['long_description_markdown_filename'] = 'README.md' - -setup(**setup_options) diff --git a/simplenode/compose.yml b/simplenode/compose.yml new file mode 100644 index 0000000000..61e923e666 --- /dev/null +++ b/simplenode/compose.yml @@ -0,0 +1,77 @@ +version: '3' + +services: + bitcoind: + image: kylemanna/bitcoind + ports: + - "8332:8332" # mainnet + # - "18332:18332" # testnet + command: + - "-chain=main" # mainnet + # - "-chain=test" # testnet + - "-rpcallowip=0.0.0.0/0" + - "-rpcbind=0.0.0.0" + - "-rpcuser=rpc" + - "-rpcpassword=rpc" + - "-listen=1" + - "-server=1" + - "-printtoconsole=1" + - "-addresstype=legacy" + - "-txindex=1" + - "-prune=0" + - "-dbcache=4000" + - "-mempoolfullrbf=1" + volumes: + - data:/bitcoin + + addrindexrs: + image: counterparty/addrindexrs + links: + - bitcoind + volumes: + - data:/data + ports: + - "8432:8432" # mainnet + # - "18432:18432" # testnet + command: + - "--network=bitcoin" # mainnet + # - "--network=testnet" # testnet + - "--indexer-rpc-host=0.0.0.0" + - "--daemon-rpc-host=0.0.0.0" + - "--cookie=rpc:rpc" + - "--daemon-dir=/bitcoin/.bitcoin" + - "-vvv" + - "--db-dir=/data/addrindexrs/db" + environment: + - ADDRINDEXRS_JSONRPC_IMPORT=true + + counterparty-core: + image: counterparty/counterparty + links: + - bitcoind + - addrindexrs + volumes: + - data:/data + ports: + - "4000:4000" # mainnet + # - "14000:14000" # testnet + entrypoint: "counterparty-server" # TODO: `start` has to come after the flags. + command: + # "--testnet" # testnet + - "--backend-connect=bitcoind" + - "--backend-user=rpc" + - "--backend-password=rpc" + - "--indexd-connect=addrindexrs" + - "--rpc-user=rpc" + - "--rpc-password=rpc" + - "--rpc-host=0.0.0.0" + - "--log-file=1" + - "--api-log-file=1" + - "start" + environment: + - "XDG_DATA_HOME=/data/" + - "XDG_LOG_HOME=/data/" + +volumes: + data: # mainnet + # data-testnet: # testnet diff --git a/tools/copyscenarios.py b/tools/copyscenarios.py deleted file mode 100755 index 89f3ced874..0000000000 --- a/tools/copyscenarios.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/python3 - -import sys -import os -import re -import shutil - -DIR = "counterpartylib/test/fixtures/scenarios" -REGEX = r"^(?P.*)\.new(?P\..*)$" - -dryrun = '--dry-run' in sys.argv or '--dryrun' in sys.argv -args = list(filter(lambda a: a not in [__file__, '--dry-run', '--dryrun'], sys.argv)) - -filematch = None -if len(args) == 1: - filematch = args[0] -elif len(args) > 1: - raise Exception("Too many arguments") - -for file in sorted(os.listdir(DIR)): - m = re.match(REGEX, file) - if m: - newfile = m.group('name') + m.group('ext') - - if filematch and filematch not in newfile: - continue - - print("%s -> %s" % (file, newfile)) - if not dryrun: - shutil.copy(os.path.join(DIR, file), os.path.join(DIR, newfile))