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))
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
.
- 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
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))
This project is licensed under the GNU AGPL 3.0 - see the LICENSE.md file for details
- Michael Burge - Main Developer