Pyramid Scheme
Pyramid is a dialect of the Scheme programming language targeting the Ethereum Virtual Machine(EVM).
Here is an example of a Pyramid program:
(begin
(define (factorial n)
(if (= n 1)
1
(* (factorial (- n 1)) n)))
(factorial 5))
Getting Started
Pyramid Scheme is under heavy construction. Join our public Discord channel if you'd like to contribute or use Pyramid to develop Ethereum contracts.
After installing the prerequisites(listed below),
$ ./pyramid -t tests/0001-factorial.pmd
(Test Passed: return 120 120 ((s . 14066) (g . 47052) (z . 3591)))
To deploy that program on a test network:
- Install Ganache CLI
- Start an EthereumJS test chain:
ganache-cli -l 10000000
. It will output a list of "Available Accounts". - Change the
from
variable in deploy.js to one of the test accounts. - Change the
code
variable to be the hex string that the Pyramid compiler output - Install the Go Ethereum client.
- Attach to the EthereumJS chain:
geth attach http://localhost:8545
. - Copy the contents of
deploy.js
into thegeth
Javascript prompt.
You can see advanced command line options using pyramid --help
.
Prerequisites
- Install the Racket language runtime at https://download.racket-lang.org
- Install necessary packages using "raco pkg install ". The packages are:
- Ensure the
keccak-256sum
tool is available on your PATH
Editor
I recommend Emacs with racket-mode
. You should add Pyramid's .pmd
extension to the list of racket-mode
file extensions:
(add-to-list 'auto-mode-alist '("\\.pmd\\'" . racket-mode))
License
This project is licensed under the GNU AGPL 3.0 - see the LICENSE.md file for details
Built With
Authors
- Michael Burge - Main Developer