teal-template

Teal Smart Contract: Template

https://github.com/block-foundation/teal-template

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.7%) to scientific vocabulary

Keywords

algo algorand block-foundation blockchain blockfoundation pyteal smart-contract teal template
Last synced: 6 months ago · JSON representation ·

Repository

Teal Smart Contract: Template

Basic Info
  • Host: GitHub
  • Owner: block-foundation
  • License: cc-by-sa-4.0
  • Language: Python
  • Default Branch: main
  • Homepage: https://www.blockfoundation.io
  • Size: 57.6 KB
Statistics
  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • Open Issues: 6
  • Releases: 0
Topics
algo algorand block-foundation blockchain blockfoundation pyteal smart-contract teal template
Created over 2 years ago · Last pushed over 1 year ago
Metadata Files
Readme Changelog Contributing Funding License Code of conduct Citation Codeowners Security Support Governance Authors

README.md

[![GitHub License](https://img.shields.io/github/license/block-foundation/blocktxt?style=flat-square&logo=readthedocs&logoColor=FFFFFF&label=&labelColor=%23041B26&color=%23041B26&link=LICENSE)](https://github.com/block-foundation/teal-template/blob/main/LICENSE) [![devContainer](https://img.shields.io/badge/Container-Remote?style=flat-square&logo=visualstudiocode&logoColor=%23FFFFFF&label=Remote&labelColor=%23041B26&color=%23041B26)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/block-foundation/teal-template)

Block Foundation Logo

PyTeal Template

Block Foundation Smart Contract Series [Teal]


Block Foundation Brand

Contents



[![Report a Bug](https://img.shields.io/badge/Report%20a%20Bug-GitHub?style=flat-square&&logoColor=%23FFFFFF&color=%23E1E4E5)](https://github.com/block-foundation/teal-template/issues/new?assignees=&labels=Needs%3A+Triage+%3Amag%3A%2Ctype%3Abug-suspected&projects=&template=bug_report.yml) [![Request a Feature](https://img.shields.io/badge/Request%20a%20Feature-GitHub?style=flat-square&&logoColor=%23FFFFFF&color=%23E1E4E5)](https://github.com/block-foundation/teal-template/issues/new?assignees=&labels=Needs%3A+Triage+%3Amag%3A%2Ctype%3Abug-suspected&projects=&template=feature_request.yml) [![Ask a Question](https://img.shields.io/badge/Ask%20a%20Question-GitHub?style=flat-square&&logoColor=%23FFFFFF&color=%23E1E4E5)](https://github.com/block-foundation/teal-template/issues/new?assignees=&labels=Needs%3A+Triage+%3Amag%3A%2Ctype%3Abug-suspected&projects=&template=question.yml) [![Make a Suggestion](https://img.shields.io/badge/Make%20a%20Suggestion-GitHub?style=flat-square&&logoColor=%23FFFFFF&color=%23E1E4E5)](https://github.com/block-foundation/teal-template/issues/new?assignees=&labels=Needs%3A+Triage+%3Amag%3A%2Ctype%3Abug-suspected&projects=&template=suggestion.yml) [![Start a Discussion](https://img.shields.io/badge/Start%20a%20Discussion-GitHub?style=flat-square&&logoColor=%23FFFFFF&color=%23E1E4E5)](https://github.com/block-foundation/teal-template/issues/new?assignees=&labels=Needs%3A+Triage+%3Amag%3A%2Ctype%3Abug-suspected&projects=&template=discussion.yml)

Introduction

This is a very simple example of a stateful smart contract on the Algorand blockchain. Stateful smart contracts have access to both global state (shared by all users of the contract) and local state (unique to each user), but this example only uses local state. The "counter" variable is stored in each user's local state, and is incremented by 1 each time that user calls the contract.

```python from pyteal import *

def approvalprogram(): # This block executes when the smart contract is first initialized. # It sets a local variable "counter" to 0 for the sender of the transaction. oninitialization = Seq([ App.localPut(Int(0), Bytes("counter"), Int(0)), Return(Int(1)) # This indicates that the initialization was successful. ])

# This block executes on each call to the smart contract after it has been initialized.
# It increments the "counter" variable by 1 for the sender of the transaction.
on_call = Seq([
    App.localGetEx(Int(0), App.id(), Bytes("counter")),
    App.localPut(Int(0), Bytes("counter"), Add(Int(1), App.localGet(Int(0), Bytes("counter")))),
    Return(Int(1))  # This indicates that the call was successful.
])

# The Cond function routes execution depending on whether the application is being initialized or called.
# If the application_id of the transaction is 0, that means the application is being initialized.
# Otherwise, the application is being called.
program = Cond(
    [Txn.application_id() == Int(0), on_initialization],
    [Txn.application_id() != Int(0), on_call]
)

return program

if name == "main": # This line compiles the PyTeal code into TEAL (Transaction Execution Approval Language), the bytecode language that Algorand smart contracts are executed in. print(compileTeal(approval_program(), mode=Mode.Application)) ```

You can find more information on stateful smart contracts and PyTeal in the Algorand developer documentation.


Colophon

Authors

This is an open-source project by the Block Foundation.

The Block Foundation mission is enabling architects to take back initiative and contribute in solving the mismatch in housing through blockchain technology. Therefore the Block Foundation seeks to unschackle the traditional constraints and construct middle ground between rent and the rigidity of traditional mortgages.

website: www.blockfoundation.io

Development Resources

Contributing

We'd love for you to contribute and to make this project even better than it is today! Please refer to the contribution guidelines for information.

Legal Information

Copyright

Copyright © 2023 Stichting Block Foundation. All Rights Reserved.

License

Except as otherwise noted, the content in this repository is licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License, and code samples are licensed under the Apache 2.0 License.

Also see LICENSE and LICENSE-CODE.

Disclaimer

THIS SOFTWARE IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.

Owner

  • Name: Block Foundation
  • Login: block-foundation
  • Kind: organization
  • Email: info@blockfoundation.io
  • Location: Netherlands

The Block Foundation mission is enabling architects to take back initiative and contribute in solving the mismatch in housing through blockchain technology.

Citation (CITATION.cff)

cff-version: 1.2.0
title: teal-template
version: 0.0.1
date-released: 2023-07-01
url: "https://github.com/block-foundation/teal-template"
message: >-
  If you use this software, please cite it using
  the metadata from this file.
type: software
authors:
  - given-names: Lars Bastiaan
    family-names: van Vianen
    email: lars@blockfoundation.io
    affiliation: Block Foundation
    orcid: "https://orcid.org/0000-0002-8790-8630"

GitHub Events

Total
Last Year

Dependencies

.devcontainer/Dockerfile docker
  • ubuntu 22.04 build
.devcontainer/docker-compose.yml docker
requirements.txt pypi
  • PyNaCl ==1.4.0
  • atomicwrites ==1.4.0
  • attrs ==21.2.0
  • black ==21.11b1
  • cffi ==1.15.0
  • click ==8.0.3
  • colorama ==0.4.4
  • iniconfig ==1.1.1
  • msgpack ==1.0.3
  • mypy ==0.910
  • mypy-extensions ==0.4.3
  • packaging ==21.3
  • pathspec ==0.9.0
  • platformdirs ==2.4.0
  • pluggy ==1.0.0
  • py ==1.11.0
  • py-algorand-sdk ==1.8.0
  • pycparser ==2.21
  • pycryptodomex ==3.11.0
  • pyparsing ==3.0.6
  • pyteal ==0.9.1
  • pytest ==6.2.5
  • regex ==2021.11.10
  • six ==1.16.0
  • toml ==0.10.2
  • tomli ==1.2.2
  • typing_extensions ==4.0.1