
# Cardano Example Dapp

## **Helios One-Shot Mint**

Parameterizes and compiles an Helios Smart Contract on the fly on user wallet, a One-Shot Mint validator pattern. The UTXO required for the one-shot mint is produced on a first transaction, but a previously-generated one can be provided to avoid this first step.


## Try it online: 

-  Visit [HTML+JS Dapp](https://gamechangerfinance.github.io/gamechanger.wallet/examples/Helios%20One-Shot%20Mint.html)
-  Visit [HTML+React Dapp](https://gamechangerfinance.github.io/gamechanger.wallet/examples/Helios%20One-Shot%20Mint_react.html)
-  Visit [Native HTML dapp](https://gamechangerfinance.github.io/gamechanger.wallet/examples/Helios%20One-Shot%20Mint_nolib.html)
-  Run [Standalone URL dapp connection](https://wallet.gamechanger.finance/api/2/run/1-H4sIAAAAAAAAA81WWW_iSBD-K5ZfmJEYxBFmxUj7QEw4QkICNuYYjVZtu7E7tN2e7jZHovz3rW4bQs6ZXe3DIlnY7qrvq8tV9WBKIik2v5l9TAkTxk2Cv9gRk8Y1SaRZNgMsfE5SSVgCQreIoxhLzMk9FgZKAsNncUqofjAKCDtGXBoWSyRHvjRYYsgIGyu6V7eZwNzYIkqxLBvoOZ2xQZQESDJupEgCS1IxHFCdOvMbg-OfGeE4MFZwrAAZqAqlGitVIoyUsyDzQQJokLEiXEgDTEgEWAHmlw0vk3CQcrwhLBN0_yXECeZIahVs-OCChxXMhgTwTjIDbRiBmwjQczwhcVqBsMh9qoKWxwaeEQ-F-e3BREJg-SWBIMHpEOPUQjRuJ8FU4J4Fcj8zlEDE93BaMx_LJt6ljMs26JoQChUJFQjMQZRjmfFEgcYsUHAUCal0eKbfHoxX0dHcL20iglE4t5AfwXvJM_xrUC8jNDgB08_OTnlc1IlORi_nZspOuQP5R4AQJNQYAZYISiK4xTwmQkDowbwVogI_xQ1EnZ3Q2nD43XwIsfxU8pWpFc1Zkbs-3pU-P5o_FHTmxUSeOqlfnEA8Q1DwShU0M7ljJ3ox8jkzj-4CCRLRC-0jPxwplLLJMplm8iVLLkeSAO-uUVrJhTTtowoHFDJ6n1kXygjqBLxUuEJyh8H9J02gyqnyVEulz9qMoy9vWf2sHJ5ZL3c3mRwEuw8VCheL_2_Vwo-ymT598iQJbZZxH1u6dt52DXIpFInEcfokXSp7SOCvZw6zJf9U8mY0C3o0W-7Pa0E_2szrzThos-Gi3sr8xjhczEf3y_lk5cVduXRYOE5odTnt7v242xx0quGg2nWmVXfqrLujidsaTNzwqOs13Krfd6vzOl3fkPMpvmgBB_Bc0LXSdfvRbTCfbOG6XHbYVy92G8Pu5Myejb_exE0a7MM7txsNxu5oMLS3Idzfuu7kctINUytM42DWvBv0ahGanbH5fhsuGpMz4HEWjcvU7086Xr1ZXc6j6tBuy1tybnn1lhj0xXBgtcNBX8tOsdVuDXqjKraaVdwRQ4vAmXWeLZPJqvD9zut17_178D1_7ujnPehdwH_drY7ru8hvXB9szvH1dX4X9MNsWVcxGNX85JJ6gHuMea219eq7dNGgKwSYCJy6arPwqN_L8SEnkTebFrjrP6wwlwnirghmboHnqhjPFrNdbWmDbeDfVVxLgY8un_yq63O3JdEMYjMbh7cO5EHjTAv7o9e-Q2yv7XV4SRbH2F3FNFO59bcn9lpgZ7Jmw15-luc8v3-eAwl2QR1YzU2R_xUqbDmtmZW9Hq7G7M_io3u7mjlOKfJxm9L8gw0p8xCtvBD7XC61bfvCGbWvL_7qX8xL5ZPvT_WHymkbAML_gtGZ99t2v2Tkv1eMqokc28N_RHgzdQadeelDwrwH5ZSqpR9n_UkjSWkmM2EfBlgxyeBckDilZLU_zpFIrxp5Hyq62jv2KQc3mIt8galWas1K3VSN7dej7p2VSA88U20danQ9mCmjxN8Pghf99ehgJfdDRbwYaeW8_efqLyfBxyXy-HyJeHgaF4e3unP_ePwBC0CST63v74yM1_Wg0PVA-0DykEjFUja3RCYYLNQbSJ4_nTDtcs5duP8K9FWADv5RlITvyqrDwkVIItObqab0GVXrDkfUYiSxMcV-sbVete2rdicfZ__LJWVFEtiI9-9vC_-6xP5RXeX7xduJ_93KgzCo9f-w_f9uyn9rEVN71d-skD1JsQwAAA)

## Source code:

- dapp connection code: [GCScript DSL](Helios%20One-Shot%20Mint.gcscript)
- frontend (using @gamechanger-finance/gc): [HTML+JS dapp](Helios%20One-Shot%20Mint.html)
- frontend (using @gamechanger-finance/gc): [HTML+React dapp](Helios%20One-Shot%20Mint_react.html)
- frontend (without official library): [Native HTML dapp](Helios%20One-Shot%20Mint_nolib.html)

Dapp code was autogenerated by [Playground IDE in GameChanger Wallet ](https://wallet.gamechanger.finance/playground)

## GCScript code (dapp connection):
```json
{
  "title": "Helios One-Shot Mint",
  "description": "Parameterizes and compiles an Helios Smart Contract on the fly on user wallet, a One-Shot Mint validator pattern. The UTXO required for the one-shot mint is produced on a first transaction, but a previously-generated one can be provided to avoid this first step.",
  "type": "script",
  "args": {
    "asset-name": "KeepCalmAndUseGC",
    "quantity": "1"
  },
  "exportAs": "OneShotMinter",
  "return": {
    "mode": "last"
  },
  "run": {
    "generateUTXOs": {
      "type": "script",
      "isolateCache": true,
      "return": {
        "mode": "last"
      },
      "run": {
        "build": {
          "type": "buildTx",
          "title": "UTXO Generator",
          "tx": {}
        },
        "sign": {
          "detailedPermissions": false,
          "type": "signTxs",
          "txs": [
            "{get('cache.build.txHex')}"
          ]
        },
        "submit": {
          "type": "submitTxs",
          "txs": "{get('cache.sign')}"
        },
        "utxo": {
          "type": "macro",
          "run": {
            "txHash": "{get('cache.build.txHash')}",
            "outputs": "{get('cache.build.indexMap.output')}"
          }
        }
      }
    },
    "data": {
      "type": "macro",
      "run": {
        "assetNameHex": "{strToHex(get('args.asset-name'))}",
        "utxo": {
          "txHash": "{get('cache.generateUTXOs.txHash')}",
          "txOutIdx": "{get('cache.generateUTXOs.outputs.output:0')}"
        }
      }
    },
    "parameterizingSourceCode": {
      "type": "macro",
      "run": [
        "{set('tempSourceCode',base64ToStr('bWludGluZyB1dHhvX25mdAoKY29uc3QgYXNzZXRfbmFtZTogQnl0ZUFycmF5ID0gI0FTU0VUTkFNRV9IRVgKY29uc3Qgb3V0cHV0X2lkOiBUeE91dHB1dElkID0gVHhPdXRwdXRJZDo6bmV3KFR4SWQ6Om5ldygjVFhIQVNIKSwgVFhPVVRJRFgpCgpmdW5jIG1haW4oXywgY3R4OiBTY3JpcHRDb250ZXh0KSAtPiBCb29sIHsKICAgIHR4OiBUeCA9IGN0eC50eDsKCiAgICBuZnRfYXNzZXRjbGFzczogQXNzZXRDbGFzcyA9IEFzc2V0Q2xhc3M6Om5ldygKICAgICAgICBjdHguZ2V0X2N1cnJlbnRfbWludGluZ19wb2xpY3lfaGFzaCgpLAogICAgICAgIGFzc2V0X25hbWUKICAgICk7CgogICAgdmFsdWVfbWludGVkOiBWYWx1ZSA9IHR4Lm1pbnRlZDsKCiAgICB2YWx1ZV9taW50ZWQgPT0gVmFsdWU6Om5ldyhuZnRfYXNzZXRjbGFzcywgMSkgJiYKICAgIHR4LmlucHV0cwogICAgICAgIC5hbnkoKGlucHV0OiBUeElucHV0KSAtPiBCb29sIHtpbnB1dC5vdXRwdXRfaWQgPT0gb3V0cHV0X2lkfSkKfQo='))}",
        "{set('tempSourceCode',replaceAll(get('global.tempSourceCode'),'ASSETNAME_HEX',get('cache.data.assetNameHex')))}",
        "{set('tempSourceCode',replaceAll(get('global.tempSourceCode'),'TXHASH'       ,get('cache.data.utxo.txHash')))}",
        "{set('tempSourceCode',replaceAll(get('global.tempSourceCode'),'TXOUTIDX'     ,get('cache.data.utxo.txOutIdx')))}"
      ]
    },
    "validator": {
      "type": "plutusScript",
      "script": {
        "simplify": false,
        "heliosCode": "{get('global.tempSourceCode')}",
        "version": "0.15.2"
      }
    },
    "build": {
      "type": "buildTx",
      "title": "Helios One-Shot Mint",
      "tx": {
        "mints": [
          {
            "policyId": "{get('cache.validator.scriptHashHex')}",
            "assets": [
              {
                "assetNameHex": "{get('cache.data.assetNameHex')}",
                "quantity": "{get('args.quantity')}"
              }
            ]
          }
        ],
        "inputs": [
          {
            "txHash": "{get('cache.data.utxo.txHash')}",
            "index": "{get('cache.data.utxo.txOutIdx')}"
          }
        ],
        "witnesses": {
          "plutus": {
            "scripts": [
              {
                "scriptHex": "{get('cache.validator.scriptHex')}",
                "lang": "{get('cache.validator.lang')}"
              }
            ]
          }
        },
        "options": {
          "collateralCoinSelection": "LASLAD"
        }
      }
    },
    "sign": {
      "detailedPermissions": false,
      "type": "signTxs",
      "txs": [
        "{get('cache.build.txHex')}"
      ]
    },
    "submit": {
      "type": "submitTxs",
      "txs": "{get('cache.sign')}"
    },
    "finally": {
      "type": "macro",
      "run": {
        "policyId": "{get('cache.validator.scriptHashHex')}",
        "assetNameHex": "{get('cache.data.assetNameHex')}",
        "utxo": "{get('cache.data.utxo')}",
        "quantity": "{get('args.quantity')}",
        "smartContract": "{get('cache.validator.scriptHex')}",
        "txHash": "{get('cache.build.txHash')}"
      }
    }
  }
}
```

## Run standalone QR dapp connection: 

You can use [Playground IDE in GameChanger Wallet ](https://wallet.gamechanger.finance/playground) in `QR URL Transport` mode to capture results

[![This GCScript/URL is too large! make it shorter uploading parts to GCFS. Unable to generate QR code](Helios%20One-Shot%20Mint.png)](https://gamechangerfinance.github.io/gamechanger.wallet/examples/Helios%20One-Shot%20Mint.png)

## Resources
- [How to connect?](https://www.npmjs.com/package/@gamechanger-finance/gc)
- [Docs and examples on Github](https://github.com/GameChangerFinance/gamechanger.wallet/)
- [GCScript documentation](https://wallet.gamechanger.finance/doc/api/v2)
- [Playground IDE in GameChanger Wallet ](https://wallet.gamechanger.finance/playground)
- [Tutorials on Youtube](https://www.youtube.com/@gamechanger.finance)
- [Support on Discord](https://discord.gg/vpbfyRaDKG)
- [News on Twitter](https://twitter.com/GameChangerOk)
- [Website](https://gamechanger.finance)

## License
MIT 
    
