Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
3094996
plugin-based account abstraction
joe-p Jan 9, 2024
b206344
fix typo
joe-p Jan 9, 2024
f797187
add EOA definition, finish app vs logic sig
joe-p Jan 9, 2024
638d666
Assign number Fixing format
SudoWeezy Jan 9, 2024
0364851
add reference contract in ARC, minor updates
joe-p Jan 9, 2024
11cce9a
updated TEALScript
joe-p Jan 9, 2024
e04e42f
named plugins
joe-p Jan 10, 2024
6257d60
add named plugins
joe-p Jan 10, 2024
a750301
reword named plugins
joe-p Jan 10, 2024
55e6308
fix typos
joe-p Jan 10, 2024
e1b114e
update implementation
joe-p Jan 18, 2024
20f89fd
add plugin permissions to ARC
joe-p Jan 18, 2024
7814757
Wallet and Application Support
joe-p Jan 18, 2024
57d7f2b
add sequence diagrams and new implementation
joe-p Feb 2, 2024
d1754b1
allow rekey/verify anywhere in group, implementation updates
joe-p Feb 15, 2024
b37c8bf
minor updates/rewording
joe-p Feb 15, 2024
0843736
feat: arc58 implementation
kylebeee Jun 30, 2025
4efe6e8
wip: updating the readme
kylebeee Jul 1, 2025
0e82ef0
chore: more tests & updates to the ARC
kylebeee Jul 9, 2025
695a1c3
feat: small adjustments + ARC readme update
kylebeee Jul 10, 2025
167e403
chore: constants for purpose clarity
kylebeee Jul 11, 2025
42763aa
wip: escrow locking, executions, fix for plugin change admin & fix fo…
kylebeee Oct 10, 2025
49a473a
wip: fixing tests
kylebeee Oct 10, 2025
23f622a
feat: upgraded to puya-ts 1.0.1 & fixed a registration bug with the e…
kylebeee Nov 5, 2025
de2de81
fix: bad execution validity window check causing erroneous errors
kylebeee Nov 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
735 changes: 735 additions & 0 deletions ARCs/arc-0058.md

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions assets/arc-0058/.algokit.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[algokit]
min_version = "v1.12.1"

[project]
type = 'workspace'
projects_root_path = 'projects'

[generate.devcontainer]
description = "Generate a default 'devcontainer.json' configuration that pre-installs algokit and launches Algorand sandbox as part of codespace container provisioning."
path = ".algokit/generators/create-devcontainer"
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
_tasks:
- "echo '==== Successfully generated new .devcontainer.json file 🚀 ===='"

_templates_suffix: ".j2"
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"forwardPorts": [4001, 4002, 8980, 5173],
"portsAttributes": {
"4001": {
"label": "algod"
},
"4002": {
"label": "kmd"
},
"8980": {
"label": "indexer"
},
"5173": {
"label": "vite"
}
},
"postCreateCommand": "mkdir -p ~/.config/algokit && pipx install algokit && sudo chown -R codespace:codespace ~/.config/algokit",
"postStartCommand": "for i in {1..5}; do algokit localnet status > /dev/null 2>&1 && break || sleep 30; algokit localnet reset; done"
}
10 changes: 10 additions & 0 deletions assets/arc-0058/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[*]
charset = utf-8
insert_final_newline = true
end_of_line = lf
indent_style = space
indent_size = 2
tab_width = 2
max_line_length = 140
trim_trailing_whitespace = true
single_quote = true
1 change: 1 addition & 0 deletions assets/arc-0058/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* text=auto eol=lf
45 changes: 45 additions & 0 deletions assets/arc-0058/.github/workflows/arc-0058-cd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Release arc-0058

on:
workflow_call:

jobs:
deploy-testnet:
runs-on: "ubuntu-latest"

environment: contract-testnet
steps:
- name: Checkout source code
uses: actions/checkout@v4

- name: Use Node.js 22.x
uses: actions/setup-node@v4
with:
node-version: '22.x'
cache: 'npm'
cache-dependency-path: '**/package-lock.json'

- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install algokit
run: pipx install algokit

- name: Bootstrap dependencies
run: algokit project bootstrap all --project-name 'arc-0058'

