用预言机(Oracle)把股票数据传输到区块链上

it2023-12-23  83

什么是区块链预言机(Blockchain Oracle)?

如这篇文章所述:

在计算机领域,预言机是一种抽象电脑,又称谕示机。预言机具备图灵机的一切功能,并额外拥有一种能力:可以不通过计算直接得到某些问题的答案,这个过程叫做Oracle(神谕)。也就是说,预言机可以解决图灵机通过计算也无法解决的问题,比如从外界获取问题的答案。

在DeFi大行其道的今天,把现实世界的数据和区块链相结合是业内的一个风口课题。一些经过了数轮融资的初创公司(例如Chainlink, Band Protocol)也应运而生。以下,我们将介绍如何将股票数据通过Oracle传输到区块链上。我们将使用这个docker stock ticker应用。

设置与安装

在OSX上:

❯❯❯ brew tap cuber/homebrew-libsecp256k1 ❯❯❯ brew install libsodium libsecp256k1 gmp ❯❯❯ pipenv --three --site-packages ❯❯❯ PIP_IGNORE_INSTALLED=1 pipenv install --dev alpha-vantage APScheduler Flask ❯❯❯ pipenv install pytezos

本地测试:

TEZOS_USER_KEY=".." \ ORACLE_ADDRESS="KT1CUTjTqf4UMf6c9A8ZA4e1ntWbLVTnvrKG" \ ALPHA_VANTAGE_API_KEY=".." \ ALPHA_VANTAGE_TICKER_SYMBOL="AAPL" \ FLASK_APP="tq/oracles/ticker.py" \ pipenv run -- flask run --host 0.0.0.0

运行

更新requirement.txt:

pipenv lock -r > requirements.txt

运行Flask

FLASK_APP="tq/oracles/ticker.py" TEZOS_USER_KEY="$(base64 ~/Downloads/tz1R3vJ5TV8Y5pVj8dicBR23Zv8JArusDkYr.json | tr -d '\n')" ORACLE_ADDRESS="KT1CUTjTqf4UMf6c9A8ZA4e1ntWbLVTnvrKG" ALPHA_VANTAGE_API_KEY=".." ALPHA_VANTAGE_TICKER_SYMBOL="AAPL" flask run

创建docker image:

docker build -t oracle-stock-ticker:latest .

运行

docker run -d -p 5000:5000 --env TEZOS_USER_KEY="$(base64 ~/Downloads/tz1R3vJ5TV8Y5pVj8dicBR23Zv8JArusDkYr.json | tr -d '\n')" --env ORACLE_ADDRESS="KT1CUTjTqf4UMf6c9A8ZA4e1ntWbLVTnvrKG" --env ALPHA_VANTAGE_API_KEY=".." --env ALPHA_VANTAGE_TICKER_SYMBOL="AAPL" oracle-stock-ticker

以上步骤完成之后,这个Flask应用就将以预言机的形式每30分钟向现实世界“接收”美国苹果公司AAPL的股票。

如有问题或建议,请戳:https://github.com/tqtezos/lorentz-contract-oracle/tree/master/stock_ticker

最新回复(0)