Skip to content

Instantly share code, notes, and snippets.

View alanshaw's full-sized avatar
🌶️
https://storacha.network

ash alanshaw

🌶️
https://storacha.network
View GitHub Profile
@alanshaw
alanshaw / cli.sh
Last active July 11, 2025 09:58
env vars for Storacha CLI
# prod
export STORACHA_SERVICE_DID=did:web:up.storacha.network
export STORACHA_SERVICE_URL=https://up.storacha.network
export STORACHA_STORE_NAME=storacha-cli-prod
export STORACHA_RECEIPTS_URL=https://up.storacha.network/receipt/
# staging
export STORACHA_SERVICE_DID=did:web:staging.up.storacha.network
export STORACHA_SERVICE_URL=https://staging.up.storacha.network
export STORACHA_STORE_NAME=storacha-cli-staging
@alanshaw
alanshaw / maxpiecesize.go
Created July 11, 2025 09:55
Maximum PDP piece size for Piri
package main
import (
"fmt"
"github.com/filecoin-project/go-state-types/abi"
"github.com/storacha/piri/pkg/pdp/proof"
)
func main() {
@alanshaw
alanshaw / print-charm-colours.js
Created July 4, 2025 08:46
Print the charm colours 0-255
import createCharm from 'charm'
const charm = createCharm()
charm.pipe(process.stdout)
charm.reset()
for (var i = 0; i < 256; i++) {
charm.background(i).write(i+'\n')
}
package main
import (
"fmt"
"strconv"
"time"
"github.com/multiformats/go-multibase"
"github.com/multiformats/go-multicodec"
"github.com/multiformats/go-multihash"
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
fmt.Println(ResolveDIDKey())
@alanshaw
alanshaw / pem-to-did.go
Last active June 2, 2025 10:09
PEM to DID, libp2p peer ID and base64pad private key.
package main
import (
crypto_ed25519 "crypto/ed25519"
"crypto/x509"
"encoding/pem"
"fmt"
"os"
"github.com/libp2p/go-libp2p/core/crypto"
@alanshaw
alanshaw / mkdelegate.js
Last active June 2, 2025 09:24
Delegations for the Storacha Network
// node mkdelegate.js <private-key>
import { delegate } from '@ucanto/core'
import * as ed25519 from '@ucanto/principal/ed25519'
import * as Link from 'multiformats/link'
import { identity } from 'multiformats/hashes/identity'
import { base64 } from 'multiformats/bases/base64'
import * as DID from '@ipld/dag-ucan/did'
const indexingServiceDID = 'did:web:staging.indexer.storacha.network'
const uploadServiceDID = 'did:web:staging.up.storacha.network'
@alanshaw
alanshaw / test.sh
Last active May 29, 2025 10:56
Is IPNI working yet?
echo 'alantest 2025-05-29' > test.txt
storacha up test.txt --verbose
# Should get:
# bafybeidamzcqbpfirdtrbjjhhybp5nfyl5vnjudbsoszg3jnbrwrjupetm
# Does IPNI have the info?
curl https://staging.ipni.storacha.network/cid/bafybeidamzcqbpfirdtrbjjhhybp5nfyl5vnjudbsoszg3jnbrwrjupetm
# Currently:
@alanshaw
alanshaw / slow.sh
Created May 12, 2025 15:37
Slow w3up
$ echo 'alantest 2025-05-12-1' | w3 up
created shard: 4.414ms
hashing shard: 0.013ms
invoking blob/add: 1.522s
invoking http/put: 181.018ms
invoking ucan/conclude http/put: 935.68ms
polling for receipt: 1.081s
hashing piece: 54.925ms
invoking filecoin/offer: 460.332ms
invoking blob/add: 1.216s
@alanshaw
alanshaw / decode-telegram-stripped-thumb.js
Last active April 10, 2025 15:36
Decode Telegram stripped thumb
// Ported from https://github.com/telegramdesktop/tdesktop/blob/1757dd856b84d23f83d4e562c94dde825f6eb40c/Telegram/SourceFiles/ui/image/image.cpp#L43
const decodeStrippedThumb = (bytes: Uint8Array) => {
if (bytes.length < 3 || bytes[0] !== 1) throw new Error('invalid thumb')
const real = new Uint8Array(header.length + (bytes.length - 2) + footer.length)
real.set(header)
real[164] = bytes[1]
real[166] = bytes[2]
real.set(bytes.subarray(3), header.length)
real.set(footer, header.length + (bytes.length - 2))
return real