- name: Configure git
shell: bash
run: |
# set git user and email as test invoke git
git config --global user.email "actions@github.com" && git config --global user.name "github-actions"

- name: Deploy to testnet
run: algokit project deploy testnet --project-name 'arc-0058'
env:
# This is the account that becomes the creator of the contract
DEPLOYER_MNEMONIC: ${{ secrets.DEPLOYER_MNEMONIC }}
# The dispenser account is used to ensure the deployer account is funded
DISPENSER_MNEMONIC: ${{ secrets.DISPENSER_MNEMONIC }}
72 changes: 72 additions & 0 deletions assets/arc-0058/.github/workflows/arc-0058-ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Validate arc-0058

on:
workflow_call:

jobs:
validate:
runs-on: "ubuntu-latest"
steps:
- name: Checkout source code
uses: actions/checkout@v4

- name: Use Node.js 22.x
uses: actions/setup-node@v4
with:
node-version: '22.x'
cache: 'npm'
cache-dependency-path: "**/package-lock.json"

- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install algokit
run: pipx install algokit

- name: Start LocalNet
run: algokit localnet start

- name: Bootstrap dependencies
run: algokit project bootstrap all --project-name 'arc-0058'

- name: Configure git
shell: bash
run: |
# set git user and email as test invoke git
git config --global user.email "actions@github.com" && git config --global user.name "github-actions"


- name: Audit dependencies
run: algokit project run audit --project-name 'arc-0058'



- name: Lint and format
run: algokit project run lint --project-name 'arc-0058'



- name: Run tests
shell: bash
run: |
set -o pipefail
algokit project run test --project-name 'arc-0058'


- name: Build smart contracts
run: algokit project run build --project-name 'arc-0058'

- name: Scan TEAL files for issues
run: algokit project run audit-teal --project-name 'arc-0058'

# # Uncomment to enable TEAL static analysis with snapshoting using Tealer package
# # Would first require running locally using audit-teal command and committing the snapshots into source control
# # Please note, tealer has a known bug that may result in large snapshot file sizes, track resolution here:
# # https://github.com/crytic/tealer/issues/101
# - name: Check output stability of the smart contracts
# run: algokit project run ci-teal-diff --project-name 'arc-0058'

- name: Run deployer against LocalNet
run: algokit project deploy localnet --project-name 'arc-0058'
170 changes: 170 additions & 0 deletions assets/arc-0058/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Ruff (linter)
.ruff_cache/

# Cython debug symbols
cython_debug/

# PyCharm
.idea/
!.idea/runConfigurations

# macOS
.DS_Store

# Received approval test files
*.received.*

# NPM
node_modules

5 changes: 5 additions & 0 deletions assets/arc-0058/.vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
// Disabled due to matangover.mypy extension not supporting monorepos
// To be addressed as part of https://github.com/matangover/mypy-vscode/issues/82
"mypy.enabled": false
}
22 changes: 22 additions & 0 deletions assets/arc-0058/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# arc-0058

Welcome to your new AlgoKit project!

This is your workspace root. A `workspace` in AlgoKit is an orchestrated collection of standalone projects (backends, smart contracts, frontend apps and etc).

By default, `projects_root_path` parameter is set to `projects`. Which instructs AlgoKit CLI to create a new directory under `projects` directory when new project is instantiated via `algokit init` at the root of the workspace.

## Getting Started

To get started refer to `README.md` files in respective sub-projects in the `projects` directory.

To learn more about algokit, visit [documentation](https://github.com/algorandfoundation/algokit-cli/blob/main/docs/algokit.md).

### GitHub Codespaces

To get started execute:

1. `algokit generate devcontainer` - invoking this command from the root of this repository will create a `devcontainer.json` file with all the configuration needed to run this project in a GitHub codespace. [Run the repository inside a codespace](https://docs.github.com/en/codespaces/getting-started/quickstart) to get started.
2. `algokit init` - invoke this command inside a github codespace to launch an interactive wizard to guide you through the process of creating a new AlgoKit project

Powered by [Copier templates](https://copier.readthedocs.io/en/stable/).
Loading
Loading