Commit e6cf75d8 authored by Sambit's avatar Sambit

Scripts and Smart Contract

parents
Pipeline #1734 canceled with stages

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

# Setup
1. Install [Docker Desktop](https://www.docker.com/products/docker-desktop)
2. Install [Algorand sandbox](https://github.com/algorand/sandbox)
3. Add this project folder as bind volume in sandbox `docker-compose.yml` under key `services.algod`:
```yml
volumes:
- type: bind
source: <path>
target: /data
```
4. Start sandbox:
```txt
$ ./sandbox up
```
5. Install Python virtual environment in project folder:
```txt
$ python -m venv venv
$ source ./venv/Scripts/activate # Windows
$ source ./venv/bin/activate # Linux
```
6. Use Python interpreter: `./venv/Scripts/python.exe`
VSCode: `Python: Select Interpreter`
# Scripts
`call.sh`
`grouped_txn.sh`
`parallel_calls.sh`
`vars.sh`
\ No newline at end of file
#!/usr/bin/env bash
mkdir -p ./build/
# clean
rm -f ./build/*.teal
set -e # die on error
python ./compile.py "$1" ./build/approval.teal ./build/clear.teal
#pragma version 5
txn ApplicationID
int 0
==
bnz main_l17
txn OnCompletion
int DeleteApplication
==
bnz main_l16
txn OnCompletion
int UpdateApplication
==
bnz main_l15
txn OnCompletion
int OptIn
==
bnz main_l14
txn OnCompletion
int CloseOut
==
bnz main_l13
txn OnCompletion
int NoOp
==
bnz main_l7
err
main_l7:
txna ApplicationArgs 0
byte "run"
==
bnz main_l9
err
main_l9:
byte "count"
txna ApplicationArgs 1
btoi
app_global_put
int 0
store 0
main_l10:
load 0
byte "count"
app_global_get
<
bnz main_l12
int 1
return
main_l12:
byte "counter"
byte "counter"
app_global_get
int 1
+
app_global_put
load 0
int 1
+
store 0
b main_l10
main_l13:
int 0
return
main_l14:
int 0
return
main_l15:
int 0
return
main_l16:
int 0
return
main_l17:
byte "counter"
int 0
app_global_put
int 1
return
\ No newline at end of file
#pragma version 5
int 1
return
\ No newline at end of file
import importlib
import sys
from pyteal_helpers import program
if __name__ == "__main__":
mod = sys.argv[1]
try:
approval_out = sys.argv[2]
except IndexError:
approval_out = None
try:
clear_out = sys.argv[3]
except IndexError:
clear_out = None
contract = importlib.import_module(mod)
if approval_out is None:
print(program.application(contract.approval()))
else:
with open(approval_out, "w") as h:
h.write(program.application(contract.approval()))
if clear_out is not None:
with open(clear_out, "w") as h:
h.write(program.application(contract.clear()))
from pyteal import *
# from pyteal.ast.bytes import Bytes
from pyteal_helpers import program
# def approval():
# # globals
# global_owner = Bytes("owner") # byteslice
# global_counter = Bytes("counter") # uint64
# op_increment = Bytes("inc")
# op_decrement = Bytes("dec")
# increment = Seq(
# [
# App.globalPut(global_counter, App.globalGet(global_counter) + Int(1)),
# Approve(),
# ]
# )
# decrement = Seq(
# [
# App.globalPut(global_counter, App.globalGet(global_counter) - Int(1)),
# Approve(),
# ]
# )
# return program.event(
# init=Seq(
# [
# App.globalPut(global_owner, Txn.sender()),
# App.globalPut(global_counter, Int(0)),
# Approve(),
# ]
# ),
# no_op=Cond(
# [Txn.application_args[0] == op_increment, increment],
# [Txn.application_args[0] == op_decrement, decrement],
# ),
# )
UINT64_MAX = 0xffffffffffffffff
def approval():