
# Cardano Example Dapp

## **Boolean Predicate Functions**

This demo will test and explore logical operators, equality predicates, type predicates and empty string checks


## Try it online: 

-  Visit [HTML+JS Dapp](https://gamechangerfinance.github.io/gamechanger.wallet/examples/Boolean%20Predicate%20Functions.html)
-  Visit [HTML+React Dapp](https://gamechangerfinance.github.io/gamechanger.wallet/examples/Boolean%20Predicate%20Functions_react.html)
-  Visit [Native HTML dapp](https://gamechangerfinance.github.io/gamechanger.wallet/examples/Boolean%20Predicate%20Functions_nolib.html)
-  Run [Standalone URL dapp connection](https://wallet.gamechanger.finance/api/2/run/1-H4sIAAAAAAAAA6VXS3ObMBD-KwwXOTPMGGynaXxr-jh12kybnpoeMFZsUlkiIKbNePzfKxkBElrJ2M2BWPs9dhGskPYhzznB4TK8Y4zglAb3JV7nWcpx8KmmGc8ZrcIoXOMqK_NCDgX3YZtXwRrvWPAnJyTguOJBStcB_lsQVuKAsI2wIAErcJlyVlZRgF_qlOT8NShafxHkrwXWAo3HrhCsipc53QTZFme_ZX7JFImbIsRYZGIlf1f1hXd1Vx9EYYJSYl6X9Me3z_cp57iUdW85L5bTKWGiuC2r-HIex_FU3sg0LfLpOi0KKawFdx_WFX6fVriSv1X6XZqVrGeIcie8rHEkL1cC35uRg6B2kaeUVANSEzJYHjvA02U8cGfloEwjoDN6LzOiOMeBSdJDNstIacUlnzI-6UjdoEX6VP1IYvhlEkfxEVA_uyiKUR-XA4UgFAWog9RIYbQmJJKXFu4DimHOnxHQGX29ZkRxnitGH9jX1fME_fyFrqLBuBWeogFuSTQbMpsQ5Okmj3OeRcl4Z0W2nfcHkynHgCdIA9wew_QxXCbRY7gS_2dDlQpHiubIdb6Js5LjXNgGOuSuYIz4oszyaVycuRUfu1NrQar1IDWakBpdSM02pGYfUqsRqdWJ1GpFavUitZuR2t1IR7bjGB7k52_I8eyR3lpLjmcD3s6mHMOD_C5ry_93cdcytjEvV1-WW2_Ny9Uyd149iP3KBDWbKBShLSaENU3nwkCdQwKzk9kcpMu4zpfNjPomB8I2u6Zr_JRTvAYkPWbrBnfQBU3mboVLpNYyOwpxh_eqxyE-EsCwFB3RNatmP4v6NQ5GQE2_5jkgUBXDihhmI5kewRKF6bru-bgeI0hwOFivzRBz6AYvgonomrQs01cEfgpOUE64iN6N5iOsOp7fr1uYT1B0F7Z6xhn327g4J3ysSXJxIB_roRpAo_goj4Xfj0vKpHuYgyDANFY-CLE1McCOAZ5WtRVuT2mu1TaCFo7uDHee6uxczZJzfjalU6c8YN2OXE3ZngDP0rRnQPi5dYdCB6x2x9CMGec4N6H9ikPfM3P_6WacPvc5Tj0gbcS-1bVfc_qBGw21oUoO8GZDh90niXNMZCXZrrjLN1_q3QThF_m2xc3lmMEJupWJT5lYSoo9ShN0K-1qTXCg3PDGEVSaIKh05DRBS-krd4DCWmfB2FuxRG990ltYSbhbaGCQznWjxDdHxDtHxDtHxHefxH-fvtkl3tmVr3YSO_ulhcC36O1i8eZmsYhv5jfx7fV18ia5Rt0Jfjwb7ESYDYbhbj3H4BAexN8_AemrhdMWAAA)

## Source code:

- dapp connection code: [GCScript DSL](Boolean%20Predicate%20Functions.gcscript)
- frontend (using @gamechanger-finance/gc): [HTML+JS dapp](Boolean%20Predicate%20Functions.html)
- frontend (using @gamechanger-finance/gc): [HTML+React dapp](Boolean%20Predicate%20Functions_react.html)
- frontend (without official library): [Native HTML dapp](Boolean%20Predicate%20Functions_nolib.html)

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

## GCScript code (dapp connection):
```json
{
  "title": "Boolean Predicate Functions",
  "description": "This demo will test and explore logical operators, equality predicates, type predicates and empty string checks",
  "type": "script",
  "exportAs": "BooleanPredicatesDemo",
  "returnURLPattern": "http://localhost:3000/demo/api/dapp",
  "run": {
    "useCases": {
      "type": "macro",
      "run": {
        "and(true,true)": "{and(true,true)}",
        "and(true,false)": "{and(true,false)}",
        "and(true,true,true)": "{and(true,true,true)}",
        "and(true,true,false)": "{and(true,true,false)}",
        "or(true,true)": "{or(true,true)}",
        "or(true,false)": "{or(true,false)}",
        "or(false,false)": "{or(false,false)}",
        "or(false,false,true)": "{or(false,false,true)}",
        "not(true)": "{not(true)}",
        "not(false)": "{not(false)}",
        "eq(0,0)": "{eq(0,0)}",
        "eq(0,'0')": "{eq(0,'0')}",
        "eq('', '')": "{eq('', '')}",
        "eq(null,null)": "{eq(null,null)}",
        "eq(true,true)": "{eq(true,true)}",
        "eq(true,false)": "{eq(true,false)}",
        "eq(jsonToObj('[]'),jsonToObj('[]'))": "{eq(jsonToObj('[]'),jsonToObj('[]'))}",
        "eq(jsonToObj('[1,2]'),jsonToObj('[1,2]'))": "{eq(jsonToObj('[1,2]'),jsonToObj('[1,2]'))}",
        "eq(jsonToObj('[1,2]'),jsonToObj('[2,1]'))": "{eq(jsonToObj('[1,2]'),jsonToObj('[2,1]'))}",
        "eq(jsonToObj('{}'),jsonToObj('{}'))": "{eq(jsonToObj('{}'),jsonToObj('{}'))}",
        "eq(jsonToObj('{\"a\":1,\"b\":2}'),jsonToObj('{\"b\":2,\"a\":1}'))": "{eq(jsonToObj('{\"a\":1,\"b\":2}'),jsonToObj('{\"b\":2,\"a\":1}'))}",
        "eq(jsonToObj('{\"a\":[1,2]}'),jsonToObj('{\"a\":[1,2]}'))": "{eq(jsonToObj('{\"a\":[1,2]}'),jsonToObj('{\"a\":[1,2]}'))}",
        "eq(jsonToObj('{\"a\":[1,2]}'),jsonToObj('{\"a\":[2,1]}'))": "{eq(jsonToObj('{\"a\":[1,2]}'),jsonToObj('{\"a\":[2,1]}'))}",
        "neq(0,0)": "{neq(0,0)}",
        "neq(0,'0')": "{neq(0,'0')}",
        "neq('', '')": "{neq('', '')}",
        "neq(null,null)": "{neq(null,null)}",
        "neq(true,true)": "{neq(true,true)}",
        "neq(true,false)": "{neq(true,false)}",
        "neq(jsonToObj('[]'),jsonToObj('[]'))": "{neq(jsonToObj('[]'),jsonToObj('[]'))}",
        "neq(jsonToObj('[1,2]'),jsonToObj('[1,2]'))": "{neq(jsonToObj('[1,2]'),jsonToObj('[1,2]'))}",
        "neq(jsonToObj('[1,2]'),jsonToObj('[2,1]'))": "{neq(jsonToObj('[1,2]'),jsonToObj('[2,1]'))}",
        "neq(jsonToObj('{}'),jsonToObj('{}'))": "{neq(jsonToObj('{}'),jsonToObj('{}'))}",
        "neq(jsonToObj('{\"a\":1,\"b\":2}'),jsonToObj('{\"b\":2,\"a\":1}'))": "{neq(jsonToObj('{\"a\":1,\"b\":2}'),jsonToObj('{\"b\":2,\"a\":1}'))}",
        "neq(jsonToObj('{\"a\":[1,2]}'),jsonToObj('{\"a\":[1,2]}'))": "{neq(jsonToObj('{\"a\":[1,2]}'),jsonToObj('{\"a\":[1,2]}'))}",
        "neq(jsonToObj('{\"a\":[1,2]}'),jsonToObj('{\"a\":[2,1]}'))": "{neq(jsonToObj('{\"a\":[1,2]}'),jsonToObj('{\"a\":[2,1]}'))}",
        "isType('string','hello')": "{isType('string','hello')}",
        "isType('string','')": "{isType('string','')}",
        "isType('string',123)": "{isType('string',123)}",
        "isType('null',null)": "{isType('null',null)}",
        "isType('null',undefined)": "{isType('null',undefined)}",
        "isType('null','')": "{isType('null','')}",
        "isType('number',0)": "{isType('number',0)}",
        "isType('number',123)": "{isType('number',123)}",
        "isType('number','123')": "{isType('number','123')}",
        "isType('boolean',true)": "{isType('boolean',true)}",
        "isType('boolean',false)": "{isType('boolean',false)}",
        "isType('boolean',0)": "{isType('boolean',0)}",
        "isType('boolean','true')": "{isType('boolean','true')}",
        "isType('undefined',undefined)": "{isType('undefined',undefined)}",
        "isType('undefined',null)": "{isType('undefined',null)}",
        "isType('undefined','')": "{isType('undefined','')}",
        "isType('array',jsonToObj('[]'))": "{isType('array',jsonToObj('[]'))}",
        "isType('array',jsonToObj('[1,2,3]'))": "{isType('array',jsonToObj('[1,2,3]'))}",
        "isType('array',jsonToObj('{}'))": "{isType('array',jsonToObj('{}'))}",
        "isType('object',jsonToObj('{}'))": "{isType('object',jsonToObj('{}'))}",
        "isType('object',jsonToObj('[]'))": "{isType('object',jsonToObj('[]'))}",
        "isType('object',null)": "{isType('object',null)}",
        "isEmptyString('')": "{isEmptyString('')}",
        "isEmptyString('hello')": "{isEmptyString('hello')}",
        "isEmptyString(0)": "{isEmptyString(0)}",
        "isEmptyString(null)": "{isEmptyString(null)}",
        "and(isType('string','hello'),isType('number',123))": "{and(isType('string','hello'),isType('number',123))}",
        "and(isType('string','hello'),isType('number','123'))": "{and(isType('string','hello'),isType('number','123'))}",
        "or(isType('null',null),isType('undefined',null))": "{or(isType('null',null),isType('undefined',null))}",
        "not(isEmptyString('hello'))": "{not(isEmptyString('hello'))}",
        "eq(isType('number',123),true)": "{eq(isType('number',123),true)}",
        "neq(isType('string',123),true)": "{neq(isType('string',123),true)}",
        "eq(jsonToObj('[]'),jsonToObj('{}'))": "{eq(jsonToObj('[]'),jsonToObj('{}'))}",
        "neq(jsonToObj('[]'),jsonToObj('{}'))": "{neq(jsonToObj('[]'),jsonToObj('{}'))}",
        "eq(jsonToObj('{\"a\":{\"b\":1}}'),jsonToObj('{\"a\":{\"b\":1}}'))": "{eq(jsonToObj('{\"a\":{\"b\":1}}'),jsonToObj('{\"a\":{\"b\":1}}'))}",
        "cmpBigNum('eq','10','10')": "{cmpBigNum('eq','10','10')}",
        "cmpBigNum('eq','10','11')": "{cmpBigNum('eq','10','11')}",
        "cmpBigNum('ne','10','11')": "{cmpBigNum('ne','10','11')}",
        "cmpBigNum('ne','10','10')": "{cmpBigNum('ne','10','10')}",
        "cmpBigNum('gt','11','10')": "{cmpBigNum('gt','11','10')}",
        "cmpBigNum('gt','10','10')": "{cmpBigNum('gt','10','10')}",
        "cmpBigNum('gte','10','10')": "{cmpBigNum('gte','10','10')}",
        "cmpBigNum('gte','11','10')": "{cmpBigNum('gte','11','10')}",
        "cmpBigNum('gte','9','10')": "{cmpBigNum('gte','9','10')}",
        "cmpBigNum('lt','9','10')": "{cmpBigNum('lt','9','10')}",
        "cmpBigNum('lt','10','10')": "{cmpBigNum('lt','10','10')}",
        "cmpBigNum('lte','10','10')": "{cmpBigNum('lte','10','10')}",
        "cmpBigNum('lte','9','10')": "{cmpBigNum('lte','9','10')}",
        "cmpBigNum('lte','11','10')": "{cmpBigNum('lte','11','10')}",
        "cmpBigNum('eq',10,'10')": "{cmpBigNum('eq',10,'10')}",
        "cmpBigNum('gt','18446744073709551615','0')": "{cmpBigNum('gt','18446744073709551615','0')}",
        "cmpBigNum('eq','18446744073709551615','18446744073709551615')": "{cmpBigNum('eq','18446744073709551615','18446744073709551615')}"
      }
    }
  }
}
```

## 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](Boolean%20Predicate%20Functions.png)](https://gamechangerfinance.github.io/gamechanger.wallet/examples/Boolean%20Predicate%20Functions.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 
    
