90 lines
2.8 KiB
Bash
Executable File
90 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# =============================================================================
|
|
# Smart Contract Processing Logic
|
|
#
|
|
# This file contains the transaction processing logic for your smart contract.
|
|
# Modify this script to implement your business logic.
|
|
#
|
|
# Input:
|
|
# $1 - Transaction JSON string
|
|
# Environment - Server env vars and secrets are exported as environment variables
|
|
#
|
|
# Output (stdout):
|
|
# A JSON object with the following fields:
|
|
# {
|
|
# "data": { ... }, // Your result data (any JSON object)
|
|
# "output_to_chain": true, // Whether to persist the result on chain
|
|
# "error": "" // Error message (empty string if no error)
|
|
# }
|
|
#
|
|
# Logs (stderr):
|
|
# Anything written to stderr is captured and sent back as logs.
|
|
#
|
|
# Exit code:
|
|
# 0 = success (stdout is parsed as JSON result)
|
|
# non-zero = error (stderr is used as the error message)
|
|
# =============================================================================
|
|
|
|
set -euo pipefail
|
|
|
|
# Transaction JSON is passed as the first argument
|
|
TX_JSON="$1"
|
|
|
|
# =============================================================================
|
|
# TODO: Implement your smart contract logic here
|
|
# =============================================================================
|
|
#
|
|
# Parse transaction fields using jq:
|
|
# TXN_ID=$(echo "$TX_JSON" | jq -r '.header.txn_id')
|
|
# TXN_TYPE=$(echo "$TX_JSON" | jq -r '.header.txn_type')
|
|
# PAYLOAD=$(echo "$TX_JSON" | jq '.payload')
|
|
#
|
|
# Access environment variables (set by the server):
|
|
# echo "Smart Contract Name: $SMART_CONTRACT_NAME" >&2
|
|
# echo "Dragonchain ID: $DRAGONCHAIN_ID" >&2
|
|
#
|
|
# Access secrets (set by the server):
|
|
# MY_SECRET="${SC_SECRET_MY_SECRET:-}"
|
|
#
|
|
# Process based on payload action:
|
|
# ACTION=$(echo "$TX_JSON" | jq -r '.payload.action // empty')
|
|
# case "$ACTION" in
|
|
# create)
|
|
# # Handle create operation
|
|
# ;;
|
|
# update)
|
|
# # Handle update operation
|
|
# ;;
|
|
# *)
|
|
# echo '{"data": null, "output_to_chain": false, "error": "Unknown action: '"$ACTION"'"}'
|
|
# exit 0
|
|
# ;;
|
|
# esac
|
|
#
|
|
# Log messages to stderr (captured and sent back with response):
|
|
# echo "Processing transaction..." >&2
|
|
|
|
# Parse transaction data
|
|
TXN_ID=$(echo "$TX_JSON" | jq -r '.header.txn_id')
|
|
TXN_TYPE=$(echo "$TX_JSON" | jq -r '.header.txn_type')
|
|
PAYLOAD=$(echo "$TX_JSON" | jq -c '.payload')
|
|
|
|
echo "Processing transaction $TXN_ID (type: $TXN_TYPE)" >&2
|
|
|
|
# Default implementation: echo back the transaction
|
|
jq -n \
|
|
--arg txn_id "$TXN_ID" \
|
|
--arg txn_type "$TXN_TYPE" \
|
|
--argjson payload "$PAYLOAD" \
|
|
'{
|
|
"data": {
|
|
"status": "processed",
|
|
"transaction_id": $txn_id,
|
|
"txn_type": $txn_type,
|
|
"payload": $payload,
|
|
"message": "Transaction processed successfully"
|
|
},
|
|
"output_to_chain": true,
|
|
"error": ""
|
|
}'
|