{"id":19901872,"url":"https://github.com/hyperledger/firefly-signer","last_synced_at":"2025-05-02T23:31:59.837Z","repository":{"id":37086868,"uuid":"486624303","full_name":"hyperledger/firefly-signer","owner":"hyperledger","description":"Signing, Keystore, ABI and RLP encoding utilities for EVM / Ethereum / secp256k1 based blockchains. Written in Go with an enterprise friendly Apache 2.0 license, and a runtime JSON/RPC proxy server. Part of the Hyperledger FireFly project","archived":false,"fork":false,"pushed_at":"2025-04-25T17:43:31.000Z","size":542,"stargazers_count":10,"open_issues_count":3,"forks_count":14,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-05-01T09:05:25.874Z","etag":null,"topics":[],"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/hyperledger.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-28T14:18:03.000Z","updated_at":"2025-04-25T17:40:13.000Z","dependencies_parsed_at":"2023-10-03T21:34:00.578Z","dependency_job_id":"1e36242f-e0d8-4ad8-a813-e41802d6bf12","html_url":"https://github.com/hyperledger/firefly-signer","commit_stats":null,"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperledger%2Ffirefly-signer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperledger%2Ffirefly-signer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperledger%2Ffirefly-signer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperledger%2Ffirefly-signer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyperledger","download_url":"https://codeload.github.com/hyperledger/firefly-signer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252122287,"owners_count":21698305,"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","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":[],"created_at":"2024-11-12T20:16:28.005Z","updated_at":"2025-05-02T23:31:58.980Z","avatar_url":"https://github.com/hyperledger.png","language":"Go","readme":"[![codecov](https://codecov.io/gh/hyperledger/firefly-signer/branch/main/graph/badge.svg?token=OEI8A08P0R)](https://codecov.io/gh/hyperledger/firefly-signer)\n[![Go Reference](https://pkg.go.dev/badge/github.com/hyperledger/firefly-signer.svg)](https://pkg.go.dev/github.com/hyperledger/firefly-signer)\n\n# Hyperledger FireFly Signer\n\nA set of Ethereum transaction signing utilities designed for use across projects:\n\n## Go API libraries\n\n- RLP Encoding and Decoding\n  - See `pkg/rlp` [go doc](https://pkg.go.dev/github.com/hyperledger/firefly-signer/pkg/rlp)\n- ABI Encoding and Decoding\n  - Validation of ABI definitions\n  - JSON \u003c-\u003e Value Tree \u003c-\u003e ABI Bytes\n  - Model API exposed, as well as encode/decode APIs\n  - See `pkg/abi` [go doc](https://pkg.go.dev/github.com/hyperledger/firefly-signer/pkg/abi)\n- Secp256k1 transaction signing for Ethereum transactions\n  - Original\n  - EIP-155\n  - EIP-1559\n  - EIP-712 (see below)\n  - See `pkg/ethsigner` [go doc](https://pkg.go.dev/github.com/hyperledger/firefly-signer/pkg/ethsigner)\n- EIP-712 Typed Data implementation\n  - See `pkg/eip712` [go doc](https://pkg.go.dev/github.com/hyperledger/firefly-signer/pkg/eip712)\n- Keystore V3 key file implementation\n  - Scrypt - read/write\n  - pbkdf2 - read\n  - See `pkg/keystorev3` [go doc](https://pkg.go.dev/github.com/hyperledger/firefly-signer/pkg/keystorev3)\n- Filesystem wallet\n  - Configurable caching for in-memory keys\n  - Files in directory with a given extension matching `{{ADDRESS}}.key`/`{{ADDRESS}}.toml` or arbitrary regex\n  - Files can be TOML/YAML/JSON metadata pointing to Keystore V3 files + password files\n  - Files can be Keystore V3 files directly, with accompanying `{{ADDRESS}}.pass` files\n  - Detects newly added files automatically\n  - See `pkg/fswallet` [go doc](https://pkg.go.dev/github.com/hyperledger/firefly-signer/pkg/fswallet)\n- JSON/RPC client\n  - HTTP\n  - WebSockets - with `eth_subscribe` support\n  - See `pkg/rpcbackend` [go doc](https://pkg.go.dev/github.com/hyperledger/firefly-signer/pkg/rpcbackend)\n\n## JSON/RPC proxy server\n\nA runtime JSON/RPC server/proxy to intercept `eth_sendTransaction` JSON/RPC calls, and pass other\ncalls through unchanged.\n\n- Lightweight fast-starting runtime\n- HTTP/HTTPS server\n  - All HTTPS/CORS etc. features from FireFly Microservice framework\n  - Configured via YAML\n  - Batch JSON/RPC support\n- `eth_sendTransaction` implementation to sign transactions\n  - If EIP-1559 gas price fields are specified uses `0x02` transactions, otherwise EIP-155\n- Makes some JSON/RPC calls on application's behalf\n  - Queries Chain ID via `net_version` on startup\n  - `eth_accounts` JSON/RPC method support\n  - Trivial nonce management built-in (calls `eth_getTransactionCount` for each request)\n\n## JSON/RPC proxy server configuration\n\nFor a full list of configuration options see [config.md](./config.md)\n\n## Example configuration\n\nTwo examples provided below:\n\n### Flat directory of keys\n\n```yaml\nfileWallet:\n    path: /data/keystore\n    filenames:\n        with0xPrefix: false\n        primaryExt: '.key.json'\n        passwordExt: '.password'\nserver:\n    address: '127.0.0.1'\n    port: 8545\nbackend:\n    url: https://blockhain.rpc.endpoint/path\n```\n\n### Directory containing TOML configurations\n\n```yaml\nfileWallet:\n    path: /data/keystore\n    filenames:\n        with0xPrefix: false\n        primaryExt: '.toml'\n  metadata:\n        format: toml\n        keyFileProperty: '{{ index .signing \"key-file\" }}'\n        passwordFileProperty: '{{ index .signing \"password-file\" }}'\nserver:\n    address: '127.0.0.1'\n    port: 8545\nbackend:\n    url: https://blockhain.rpc.endpoint/path\n```\n\nExample TOML:\n\n```toml\n[metadata]\ndescription = \"File based configuration\"\n\n[signing]\ntype = \"file-based-signer\"\nkey-file = \"/data/keystore/1f185718734552d08278aa70f804580bab5fd2b4.key.json\"\npassword-file = \"/data/keystore/1f185718734552d08278aa70f804580bab5fd2b4.pwd\"\n\n```\n\n# License\n\nApache 2.0\n\n# References / credits\n\n### JSON/RPC proxy\n\nThe JSON/RPC proxy and RLP encoding code was contributed by Kaleido, Inc.\n\n### Cryptography\n\nsecp256k1 cryptography libraries are provided by btcsuite (ISC Licensed):\n\nhttps://pkg.go.dev/github.com/btcsuite/btcd/btcec\n\n### RLP encoding and keystore\n\nReference during implementation was made to the web3j implementation of Ethereum\nRLP encoding, and Keystore V3 wallet files (Apache 2.0 licensed):\n\nhttps://github.com/web3j/web3j\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperledger%2Ffirefly-signer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperledger%2Ffirefly-signer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperledger%2Ffirefly-signer/lists"}