Skip to content

Instantly share code, notes, and snippets.

View jjgonecrypto's full-sized avatar
🔗
Eth wrangling.

j-j.eth jjgonecrypto

🔗
Eth wrangling.
View GitHub Profile
@jjgonecrypto
jjgonecrypto / vcheck.js
Created May 14, 2019 17:27
Node script to check npm version of package (expects piped in versions from npm)
'use strict';
const version = process.argv[2];
// Simple script to exit non-zero if the given version
// usage: npm view [package] versions | node vcheck [version]
// eg: npm view synthetix versions | node vcheck 2.4.1
process.stdin
.resume()
.setEncoding('utf8')
@jjgonecrypto
jjgonecrypto / exchanges.js
Created July 3, 2019 21:37
Get all SynthExchange events in the last 24hours using The Graph
const graphAPI = 'https://api.thegraph.com/subgraphs/name/synthetixio-team/synthetix';
const ts = Math.floor(Date.now()/1e3);
const oneDayAgo = ts - (3600 * 24);
const response = await fetch(graphAPI, {
method: 'POST',
body: `{"query":"{synthExchanges(orderBy:timestamp, orderDirection:desc, where:{timestamp_gt: ${oneDayAgo}}){id,from,gasPrice,fromAmount,fromCurrencyKey,toCurrencyKey,block,timestamp,toAddress}}","variables":null}`
});
const json = await response.json();
@jjgonecrypto
jjgonecrypto / totalIssuedSynths.js
Created July 3, 2019 21:54
Get total issued debt at some specific block
const { SynthetixJs } = require('synthetix-js');
const snxjs = new SynthetixJs();
(async () => {
const provider = snxjs.ethers.getDefaultProvider();
const currentBlock = await provider.getBlockNumber();
const totalDebtInSystemAtBlock = await snxjs.Synthetix.contract.totalIssuedSynths(
snxjs.utils.toUtf8Bytes4('sUSD'),
@jjgonecrypto
jjgonecrypto / index.html
Created October 20, 2019 16:53
Synthetix top holders lock status
<header><img src="https://developer.synthetix.io/api/img/logo.png" /></header>
<main>
<p class="helper-text">Note: these results aren't strictly ordered to increase performance.</p>
<button name="begin">Begin</button>
<button name="stop">Stop</button>
<ul>
<li id="tokenHolders"><strong>Token Holders:</strong><var>?</var></li>
@jjgonecrypto
jjgonecrypto / async-foreach.js
Created November 28, 2019 05:57
async forEach
// Useful if you want to run a bunch of promises in serial (which admittedly isn't very often frankly)
exports.asyncForEach = async (array, callback) => {
for (let index = 0; index < array.length; index++) {
await callback(array[index], index, array);
}
};
@jjgonecrypto
jjgonecrypto / sub.js
Last active December 1, 2019 23:33
Synthetix subgraph websocket
'use strict';
const WebSocket = require('ws');
const client = new WebSocket('wss://api.thegraph.com/subgraphs/name/synthetixio-team/synthetix-exchanges', [
'graphql-ws',
]);
client.on('open', () => {
console.log('open');
window.snxData=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)}([function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catc
@jjgonecrypto
jjgonecrypto / snippets.js
Created February 12, 2020 00:11
JS snippets
{
/*
// Place your snippets for JavaScript React here. Each snippet is defined under a snippet name and has a prefix, body and
// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the
// same ids are connected.
// Example:
"Print to console": {
"prefix": "log",
"body": [
@jjgonecrypto
jjgonecrypto / git-delete-squashed.sh
Created March 11, 2020 16:20
git-delete-squashed
#!/bin/sh
# adapted from https://github.com/not-an-aardvark/git-delete-squashed
function git-delete-squashed() {
BASE_BRANCH=${1:-master}
git checkout -q $BASE_BRANCH &&
git for-each-ref refs/heads/ "--format=%(refname:short)" |
while read branch;
do mergeBase=$(git merge-base $BASE_BRANCH $branch) && [[ $(git cherry $BASE_BRANCH $(git commit-tree $(git rev-parse $branch\^{tree}) -p $mergeBase -m _)) == "-"* ]] &&
git branch -D $branch;
@jjgonecrypto
jjgonecrypto / README.md
Last active April 18, 2020 21:36
Buidler v Truffle on Synthetix