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