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 / haskell-language-extensions.md
Last active August 31, 2023 07:50
A Taxonomy of Haskell Language Extensions

Haskell Language Extension Taxonomy

Caveat: It's just personal opinion, and was written to be a bit provocative and encourage discussion . It is also something that is constantly evolving. Some of the main criteria I used in constructing this taxonomy are age, how widely used it us, and how well understood it is by the average Haskell programmer. These things will change over time.

Aso, this is focused on appropriateness for use in commercial production code bases. If you are not thinking about commercial use with a team of multiple

@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
)