Skip to content

Instantly share code, notes, and snippets.

@mightybyte
mightybyte / kadena_stratum_protocol.md
Created December 14, 2020 02:47
Kadena Stratum Protocol

Kadena stratum protocol

mining.subscribe

params: ["agent", null]
result: [null, "nonce1", "nonce2 size"]
@mightybyte
mightybyte / Counters.hs
Last active June 27, 2020 23:53
Reflex/React Comparison (look at the revision history)
{-# LANGUAGE OverloadedStrings #-}
import Reflex.Dom
counter = el "div" $ do
click <- button "Click"
clicks <- foldDyn (\() n -> n + 1) 0 click
el "p" $ display clicks
return clicks
main = mainWidget $ do
@mightybyte
mightybyte / default.nix
Created February 28, 2020 16:13
Generic Haskell Nix Template
{ compiler ? "ghc844"
, rev ? "497e6f1705107a7d60e400e3b6dd6df5ca8bcdba"
, sha256 ? "1gwdxpx5ix3k6j5q3704xchw4cfzmmr2sd6gsqmsln9yrmjzg9p4"
, pkgs ?
import (builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/${rev}.tar.gz";
inherit sha256; }) {
config.allowBroken = false;
config.allowUnfree = true;
}
@mightybyte
mightybyte / rotate-and-drain.yaml
Last active January 29, 2020 08:41
Pact command template for a safe rotate-and-drain operation
code: |-
(use coin)
(let* ((acct:string "rotest")
(bal:decimal (coin.get-balance acct))
)
(coin.rotate acct (read-keyset "ks"))
(coin.transfer acct "croesus" bal)
)
data:
ks:
@mightybyte
mightybyte / safe-transfer-example.yaml
Created January 12, 2020 05:07
Example template for safe transactions on Kadena
code: |-
(coin.transfer-create "alice" "bob" (read-keyset "ks") 100.1)
(coin.transfer "bob" "alice" 0.1)
data:
ks:
keys: [0ba113d8a84c307ebc2ace5090f117d921c43d9d3011e9cb9e030cb8ea5502eb]
pred: "keys-all"
publicMeta:
chainId: "0"
sender: alice
@mightybyte
mightybyte / hashing.pact
Created September 14, 2019 19:58
Playing around with hashing
(module hash MODULE_ADMIN
"A smart contract to greet the world."
(defcap MODULE_ADMIN () true)
(defun revcat (a b)
(+ b a)
)
(defun phash:string (str:string)
(let* ((h (hash str))
@mightybyte
mightybyte / default.nix
Created June 29, 2019 16:41
A default.nix template for nixifying Haskell projects
{ compiler ? "ghc844"
, rev ? "497e6f1705107a7d60e400e3b6dd6df5ca8bcdba"
, sha256 ? "1gwdxpx5ix3k6j5q3704xchw4cfzmmr2sd6gsqmsln9yrmjzg9p4"
, pkgs ?
import (builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/${rev}.tar.gz";
inherit sha256; }) {
config.allowBroken = false;
config.allowUnfree = true;
}
@mightybyte
mightybyte / hello-fv.pact
Created June 5, 2019 21:45
Hello world with formal verification
;;
;; "Hello, world!" smart contract/module
;;
;; Define the module.
(module hello-world MODULE_ADMIN
"A smart contract to greet the world."
; no-op module admin for example purposes.
; in a real contract this could enforce a keyset, or
@mightybyte
mightybyte / type-error.pact
Created June 3, 2019 21:08
Type error mentioned on Discord
; Simplified example of a token implementation.
; When I run `(typecheck "my-token")` I get the error:
; > Typecheck my-token: Unable to resolve all types
(module my-token GOVERNANCE
(defschema accounts-schema
balance:integer
guard:guard
)
@mightybyte
mightybyte / verification.pact
Created April 15, 2019 17:32
Pact formal verification example
;;
;; A little example showing off the merits of formal
;; verification and why it pays off.
;;
;; Keysets cannot be created in code, thus we read them in
;; from the load message data.
(define-keyset 'admin-keyset (read-keyset "admin-keyset"))
;; Define the module.