forked from hush/hush3
Scott Sadler
6 years ago
2 changed files with 43 additions and 61 deletions
@ -1,61 +0,0 @@ |
|||||
# MigrateCoin protocol |
|
||||
|
|
||||
|
|
||||
|
|
||||
## ExportCoins tx: |
|
||||
|
|
||||
|
|
||||
|
|
||||
``` |
|
||||
|
|
||||
vin: |
|
||||
|
|
||||
[ any ] |
|
||||
|
|
||||
vout: |
|
||||
|
|
||||
- amount: {burnAmount} |
|
||||
|
|
||||
script: OP_RETURN "send to ledger {id} {voutsHash}" |
|
||||
|
|
||||
``` |
|
||||
|
|
||||
|
|
||||
|
|
||||
* ExportCoin is a standard tx which burns coins in an OP_RETURN |
|
||||
|
|
||||
|
|
||||
|
|
||||
## ImportCoins tx: |
|
||||
|
|
||||
|
|
||||
|
|
||||
``` |
|
||||
|
|
||||
vin: |
|
||||
|
|
||||
- txid: 0000000000000000000000000000000000000000000000000000000000000000 |
|
||||
|
|
||||
idx: 0 |
|
||||
|
|
||||
script: CC_EVAL(EVAL_IMPORTCOINS, {momoProof},{exportCoin}) OP_CHECKCRYPTOCONDITION_UNILATERAL |
|
||||
|
|
||||
vout: |
|
||||
|
|
||||
- [ vouts matching voutsHash in exportCoin ] |
|
||||
|
|
||||
``` |
|
||||
|
|
||||
|
|
||||
|
|
||||
* ImportCoin transaction has no signature |
|
||||
|
|
||||
* ImportCoin is non malleable |
|
||||
|
|
||||
* ImportCoin satisfies tx.IsCoinBase() |
|
||||
|
|
||||
* ImportCoin uses a new opcode which allows a one sided check (no scriptPubKey) |
|
||||
|
|
||||
* ImportCoin must contain CC opcode EVAL_IMPORTCOINS |
|
||||
|
|
||||
* ImportCoin fees are equal to the difference between burnAmount in exportCoins and the sum of outputs. |
|
@ -0,0 +1,43 @@ |
|||||
|
#!/usr/bin/bash |
||||
|
|
||||
|
# This script makes the neccesary transactions to migrate |
||||
|
# coin between 2 assetchains on the same -ac_cc id |
||||
|
|
||||
|
set -e |
||||
|
|
||||
|
source=TXSCL |
||||
|
target=TXSCL000 |
||||
|
address="RFw7byY4xZpZCrtkMk3nFuuG1NTs9rSGgQ" |
||||
|
amount=1 |
||||
|
|
||||
|
# Alias for running cli on source chain |
||||
|
cli_source="komodo-cli -ac_name=$source" |
||||
|
|
||||
|
# Raw tx that we will work with |
||||
|
txraw=`$cli_source createrawtransaction "[]" "{\"$address\":$amount}"` |
||||
|
|
||||
|
# Convert to an export tx |
||||
|
exportData=`$cli_source migrate_converttoexport $txraw $target $amount` |
||||
|
exportRaw=`echo $exportData | jq -r .exportTx` |
||||
|
exportPayouts=`echo $exportData | jq -r .payouts` |
||||
|
|
||||
|
# Fund |
||||
|
exportFundedData=`$cli_source fundrawtransaction $exportRaw` |
||||
|
exportFundedTx=`echo $exportFundedData | jq -r .hex` |
||||
|
|
||||
|
# Sign |
||||
|
exportSignedData=`$cli_source signrawtransaction $exportFundedTx` |
||||
|
exportSignedTx=`echo $exportSignedData | jq -r .hex` |
||||
|
|
||||
|
# Send |
||||
|
echo "Sending export tx" |
||||
|
$cli_source sendrawtransaction $exportSignedTx |
||||
|
|
||||
|
read -p "Wait for a notarisation to KMD, and then two more notarisations from the target chain, and then press enter to continue" |
||||
|
|
||||
|
# Create import |
||||
|
importTx=`$cli_source migrate_createimporttransaction $exportSignedTx $payouts` |
||||
|
importTx=`komodo-cli migrate_completeimporttransaction $importTx` |
||||
|
|
||||
|
# Send import |
||||
|
komodo-cli -ac_name=$target sendrawtransaction $importTx |
Loading…
Reference in new issue