Skip to content

Instantly share code, notes, and snippets.

rofl app -> app
rofl dashboard -> rofl app
rofl instance -> replica
rofl market instance -> machine
oasisprotocol.org -> oasis.net
oasis protocol -> oasis foundation -> oasis network -> oasis
rose hub -> rose app
@lukaw3d
lukaw3d / gist:94a323db819bfc71eb064353a448d216
Created April 30, 2025 01:00
Sapphire on Trust wallet
install Trust wallet app
click "Discover"
search for https://oasis.net/rose-wallet
click "Add Sapphire to MetaMask"
see newly added "ROSE" row in Home tab
select "ROSE"
click "Receive" to see your Sapphire address
click "Send" to transfer
test emerge genius squeeze fantasy bleak slush exhibit wall coast share thank twin help then paper miss black olive habit lamp test
@lukaw3d
lukaw3d / sapphire 2024.md
Last active January 30, 2026 09:29
end of 2024 notes on how to start using Sapphire on Oasis

end of 2024 notes on how to start using Sapphire on Oasis

Sapphire ParaTime is like a rollup on top of Oasis Consensus chain. Consensus handles governance. Sapphire handles solidity contracts with private variables/storage.

Setup an EVM wallet

Install MetaMask. Then click "Add to MetaMask" under "sapphire.oasis.io" https://docs.oasis.io/dapp/sapphire/network#rpc-endpoints

@lukaw3d
lukaw3d / bookmarklet-vueFindTags.js
Created October 10, 2022 02:22
bookmarklet: add global helper function for finding Vue components
javascript:
/* usage $vm0 = vueFindTag('CardDialog'); */
function vueFindTags(tag = 'ComponentA') {
const flatten = e => [e, ...e.$children.flatMap(child => flatten(child))];
const root = document.querySelector('#app')?.__vue__ || [...document.querySelectorAll('*')].find(e => e.__vue__);
return flatten(root).filter(e => e.$options.name === tag || e.$options._componentTag === tag);
}
function vueFindTag(tag) { return vueFindTags(tag)[0]; }
;
javascript:
/* use on https://github.com/oasisprotocol/oasis-wallet-web/blob/master/src/app/pages/AccountPage/__tests__/__snapshots__/index.test.tsx.snap */
if (!document.querySelector('#raw-url').href.endsWith('.snap')) throw 'not .snap file';
function parseSnapToHtml(snapFile) {
return snapFile.split('`;').slice(0, -1)
.map((pair) => pair.trim().split(' = `'))
/* Fix CommissionBounds */
.map(([snapshotName, snapshotRaw]) => [snapshotName, snapshotRaw.replace('<body>', '').replace('</body>', '')])
.map(([snapshotName, snapshotRaw]) => {
@lukaw3d
lukaw3d / bookmarklet-random-wallet.js
Last active October 22, 2022 00:47
bookmarklet: generate random wallet. Use on e.g. https://wallet.oasisprotocol.org
javascript:
/* use on https://wallet.oasisprotocol.org */
reactContainerField = Object.keys(document.querySelector('#root')).find(field => field.startsWith('__reactContainer'));
store = document.querySelector('#root')[reactContainerField].memoizedState.element.props.store;
function requireUnscrambled(moduleName) {
const parcelRequire = Object.entries(window).find(a => a[0].startsWith('parcelRequire'))[1];
const scrambledName = Object.values(parcelRequire.modules)
.flatMap(a => Object.entries(a[1]))
.find(a => a[0] === moduleName)[1];
return parcelRequire(scrambledName);
@lukaw3d
lukaw3d / bip39-typos.txt
Created May 31, 2022 15:22
bip39 English dictionary with single-letter typos
abandon:
ability:
able: cable, table
about:
above:
absent:
absorb:
abstract:
absurd:
abuse: