[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74012":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":14,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":15,"rankGlobal":8,"rankLanguage":8,"license":16,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":8,"pushedAt":8,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":14,"starSnapshotCount":14,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},74012,"cpp-sdk","QuipNetwork\u002Fcpp-sdk","QuipNetwork",null,"C++",11317,44,7,3,0,61.96,"GNU Affero General Public License v3.0",false,"main",true,[],"2026-06-12 04:01:12","# Quip C++ SDK\n\nA C++ SDK for interacting with Quip smart contracts on Ethereum networks.\n\n## Features\n\n- **QuipFactory Integration**: Deploy and manage Quip wallets\n- **QuipWallet Operations**: Transfer funds, execute contracts, and manage ownership\n- **Winternitz Signature Support**: Post-quantum secure signatures\n- **Multi-Network Support**: Works with local Hardhat and custom networks\n- **CLI Interface**: Command-line tool for testing and automation\n\n## Building\n\n1. Clone the repository:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FQuipNetwork\u002Fquip-cpp-sdk.git\ncd quip-cpp-sdk\n```\n\n1.  Run the build script:\n\n```bash\n.\u002Fbuild.sh\n```\n\nThis will build both the CLI tool and run the test suite.\n\n## Usage\n\n### CLI Tool\n\nThe CLI tool supports both local development and custom network configurations.\n\n#### Getting Help\n\n```bash\n# Show comprehensive help and usage information\n.\u002Fbuild\u002Fquip-cli --help\n```\n\n#### Local Development (Default)\n\nFor local development with Hardhat:\n\n.\u002Fbuild.sh\n\n## Running the CLI\n\nBasic usage:\n\n```bash\n.\u002Fbuild\u002Fquip-cli \u003Ccommand> [args]\n```\n\nCommands:\n\n- `deposit [entropy]` - Deploy a new Quip wallet using Winternitz signatures\n- `transfer \u003Cpq_pubkey> \u003Cpq_sig> \u003Cto_address> \u003Camount> \u003Cprivate_key>`\n- `execute \u003Cpq_pubkey> \u003Cpq_sig> \u003Ctarget_address> \u003Copdata> \u003Cprivate_key>`\n- `change-owner \u003Cpq_pubkey> \u003Cpq_sig> \u003Cprivate_key>`\n- `balance \u003Caddress>`\n- `pq-owner \u003Caddress>`\n\nTo generate post-quantum keypairs and signatures, please use the [`hashsigs-cpp`](https:\u002F\u002Fgithub.com\u002FQuipNetwork\u002Fhashsigs-cpp) library.\n\n## End-to-End (E2E) Testing\n\nTo run E2E tests against a real blockchain (local devnet, testnet, or mainnet), follow these steps:\n\n1. **Deploy Contracts on a Local Devnet or Testnet**\n\n   Use the existing [`ethereum-sdk`](https:\u002F\u002Fgithub.com\u002FQuipNetwork\u002Fethereum-sdk) project to deploy the QuipFactory and QuipWallet contracts on localhost or use a sepolia contract on eg [mainnet](https:\u002F\u002Fsepolia.etherscan.io\u002Faddress\u002F0x4a5a444f3b12342dc50e34f562dffbf0152cbb99#code) or [base](https:\u002F\u002Fsepolia.basescan.org\u002Faddress\u002F0x4a5a444f3b12342dc50e34f562dffbf0152cbb99#code). For example, from the ethereum-sdk directory:\n\n   ```bash\n   cd ..\u002Fethereum-sdk\n   npx hardhat node & INITIAL_OWNER=$PUBLIC_ADDRESS_YOU_CONTROL npx hardhat run scripts\u002Fdeploy.ts --network hardhat\n   ```\n\n   This will deploy the contracts and output their addresses, but your local addresses will not match the default addresses and the transaction will unwind.\n\n   Get your local Deployer, WOTSPlus, and QuipFactory addresses and write the deployer address to your ethereum-sdk .env file, then write all three contract addresses to `ethereum-sdk\u002Fsrc\u002Faddresses.json` and run the command again.\n\n   You can check that your contracts are deployed by running `npx hardhat console` and using the following command with `\"Deployer\" | \"WOTSPlus\" | \"QuipFactory\"` as the `contractName` and the associated contract address as `contractAddress`\n\n   ```typescript\n   await ethers.getContractAt(`${contractName}`, `${contractAddress}`);\n   ```\n\n2. **Run the E2E Test Script**\n\n   Use the provided bash script to run the CLI against the deployed contracts:\n\n```bash\n# Show E2E test script help\n.\u002Fe2e_test.sh --help\n\n# Run all tests against local Hardhat network\n.\u002Fe2e_test.sh\n\n# Run specific CLI commands\n.\u002Fbuild\u002Fquip-cli --rpc-url \"https:\u002F\u002Fbase-sepolia.g.alchemy.com\u002Fv2\u002Fyour_api_key_here\" --contract-address \"0x4a5A444F3B12342Dc50E34f562DfFBf0152cBb99\" deposit \u003Cpubkey> \u003Csig> \u003Cprivate_key>\n```\n\n#### Custom Networks\n\nWhen using a custom RPC_URL or CHAIN_ID, you **must** provide a QuipFactory contract address:\n\n```bash\n# Test against Sepolia testnet\n.\u002Fe2e_test.sh \\\n  --rpc-url \"https:\u002F\u002Feth-sepolia.g.alchemy.com\u002Fv2\u002Fyour_api_key_here\" \\\n  --chain-id 11155111 \\\n  --quip-factory-address \"0x4a5A444F3B12342Dc50E34f562DfFBf0152cBb99\"\n\n# Test against Base mainnet\n.\u002Fe2e_test.sh \\\n  --rpc-url \"https:\u002F\u002Fmainnet.base.org\" \\\n  --chain-id 8453 \\\n  --quip-factory-address \"0x4a5A444F3B12342Dc50E34f562DfFBf0152cBb99\"\n```\n\n#### CLI Commands\n\n```bash\n# Deploy a new Quip wallet\n.\u002Fbuild\u002Fquip-cli --rpc-url \u003Curl> --contract-address \u003Cfactory_address> deposit \u003Cpubkey> \u003Csig> \u003Cprivate_key>\n\n# Transfer funds\n.\u002Fbuild\u002Fquip-cli --rpc-url \u003Curl> --contract-address \u003Cfactory_address> transfer \u003Cpubkey> \u003Csig> \u003Cto_address> \u003Camount> \u003Cprivate_key>\n\n# Execute contract call\n.\u002Fbuild\u002Fquip-cli --rpc-url \u003Curl> --contract-address \u003Cfactory_address> execute \u003Cpubkey> \u003Csig> \u003Ctarget_address> \u003Copdata> \u003Cprivate_key>\n\n# Change PQ owner\n.\u002Fbuild\u002Fquip-cli --rpc-url \u003Curl> --contract-address \u003Cfactory_address> change-owner \u003Cpubkey> \u003Csig> \u003Cprivate_key>\n\n# Check wallet balance\n.\u002Fbuild\u002Fquip-cli --rpc-url \u003Curl> --contract-address \u003Cfactory_address> balance \u003Caddress>\n\n# Check PQ owner\n.\u002Fbuild\u002Fquip-cli --rpc-url \u003Curl> --contract-address \u003Cfactory_address> pq-owner \u003Caddress>\n```\n\n## Configuration\n\n### Environment Variables\n\nCreate a `.env` based on the `.env.example` file in the [`ethereum-sdk`](https:\u002F\u002Fgithub.com\u002FQuipNetwork\u002Fethereum-sdk) directory.\n\n### Contract Addresses\n\nFor local development, contract addresses are automatically loaded from `ethereum-sdk\u002Fsrc\u002Faddresses.json`.\n\nFor custom networks, you must provide the QuipFactory contract address using the `--quip-factory-address` parameter.\n\n## Testing\n\n### Unit Tests\n\n```bash\ncd build && .\u002Fquip-cli-tests\n```\n\n### End-to-End Tests\n\n```bash\n# Show E2E test help\n.\u002Fe2e_test.sh --help\n\n# Local development\n.\u002Fe2e_test.sh\n\n# Custom network\n.\u002Fe2e_test.sh --rpc-url \u003Curl> --chain-id \u003Cid> --quip-factory-address \u003Caddress>\n```\n\n## Network Requirements\n\n### Local Development\n\n- **RPC URL**: `http:\u002F\u002Flocalhost:8545` (default)\n- **Chain ID**: `31337` (default)\n- **Contract Addresses**: Automatically loaded from ethereum-sdk\n\n### Custom Networks\n\n- **RPC URL**: Any valid Ethereum RPC endpoint\n- **Chain ID**: Any valid chain ID\n- **QuipFactory Address**: **Required** - Must be a valid Ethereum address (0x followed by 40 hex characters)\n\n## Error Handling\n\nThe CLI validates:\n\n- QuipFactory address format (must be valid Ethereum address)\n- Required parameters for custom networks\n- Command syntax and argument counts\n- Network connectivity\n\n## Examples\n\n### Complete Workflow\n\n```bash\n# 1. Deploy a new wallet\n.\u002Fbuild\u002Fquip-cli --rpc-url \"https:\u002F\u002Fbase-sepolia.g.alchemy.com\u002Fv2\u002Fyour_api_key_here\" --contract-address \"0x4a5A444F3B12342Dc50E34f562DfFBf0152cBb99\" deposit \u003Cpubkey> \u003Csig> \u003Cprivate_key>\n\n# 2. Transfer funds\n.\u002Fbuild\u002Fquip-cli --rpc-url \"https:\u002F\u002Fbase-sepolia.g.alchemy.com\u002Fv2\u002Fyour_api_key_here\" --contract-address \"0x4a5A444F3B12342Dc50E34f562DfFBf0152cBb99\" transfer \u003Cpubkey> \u003Csig> \"0x1234...\" \"1000000000000000000\" \u003Cprivate_key>\n\n# 3. Execute contract call\n.\u002Fbuild\u002Fquip-cli --rpc-url \"https:\u002F\u002Fbase-sepolia.g.alchemy.com\u002Fv2\u002Fyour_api_key_here\" --contract-address \"0x4a5A444F3B12342Dc50E34f562DfFBf0152cBb99\" execute \u003Cpubkey> \u003Csig> \"0x5678...\" \"0x12345678\" \u003Cprivate_key>\n\n# 4. Change owner\n.\u002Fbuild\u002Fquip-cli --rpc-url \"https:\u002F\u002Fbase-sepolia.g.alchemy.com\u002Fv2\u002Fyour_api_key_here\" --contract-address \"0x4a5A444F3B12342Dc50E34f562DfFBf0152cBb99\" change-owner \u003Cpubkey> \u003Csig> \u003Cprivate_key>\n```\n\n## Dependencies\n\n- CMake 3.10+\n- C++17 compiler\n- libcurl\n- nlohmann\u002Fjson\n- Google Test (for testing)\n- OpenSSL 3.0+\n\n## License\n\nAGPL-3.0, see COPYING\n","Quip C++ SDK 是一个用于与以太坊网络上的 Quip 智能合约进行交互的C++开发工具包。它支持Quip钱包的部署和管理、资金转移、合约执行以及所有权变更等核心功能，并且集成了Winternitz签名技术，提供后量子安全的签名机制。此外，该SDK还支持多网络环境，包括本地Hardhat和自定义网络，并配备了一个命令行界面工具，方便用户进行测试和自动化操作。适用于需要在以太坊上高效管理和操作智能合约的企业和个人开发者，特别是在关注安全性及未来兼容性的场景下尤为适用。",2,"2026-06-11 03:48:24","high_star"]