mirror of
https://github.com/bisq-network/bisq.git
synced 2025-03-04 03:03:48 +01:00
Add new regtest apitest/scripts/trade-xmr-simulation.sh
This commit is contained in:
parent
65fb8e8225
commit
f867f6beb3
3 changed files with 172 additions and 5 deletions
|
@ -214,6 +214,51 @@ parsebsqswaporderopts() {
|
||||||
export CURRENCY_CODE="BSQ"
|
export CURRENCY_CODE="BSQ"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parsexmrscriptopts() {
|
||||||
|
usage() {
|
||||||
|
echo "Usage: $0 [-d buy|sell] [-f <fixed-price> || -m <margin-from-price>] [-a <amount in btc>]" 1>&2
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
local OPTIND o d f m a
|
||||||
|
while getopts "d:f:m:a:" o; do
|
||||||
|
case "${o}" in
|
||||||
|
d) d=$(echo "${OPTARG}" | tr '[:lower:]' '[:upper:]')
|
||||||
|
((d == "BUY" || d == "SELL")) || usage
|
||||||
|
export DIRECTION=${d}
|
||||||
|
;;
|
||||||
|
f) f=${OPTARG}
|
||||||
|
export FIXED_PRICE=${f}
|
||||||
|
;;
|
||||||
|
m) m=${OPTARG}
|
||||||
|
export MKT_PRICE_MARGIN=${m}
|
||||||
|
;;
|
||||||
|
a) a=${OPTARG}
|
||||||
|
export AMOUNT=${a}
|
||||||
|
;;
|
||||||
|
*) usage ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
if [ -z "${d}" ] || [ -z "${a}" ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${f}" ] && [ -z "${m}" ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$DIRECTION" = "SELL" ]
|
||||||
|
then
|
||||||
|
export BOB_ROLE="(taker/buyer)"
|
||||||
|
export ALICE_ROLE="(maker/seller)"
|
||||||
|
else
|
||||||
|
export BOB_ROLE="(taker/seller)"
|
||||||
|
export ALICE_ROLE="(maker/buyer)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
checkbitcoindrunning() {
|
checkbitcoindrunning() {
|
||||||
# There may be a '+' char in the path and we have to escape it for pgrep.
|
# There may be a '+' char in the path and we have to escape it for pgrep.
|
||||||
if [[ $APP_HOME == *"+"* ]]; then
|
if [[ $APP_HOME == *"+"* ]]; then
|
||||||
|
|
|
@ -368,7 +368,7 @@ waitfortradepaymentsent() {
|
||||||
|
|
||||||
IS_TRADE_PAYMENT_SENT=$(istradepaymentsent "$TRADE_DETAIL")
|
IS_TRADE_PAYMENT_SENT=$(istradepaymentsent "$TRADE_DETAIL")
|
||||||
exitoncommandalert $?
|
exitoncommandalert $?
|
||||||
printdate "$SELLER: Has buyer's fiat payment been initiated? $IS_TRADE_PAYMENT_SENT"
|
printdate "$SELLER: Has buyer's payment been initiated? $IS_TRADE_PAYMENT_SENT"
|
||||||
if [ "$IS_TRADE_PAYMENT_SENT" = "YES" ]
|
if [ "$IS_TRADE_PAYMENT_SENT" = "YES" ]
|
||||||
then
|
then
|
||||||
DONE=1
|
DONE=1
|
||||||
|
@ -407,7 +407,7 @@ waitfortradepaymentreceived() {
|
||||||
# but we do not need to simulate that in this regtest script.
|
# but we do not need to simulate that in this regtest script.
|
||||||
IS_TRADE_PAYMENT_SENT=$(istradepaymentreceived "$TRADE_DETAIL")
|
IS_TRADE_PAYMENT_SENT=$(istradepaymentreceived "$TRADE_DETAIL")
|
||||||
exitoncommandalert $?
|
exitoncommandalert $?
|
||||||
printdate "$SELLER: Has buyer's payment been transferred to seller's fiat account? $IS_TRADE_PAYMENT_SENT"
|
printdate "$SELLER: Has buyer's payment been transferred to seller's account? $IS_TRADE_PAYMENT_SENT"
|
||||||
if [ "$IS_TRADE_PAYMENT_SENT" = "YES" ]
|
if [ "$IS_TRADE_PAYMENT_SENT" = "YES" ]
|
||||||
then
|
then
|
||||||
DONE=1
|
DONE=1
|
||||||
|
@ -427,7 +427,7 @@ delayconfirmpaymentstarted() {
|
||||||
PORT="$2"
|
PORT="$2"
|
||||||
OFFER_ID="$3"
|
OFFER_ID="$3"
|
||||||
RANDOM_WAIT=$(echo $[$RANDOM % 5 + 1])
|
RANDOM_WAIT=$(echo $[$RANDOM % 5 + 1])
|
||||||
printdate "$PAYER: Sending fiat payment sent message to seller in $RANDOM_WAIT seconds..."
|
printdate "$PAYER: Sending 'payment sent' message to seller in $RANDOM_WAIT seconds..."
|
||||||
sleeptraced "$RANDOM_WAIT"
|
sleeptraced "$RANDOM_WAIT"
|
||||||
CMD="$CLI_BASE --port=$PORT confirmpaymentstarted --trade-id=$OFFER_ID"
|
CMD="$CLI_BASE --port=$PORT confirmpaymentstarted --trade-id=$OFFER_ID"
|
||||||
printdate "$PAYER_CLI: $CMD"
|
printdate "$PAYER_CLI: $CMD"
|
||||||
|
@ -446,7 +446,7 @@ delayconfirmpaymentreceived() {
|
||||||
PORT="$2"
|
PORT="$2"
|
||||||
OFFER_ID="$3"
|
OFFER_ID="$3"
|
||||||
RANDOM_WAIT=$(echo $[$RANDOM % 5 + 1])
|
RANDOM_WAIT=$(echo $[$RANDOM % 5 + 1])
|
||||||
printdate "$PAYEE: Sending fiat payment sent message to seller in $RANDOM_WAIT seconds..."
|
printdate "$PAYEE: Sending 'payment sent' message to seller in $RANDOM_WAIT seconds..."
|
||||||
sleeptraced "$RANDOM_WAIT"
|
sleeptraced "$RANDOM_WAIT"
|
||||||
CMD="$CLI_BASE --port=$PORT confirmpaymentreceived --trade-id=$OFFER_ID"
|
CMD="$CLI_BASE --port=$PORT confirmpaymentreceived --trade-id=$OFFER_ID"
|
||||||
printdate "$PAYEE_CLI: $CMD"
|
printdate "$PAYEE_CLI: $CMD"
|
||||||
|
@ -531,7 +531,7 @@ executetrade() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Generate some btc blocks
|
# Generate some btc blocks
|
||||||
printdate "Generating btc blocks after fiat transfer."
|
printdate "Generating btc blocks after payment."
|
||||||
genbtcblocks 2 2
|
genbtcblocks 2 2
|
||||||
printbreak
|
printbreak
|
||||||
|
|
||||||
|
|
122
apitest/scripts/trade-xmr-simulation.sh
Executable file
122
apitest/scripts/trade-xmr-simulation.sh
Executable file
|
@ -0,0 +1,122 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# Runs xmr <-> btc trading scenarios using the API CLI with a local regtest bitcoin node.
|
||||||
|
#
|
||||||
|
# Prerequisites:
|
||||||
|
#
|
||||||
|
# - Linux or OSX with bash, Java 11-15 (JDK language compatibility 11), and bitcoin-core (v0.19 - v22).
|
||||||
|
#
|
||||||
|
# - Bisq must be fully built with apitest dao setup files installed.
|
||||||
|
# Build command: `./gradlew clean build :apitest:installDaoSetup`
|
||||||
|
#
|
||||||
|
# - All supporting nodes must be run locally, in dev/dao/regtest mode:
|
||||||
|
# bitcoind, seednode, arbdaemon, alicedaemon, bobdaemon
|
||||||
|
#
|
||||||
|
# These should be run using the apitest harness. From the root project dir, run:
|
||||||
|
# `$ ./bisq-apitest --apiPassword=xyz --supportingApps=bitcoind,seednode,arbdaemon,alicedaemon,bobdaemon --shutdownAfterTests=false`
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
#
|
||||||
|
# This script must be run from the root of the project, e.g.:
|
||||||
|
#
|
||||||
|
# `$ apitest/scripts/trade-xmr-simulation.sh -d buy -f 0.05 -a 0.125`
|
||||||
|
#
|
||||||
|
# Script options: -d <direction> -m <mkt-price-margin(%)> -f <fixed-price> -a <amount(btc)>
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
#
|
||||||
|
# Create a buy/xmr offer to buy 0.125 btc at an xmr fixed-price of 0.05 btc, using an xmr payment account:
|
||||||
|
#
|
||||||
|
# `$ apitest/scripts/trade-xmr-simulation.sh -d buy -f 0.05 -a 0.125`
|
||||||
|
#
|
||||||
|
# Create a sell/xmr offer to sell 0.125 btc at at an xmr mkt-price-margin of 0%, using using an xmr payment account:
|
||||||
|
#
|
||||||
|
# `$ apitest/scripts/trade-xmr-simulation.sh -d sell -m 0.00 -a 0.125`
|
||||||
|
|
||||||
|
export APP_BASE_NAME=$(basename "$0")
|
||||||
|
export APP_HOME=$(pwd -P)
|
||||||
|
export APITEST_SCRIPTS_HOME="$APP_HOME/apitest/scripts"
|
||||||
|
export CURRENCY_CODE="XMR"
|
||||||
|
export ALICE_XMR_ADDRESS="44i8xZbd8ecaD6nQQrHjr1BwTp6QfGL22iWqHZKmU4QYSyr1F64XAxM4HgvQHxbny7ehfxemaA9LPDLz2wY3fxhB1bbMEco"
|
||||||
|
export BOB_XMR_ADDRESS="48xdBkXaCosPxcWwXRZdSGc33M9tYu6k9ga56dqkNrgsjQuJX16xW2qTyWTZstJpXXj87dj5p4H3y1xAfoVjAysoAYrXh2N"
|
||||||
|
|
||||||
|
source "$APITEST_SCRIPTS_HOME/trade-simulation-env.sh"
|
||||||
|
source "$APITEST_SCRIPTS_HOME/trade-simulation-utils.sh"
|
||||||
|
|
||||||
|
checksetup
|
||||||
|
parsexmrscriptopts "$@"
|
||||||
|
|
||||||
|
printdate "Started $APP_BASE_NAME with parameters:"
|
||||||
|
printscriptparams
|
||||||
|
printbreak
|
||||||
|
|
||||||
|
registerdisputeagents
|
||||||
|
|
||||||
|
# Demonstrate how to create an XMR altcoin payment account.
|
||||||
|
|
||||||
|
printdate "Create Alice's XMR Trading Payment Account."
|
||||||
|
# Note: Having problems passing a double quoted --account-name param to function.
|
||||||
|
CMD="$CLI_BASE --port=$ALICE_PORT createcryptopaymentacct --account-name=Alice_XMR_Account"
|
||||||
|
CMD+=" --currency-code=XMR --address=$ALICE_XMR_ADDRESS --trade-instant=false"
|
||||||
|
printdate "ALICE CLI: $CMD"
|
||||||
|
CMD_OUTPUT=$(createpaymentacct "$CMD")
|
||||||
|
echo "$CMD_OUTPUT"
|
||||||
|
printbreak
|
||||||
|
export ALICE_ACCT_ID=$(getnewpaymentacctid "$CMD_OUTPUT")
|
||||||
|
printdate "Alice's XMR payment-account-id: $ALICE_ACCT_ID"
|
||||||
|
exitoncommandalert $?
|
||||||
|
printbreak
|
||||||
|
|
||||||
|
printdate "Create Bob's XMR Trading Payment Account."
|
||||||
|
# Note: Having problems passing a double quoted --account-name param to function.
|
||||||
|
CMD="$CLI_BASE --port=$BOB_PORT createcryptopaymentacct --account-name=Bob_XMR_Account"
|
||||||
|
CMD+=" --currency-code=XMR --address=$BOB_XMR_ADDRESS --trade-instant=false"
|
||||||
|
printdate "BOB CLI: $CMD"
|
||||||
|
CMD_OUTPUT=$(createpaymentacct "$CMD")
|
||||||
|
echo "$CMD_OUTPUT"
|
||||||
|
printbreak
|
||||||
|
export BOB_ACCT_ID=$(getnewpaymentacctid "$CMD_OUTPUT")
|
||||||
|
printdate "Bob's XMR payment-account-id: $BOB_ACCT_ID"
|
||||||
|
exitoncommandalert $?
|
||||||
|
printbreak
|
||||||
|
|
||||||
|
# Alice creates an offer.
|
||||||
|
printdate "ALICE $ALICE_ROLE: Creating $DIRECTION $CURRENCY_CODE offer with payment acct $ALICE_ACCT_ID."
|
||||||
|
CMD=$(gencreateoffercommand "$ALICE_PORT" "$ALICE_ACCT_ID")
|
||||||
|
printdate "ALICE CLI: $CMD"
|
||||||
|
OFFER_ID=$(createoffer "$CMD")
|
||||||
|
exitoncommandalert $?
|
||||||
|
printdate "ALICE $ALICE_ROLE: Created offer with id: $OFFER_ID."
|
||||||
|
printbreak
|
||||||
|
sleeptraced 3
|
||||||
|
|
||||||
|
# Show Alice's new offer.
|
||||||
|
printdate "ALICE $ALICE_ROLE: Looking at her new $DIRECTION $CURRENCY_CODE offer."
|
||||||
|
CMD="$CLI_BASE --port=$ALICE_PORT getmyoffer --offer-id=$OFFER_ID"
|
||||||
|
printdate "ALICE CLI: $CMD"
|
||||||
|
OFFER=$($CMD)
|
||||||
|
exitoncommandalert $?
|
||||||
|
echo "$OFFER"
|
||||||
|
printbreak
|
||||||
|
sleeptraced 3
|
||||||
|
|
||||||
|
# Generate some btc blocks.
|
||||||
|
printdate "Generating btc blocks after publishing Alice's offer."
|
||||||
|
genbtcblocks 3 1
|
||||||
|
printbreak
|
||||||
|
|
||||||
|
# Go through the trade protocol.
|
||||||
|
executetrade
|
||||||
|
exitoncommandalert $?
|
||||||
|
printbreak
|
||||||
|
|
||||||
|
# Get balances after trade completion.
|
||||||
|
printdate "Bob & Alice's balances after trade:"
|
||||||
|
printdate "ALICE CLI:"
|
||||||
|
printbalances "$ALICE_PORT"
|
||||||
|
printbreak
|
||||||
|
printdate "BOB CLI:"
|
||||||
|
printbalances "$BOB_PORT"
|
||||||
|
printbreak
|
||||||
|
|
||||||
|
exit 0
|
Loading…
Add table
Reference in a new issue