{"id":18747537,"url":"https://github.com/studyzy/runestone","last_synced_at":"2025-10-28T21:36:32.125Z","repository":{"id":236039278,"uuid":"790676320","full_name":"studyzy/runestone","owner":"studyzy","description":"Bitcoin Ordinals Rune protocol golang implement","archived":false,"fork":false,"pushed_at":"2024-12-20T10:57:04.000Z","size":182,"stargazers_count":34,"open_issues_count":0,"forks_count":17,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-12T22:33:54.957Z","etag":null,"topics":["bitcoin","golang-library","ordinals","runes","runestone"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/studyzy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-04-23T10:18:25.000Z","updated_at":"2025-01-26T08:16:11.000Z","dependencies_parsed_at":"2024-06-19T06:31:26.128Z","dependency_job_id":"1e510cc5-7163-4dd9-8e21-4d83f8146081","html_url":"https://github.com/studyzy/runestone","commit_stats":null,"previous_names":["bxelab/runestone","studyzy/runestone"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/studyzy/runestone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studyzy%2Frunestone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studyzy%2Frunestone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studyzy%2Frunestone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studyzy%2Frunestone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/studyzy","download_url":"https://codeload.github.com/studyzy/runestone/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/studyzy%2Frunestone/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266465627,"owners_count":23933163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","golang-library","ordinals","runes","runestone"],"created_at":"2024-11-07T16:30:15.819Z","updated_at":"2025-10-28T21:36:32.028Z","avatar_url":"https://github.com/studyzy.png","language":"Go","readme":"# Runestone Golang library\n\nBitcoin Rune protocol golang implement library.\n\n## How to use\n\n```go\ngo get github.com/studyzy/runestone@latest\n```\n\n### Etching\n\nDefine a new Rune named *STUDYZY.GMAIL.COM* \n\n```go\nfunc testEtching() {\n\truneName := \"STUDYZY.GMAIL.COM\"\n\tsymbol := '曾'\n\tmyRune, err := runestone.SpacedRuneFromString(runeName)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\tamt := uint128.From64(666666)\n\tca := uint128.From64(21000000)\n\tetching := \u0026runestone.Etching{\n\t\tRune:    \u0026myRune.Rune,\n\t\tSpacers: \u0026myRune.Spacers,\n\t\tSymbol:  \u0026symbol,\n\t\tTerms: \u0026runestone.Terms{\n\t\t\tAmount: \u0026amt,\n\t\t\tCap:    \u0026ca,\n\t\t},\n\t}\n\tr := runestone.Runestone{Etching: etching}\n\tdata, err := r.Encipher()\n\tif err != nil {\n\t\tfmt.Println(err)\n\t}\n\tfmt.Printf(\"Etching data: 0x%x\\n\", data)\n\tdataString, _ := txscript.DisasmString(data)\n\tfmt.Printf(\"Etching Script: %s\\n\", dataString)\n}\n```\n\n### Mint\n\n```go\nfunc testMint() {\n\truneIdStr := \"2609649:946\"\n\truneId, _ := runestone.RuneIdFromString(runeIdStr)\n\tr := runestone.Runestone{Mint: runeId}\n\tdata, err := r.Encipher()\n\tif err != nil {\n\t\tfmt.Println(err)\n\t}\n\tfmt.Printf(\"Mint Rune[%s] data: 0x%x\\n\", runeIdStr, data)\n\tdataString, _ := txscript.DisasmString(data)\n\tfmt.Printf(\"Mint Script: %s\\n\", dataString)\n}\n```\n\n### Decode\n\n```go\nfunc testDecode() {\n\tdata, _ := hex.DecodeString(\"140114001600\") //Mint UNCOMMON•GOODS\n\tvar tx wire.MsgTx\n\tbuilder := txscript.NewScriptBuilder()\n\t// Push opcode OP_RETURN\n\tbuilder.AddOp(txscript.OP_RETURN)\n\t// Push MAGIC_NUMBER\n\tbuilder.AddOp(runestone.MAGIC_NUMBER)\n\t// Push payload\n\tbuilder.AddData(data)\n\tpkScript, _ := builder.Script()\n\ttxOut := wire.NewTxOut(0, pkScript)\n\ttx.AddTxOut(txOut)\n\tr := \u0026runestone.Runestone{}\n\tartifact, err := r.Decipher(\u0026tx)\n\tif err != nil {\n\t\tfmt.Println(err)\n\t\treturn\n\t}\n\ta, _ := json.Marshal(artifact)\n\tfmt.Printf(\"Artifact: %s\\n\", string(a))\n}\n```\n\n### Reference:\n\n* https://docs.ordinals.com/runes/specification.html\n* https://github.com/ordinals/ord/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudyzy%2Frunestone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstudyzy%2Frunestone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstudyzy%2Frunestone/lists"}