
Bountysource加密货币悬赏指南ETH打赏Issue与链上打款流程源码解析【免费下载链接】coreBountysource is the funding platform for open-source software.项目地址: https://gitcode.com/gh_mirrors/core112/coreBountysource 是一个开源软件资金平台开源悬赏平台。本文将带你用通俗的方式看懂它最硬核的功能之一用 ETH 给开源 Issue 发悬赏以及背后链上打款的完整流程源码逻辑。即使你是新手也能在 10 分钟内搞清楚钱是怎么从链上转到开发者口袋里的。Bountysource 的加密货币悬赏是什么 传统悬赏平台靠银行卡、PayPal 转账而 Bountysource 还支持直接往某个开源项目的 Issue 上打 ETH——项目方看中一个待解决的 Issue用加密货币发一笔悬赏金额直接锁定在链上地址中开发者解决 Issue 并提交方案后平台通过链上打款把 ETH 转给开发者全程有区块高度、交易哈希transaction hash、Gas 价格等链上数据作证透明可查。浏览器插件端可以看到悬赏入口如果你不想暴露身份平台还支持匿名悬赏anonymous 字段展示统一的匿名头像核心概念每个 Issue 都有一个专属链上地址 整个设计的巧思在于不是把钱存到平台的大钱包而是为每个 Issue 生成一个独立的以太坊地址。对应模型文件app/models/issue_address.rb表issue_addresses关键字段一目了然字段含义public_addressIssue 专属的以太坊公钥地址唯一索引钱就打到这里private_key对应私钥平台托管用于后续打款签名balance链上余额JSONB按币种记录余额更新后回写balance_updated_at余额最近一次同步时间这个地址不是凭空来的而是通过服务端调用链下接口生成见app/services/crypto_api.rb中的CryptoApi.generate_address(issue_id)它向后端区块链服务 POSTissues/{issue_id}/issue_address请求为该 Issue 铸造新地址。发一笔 ETH 悬赏的三个阶段 第一步铸造地址。用户在页面上选择 Issue 并选择以 ETH 悬赏平台先调用上面的generate_address拿到一个全新的链上地址。第二步链上转账。用户从自己的钱包如 MetaMask向该地址打款。这一步完全发生在以太坊链上平台不经手资金。第三步链上确认生成悬赏记录。平台定时/按区块刷新余额确认链上到账后写入CryptoBounty记录。对应模型app/models/crypto_bounty.rbissue_id悬赏挂在哪个 Issue 上amount金额JSONB区分币种transaction_hash唯一索引每笔链上交易只生成一条悬赏天然防重复入账status默认active、is_refund悬赏状态与是否退款标记owner多态关联悬赏发起人是个人还是团队。币种本身由app/models/currency/ethereum.rb定义ETH并校验金额非负。开发者收款链上打款状态机解析 这是全文最核心的部分。当开发者提交方案被接受后平台要从 Issue 地址把 ETH 转给开发者记录在app/models/crypto_pay_out.rb表crypto_pay_outs它有一个清晰的状态机Pending-Approval→Seeded→In-Progress→Completed状态含义通俗版Pending-Approval待批准打款单已创建等待管理员/系统审核Seeded已播种链上交易已提交等待出块In-Progress进行中交易被矿工打包等待确认数Completed已完成打款到账流程结束crypto_pay_outs表里几个硬核字段值得记住receiver_address开发者收款地址fee/fee_percent平台服务费JSONB 按币种计sent_at打款发出时间有独立索引方便按时间排查transaction_hash唯一索引链上哈希就是打款的收据杜绝重复打款is_refundreason支持退款场景如悬赏取消退回给发起人。真正上链的那一步由app/models/crypto_pay_out_txn.rb表crypto_pay_out_txns记录字段完全是以太坊术语字段含义txn_hash本次打款的链上交易哈希confirmed_block交易被确认的区块高度gas_price_gwei/gas_usedGas 单价与消耗算出实际手续费mined_at出块时间对应的链下动作在app/services/crypto_api.rb里只有几行关键调用send_crypto_pay_out(issue_id)通知区块链服务执行打款调用issues/{id}/bounties/pay-outrefund_transaction(issue_id, transaction_hash)按原始哈希执行链上退款refresh_bounties(issue_id)刷新 Issue 的链上悬赏余额verify_wallet(wallet, signed_txn)钱包地址签名校验。打款完成后系统还会通过邮件模板如app/views/mailer/crypto_pay_out_approved.html.erb通知相关人形成链上交易 站内邮件双轨凭证。用户钱包MetaMask 签名验证如何防冒领 开发者要收款必须先绑定自己的以太坊地址。模型app/models/wallet.rb表wallets很简单eth_addr以太坊地址唯一校验一个地址只能属于一个用户verified是否已通过验证primary是否主钱包before_save自动把第一个钱包设为主钱包。验证方式是典型的挑战-签名路由config/routes.rb中定义了POST /wallets/metamask用户在 MetaMask 里对一段消息签名后提交平台调用CryptoApi.verify_wallet把签名发给区块链服务比对通过后才把verified置为 true。这样即使地址被盗看别人也无法冒充你发起收款。关键源码路径速查表 模块路径作用悬赏记录app/models/crypto_bounty.rb记录每笔 ETH 悬赏Issue 地址app/models/issue_address.rb每 Issue 独立链上地址与余额打款单app/models/crypto_pay_out.rb打款状态机与手续费链上交易app/models/crypto_pay_out_txn.rb区块高度、Gas、交易哈希链下服务调用app/services/crypto_api.rb铸造地址/打款/退款/校验用户钱包app/models/wallet.rbETH 地址绑定与验证ETH 币种app/models/currency/ethereum.rb币种定义与金额校验建表迁移db/migrate/20180501124232_create_crypto_bounties.rb 等各表结构与唯一索引写在最后一句话总结这套设计 ✅Bountysource 的加密货币悬赏可以浓缩为一句话一 Issue 一地址哈希即凭证——每个 Issue 拥有独立链上地址来锁住悬赏打款用状态机推进transaction_hash唯一索引贯穿入账与出账天然防止重复记账与重复打款。看懂issue_address → crypto_bounties → crypto_pay_outs → crypto_pay_out_txns这条数据链路你就掌握了链上打款类系统的核心骨架。【免费下载链接】coreBountysource is the funding platform for open-source software.项目地址: https://gitcode.com/gh_mirrors/core112/core创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考