什么是ERC4626 ERC4626是一种以太坊上的标准化代币,这种类型的合约首先是基于ERC20的,但是在普通ERC20代币的基础上增加了份额的概念。 每一个ERC4626的参与者根据自身支付的潜在资产的数量获得相应比例的份额,假设存在三个参与者: alice -> 1e18 bob -> 2e18 eve -> 3e18 分别支付了1~3e18的ETH ,那么他们获得的份额应该也是按照这个比例,这使得用户在将份额转化为潜在资产的时候也是按照比例兑付的。 这种潜在资产转化为份额和份额转化为潜在资产的计算公式可以简单的总结为: shares = shares * (totalAssets() + 1) / totalSupply assets = assets * totalSupply / (totalAssets() + 1) 其中share表示份额,totalAssets代表当前合约中存在的潜在资产的总额,totalSupply代表总的shares数量也就是当前合约的mint数量的总和。 常用函数 deposit function deposit(uint256 assets, address receiver) public virtual returns (uint256) { uint256 maxAssets = maxDeposit(receiver); if (assets > maxAssets) { revert ERC4626ExceededMaxDeposit(receiver, assets, maxAssets); } uint256 shares = previewDeposit(assets); _deposit(_msgSender(), receiver, assets, shares); return shares; } 根据用户支付的潜在资产的数量,计算接收者最终获得的份额数量。 mint function mint(uint256 shares, address receiver) public virtual returns (uint256) { uint256 maxShares = maxMint(receiver); if (shares > maxShares) { revert ERC4626ExceededMaxMint(receiver, shares, maxShares); } uint256 assets = previewMint(shares); _deposit(_msgSender(), receiver, assets, shares); return assets; } 和deposit不同这里直接输入的是用户想要获得的份额,根据这个份额的值和上诉的计算公式获得用户需要支付的潜在资产的数量。 这里一般需要用户先将潜在资产ERC20像当前合约进行授权。 ...
从vechain的golang实现深入一条交易的生命周期
组建交易的数据 交易一般从我们的钱包(比如MetaMask)开始,比如用户A想发送一笔转账到用户B,在和钱包的交互过程中用户只需要输入用户B的链上地址0xBBB,转账的金额Amount,点击确认为这笔交易签名就可以像节点发送交易信息了。 在这个过程中钱包为用户默认设置了很多参数来减少用户交互的复杂度,从vechain L1我们深入理解下具体的一笔交易的参数: body = { "chainTag": 246, # 主网固定 74 (十进制),testnet 是 39 "blockRef": block_ref, # 8字节 hex "expiration": 720, # 720个块后过期 ≈ 2小时 "clauses": [ { "to": TO_ADDRESS, "value": AMOUNT_WEI, # wei 单位 "data": "0x" # 普通转账填 0x } ], "gasPriceCoef": 128, # 0-255,128 是标准 "gas": 21000, # 普通转账固定 21000 "dependsOn": None, "nonce": int(time.time() * 1000) # 随意,但不能重复(毫秒时间戳就行) } blockRef 在 VeChain 交易里是一个非常重要的字段,作用是防止重放攻击指定这笔交易最早可以被哪个区块打包。 chainTag是根据测试或者主网的固定参数。 clauses 是 VET 或 VTHO 交易的核心概念,它代表这笔交易里包含的一个或多个子操作。 gasPriceCoef 是 VeChain 独有的一个字段,它决定了你这笔交易的 实际 gas 价格 是当前网络基础 gas 价格的多少倍。 VeChain 里这个 gas 字段的作用是设置最大愿意消耗的 gas 数量上限。转账的时候设置21000,需要调用合约进行复杂的操作的时候需要提高上限来保证交易不会因为gas限制而revert。 # 3. 用 thor-devkit 构建并签名交易 tx = transaction.Transaction(body) private_key_bytes = bytes.fromhex(PRIVATE_KEY_HEX) signature = secp256k1.sign(tx.get_signing_hash(), private_key_bytes) tx.set_signature(signature) # 4. 得到 raw(发送用的十六进制字符串) raw = "0x" + tx.encode().hex() print("Raw transaction:") print(raw) print() # 5. 发送交易 send_resp = requests.post( NODE_URL + "/transactions", json={"raw": raw} ) if send_resp.status_code == 200: txid = send_resp.json()["id"] print("交易已广播!") print(f"TxID: {txid}") else: print("发送失败:") print(send_resp.status_code, send_resp.text) 我们使用python对数据打包签名,然后选择一个共用的节点,调用节点上的/transactions路由,发送raw数据就可以发送交易数据进行广播了。 ...
BFT共识层中单个节点的操作流程
概览 BFT的节点根据是否参与投票可以区分为验证节点和非验证节点,其中验证节点需要参与每一个区块的投票。 这里有几个关键的特定词: Epoch : 每个epoch中包含多个round,单个epoch中验证者列表是固定的,这个列表不会随时变动否则会影响投票递进。 Round : 每一轮Round有一个Leader,这个Leader会根据收到的交易打包出新的待投票的区块。 Voting Power : 这个一般根据质押的代币数量来决定当前节点的VP。 共识层的代码会收到别的节点打包好发过来的消息,验证者需要单独的验证消息的内容。一般在单个节点的本地在新的Round 开始的时候会设置一个计时器,这个计时器的作用就是保证每个Round都能按照一定的周期推进。 投票的内容可以区分为3大类 TC : 本次Round的Leader没有在规定的时间范围之内打包好区块并且广播出去 NEC : 本地节点对区块的内容投票不背书 QC : QC的生成需要投票背书VP达到总量的>= 2/3 + 1 TC的详细流程 待添加中… QC的详细流程 通过一段RUST实现的BFT,可以详细梳理下整个QC的流程: pub fn process_vote<VT>( &mut self, author: &NodeId<SCT::NodeIdPubKey>, vote_msg: &VoteMessage<SCT>, validators: &VT, validator_mapping: &ValidatorMapping< SCT::NodeIdPubKey, SignatureCollectionKeyPairType<SCT>, >, ) -> (Option<QuorumCertificate<SCT>>, Vec<VoteStateCommand>) 参数内容: author:这个消息的发送节点 vote_msg: 发送的消息内容,包含投票的Round和Vote内容 validators: 当前Epoch中包含的验证者列表 当本地节点收到投票消息之后: 首先需要验证Round是否已经过期(由于网络延迟等原因造成),过期消息不再被处理 本地节点需要存储当前Round收到的所有消息,包含节点ID(author)和投票内容 然后将本次的内容插入到上诉的消息列表中,然后我们就得到了当前Round的所有投票内容 这时我们就可以开始计算VP,当VP >= 总VP * 2/3 + 1的时候,当前节点就可以为本轮Round生成QC 在生成QC之前本地节点还需要循环每个消息去验证签名信息,如果有非法的签名,就把这个签名的节点信息移出pending的消息列表,当移出之后再次检查VP的数量是否能够满足上诉的条件 一般情况下签名的内容应该都是合法的,否则签名的节点会受到相应的处罚。 当所有签名合法之后开始生成QC,并且更新本地的Round到Round+1 NEC的详细流程 待添加中… ...
Cometbft的ABCI++是什么
ABCI++包含了哪些方法? 共识执行方法 InitChain InitChain方法在链刚启动的时候被调用,存在一个叫genesis的文件,里面包含了一些初始信息,比如validator列表。 PrepareProposal PrepareProposal和别的方法一样都是从Cometbft发起调用,根据推举的算法找出一个提案者,提案者是validator中的一员,cometbft负责从mempool中收集到交易信息,组建了名叫RequestPrepareProposal的信息,发送给提案者。提案者收到request之后会对收到的信息做一些优化。比如进行排序。 ProcessProposal 和上诉的PrepareProposal的执行者有所不同。processproposal对提案者的内容进行校验这个执行者是所有参与的validator。validator对内容进行投票,赞成或者反对。需要注意的时候这个时候的ProcessProposal的逻辑必须是确定性的。什么叫确定性呢?就是需要对于相同的输入,validator的输出应该是一致的。不能够在validator中有所区别,这个可能比较难以理解。 ExtendVote ExtendVote方法可以理解为,每个validator自己的提案信息。比如我们常见的跨链的信息,local validator从一个relayer中拿到跨链的信息,组成一个vote extension的内容。这个信息逻辑上是允许不确定的。可能每个validator会拿到不一致的信息。 VerifyVoteExtension 它允许验证者验证附加在 precommit 消息中的 vote extension 数据。如果验证失败,整个 precommit 消息将被视为无效,并被共识算法忽略。这会对(liveness)产生负面影响 —— 也就是说,如果正确的验证者反复无法验证 vote extension,共识算法可能无法最终确认一个区块,即便有足够数量(超过 2/3)的验证者为该区块发送了 precommit 投票。因此,VerifyVoteExtension 的实现必须格外谨慎。一个通用规则是:如果应用(Application)检测到无效的 vote extension,应该在 ResponseVerifyVoteExtension 中接受它,并在自身逻辑中忽略它。CometBFT 会在接收到某个高度的 precommit 消息(其中可能包含 vote extension)时调用此函数。但在该高度已完成、只是等待更多 precommit 投票的阶段,收到的 precommit 消息不会触发调用。VerifyVoteExtension 中的逻辑必须是确定性的 FinalizeBlock 它会将一个已确定(decided)的区块传递给应用(Application)。应用必须以确定性的方式执行该区块中的所有交易,并相应地更新其状态。 通过 ResponseFinalizeBlock 中的相关参数返回的对区块及交易结果的加密承诺(cryptographic commitments),将被包含在下一个区块的区块头中。 CometBFT 会在一个新区块被确定时调用该方法。当 CometBFT 的共识算法调用 FinalizeBlock 处理某个区块时,它能够保证至少有一个非拜占庭的验证者已经对该区块执行过 ProcessProposal 非拜占庭的验证者的意思是诚实的验证者。 Commit 指示应用程序(Application)持久化其状态。这是 CometBFT 崩溃恢复机制(crash-recovery)的核心部分,确保在系统恢复后,CometBFT 与应用之间的状态保持同步。 CometBFT 会在它自己将 ResponseFinalizeBlock 返回的数据持久化之后调用此方法。此时,应用程序可以丢弃除该区块交易执行结果之外的所有状态或数据。 Mempool方法 checkTx 状态同步方法 - ListSnapshots - OfferSnapshot - LoadSnapshotChunk -ApplySnapshotChunk ...
以太坊是什么
以太坊是什么? 以太坊(Ethereum)是一个去中心化的开源区块链平台,它支持智能合约(Smart Contracts)和去中心化应用(DApps)。以太坊由Vitalik Buterin等人于2015年推出,目标是构建一个无需信任的全球计算平台。 以太坊客户端(Ethereum Client)是用于运行以太坊节点的软件,实现了以太坊协议,并允许用户与区块链进行交互。一个完整的以太坊客户端主要由多个核心组件组成,包括网络层、数据库、EVM(以太坊虚拟机)、共识机制和 RPC API 等。 网络层 负责发现和连接其他以太坊节点,并同步区块数据。主要包括节点发现,区块同步,交易传播。 数据库 数据库负责存储持久化的数据,包括历史的交易记录数据,账号信息比如账号中的代币余额,还有像智能合约的状态数据。 以太坊虚拟机(EVM) 虚拟机负责解析和执行solidity,vyper合约,其中大部分的目前在以太坊上的合约都是以solidity实现的,少量的合约还使用了vyper,像是比较出名的curve协议就使用了vyper。 以太坊虚拟机会根据每个交易的复杂程度来计算当前交易所需的gas费用。在EIP-1559标准中,gas费用的计算包含基础gas费用和用户打赏的小费。根据这个标准使得gas的消耗更加智能化。用户可以通过根据当前的拥挤情况来动态的设置gas费用。 共识机制 以太坊共识机制决定了区块的生产和验证方式: 早期(ETH 1.0):PoW(工作量证明) 现在(ETH 2.0):PoS(权益证明) RPC接口 通过对外开放的RPC接口,用户可以将先需要执行的交易进行签名,签名需要用到用户的私钥,再将签名后的交易信息发送到任意的以太坊节点上。 如何购买以太坊 以太坊上的native代币是$ETH,这个价格的波动相对一些meme代币还是比较小的,但是也从最早的几美金涨到了最高的5000美金左右。 最方面的购买和持有以太坊的方式还是通过中心化的交易所。比如binance,okx,bybit。这些中心化的交易所支持使用政府货币购买以太坊。 我们还可以通过去中心化的交易平台购买,但是前提是需要持有别的代币才能进行转化交易。最有名的去中心化交易平台是Uniswap。它不仅仅部署到以太坊还部署到了以太坊下面的 很多L2的网络上。 以太坊浏览器 https://etherscan.io/ 以太坊浏览器能干嘛? 我们可以通过以太坊浏览器查询任意一个以太坊地址上的账户信息,包括这个账户持有什么token,和对应的token余额,这些地址的历史交易数据,和哪些协议进行了交互等。 除此之外我们可以通过以太坊浏览器查询部署到链上的合约信息。对于那些开源的合约我们还能够查询到合约源代码。这个对于用户了解合约相当重要。我们需要知道这个合约的安全性, 这个合约是不是增加了后门程序。大部分的合约都开源的,因为不开源的合约是不被人相信的。另外就算开源的合约也面临着升级的风险。部署到以太坊上的还有可升级合约。管理员可以通过升级的方式修改合约中实际的逻辑代码。 以太坊的编程语言 以太坊主流的编程语言还是solidity。Solidity 是一种面向智能合约的编程语言,用于在 以太坊 及其他兼容 EVM(以太坊虚拟机) 的区块链上开发和部署智能合约。Solidity 受 JavaScript、Python、C++ 启发,采用 静态类型,并支持面向对象编程(OOP)和合约编程(Contract-Oriented Programming。 常见框架:Hardhat、Foundry、Truffle 合约标准:ERC-20(代币)、ERC-721(NFT)、ERC-1155(多代币) 兼容链:BSC、Polygon、Avalanche、Arbitrum、Optimism Solidity 是Web3 开发者必备技能,用于编写去中心化应用(DApp)和 DeFi 协议。掌握 Solidity,意味着你能在以太坊生态中构建智能合约、NFT、DAO等创新项目。
在链上做数据分析有哪些工具
数据分析的目的 ? 为什么需要做链上数据分析呢?区块链的很大一个特点就是数据透明公开,你可以在区块链浏览器上查询到任何地址的所有活动。相比传统互联网的不透明性,区块链的公开数据信息中蕴藏着巨大的价值。很多人会去追逐所谓的聪明钱包的一举一动。一个有着历史成功交易经历的聪明钱包往往被许多的交易用户盯着。每当聪明钱包买入一种新的token的时候,部分追随者甚至都不再做任何调查直接跟单买入。市面上确实存在很多这样的跟单软件。我认为这种类型的软件往往是利用了大部分交易员缺乏深思思考的缺陷,甚至很多人其实是不具备理性思考能力的。我们经常在社交媒体上能看到类似的留言:这个token怎么样?能买吗?带带我!!之类的。本质上这类人都存在一种天上的馅饼能落到自己头上的想法。 其实人生哪有这么多的捷径可以走呢。大部人的横空出世的背后都是默默无闻的长期积累。这个圈子中确实存在很多短时间内暴富的案例。但是又有多少人在经历了从贫困到突然暴富的过程之后,还能够稳稳拿住那份来之不易的财富呢。我想现实中的大部分人都会挥霍无度然后再快速返贫。这种财富来的快去的也快,就拿我自己平时打麻将赢点小钱之后就通常想快速消费掉,我不太懂这是一种什么样的心理,可能就觉得这个钱本来不属于自己吧。 言归正传,如果想分析链上的数据的话那么存在哪些工具呢? 数据分析存在哪些工具 ? Dune Analytics Dune具有强大的数据检索能力。用户可以通过自定义的sql语句查询出所需的数据。Dune分为付费版本和免费版本,付费版本可以享受更快的查询速度。对于普通数据分析的用户而言免费版本已经完全够用了。 举例来说比如最近pump.swap上线了。我们希望查询下基于pump.swap做的token转换每天到底有多少的成交量,以及这个趋势是怎么样的? 我们就可以通过以下的sql语句: WITH decoded_swap AS ( SELECT * FROM query_4893450 ), decoded_pool AS ( SELECT pool, quoteMint FROM query_4922901 ), exchange_rates AS ( SELECT DATE_TRUNC('day', minute) AS dt, AVG(price) AS avg_sol_to_usd FROM prices.usd WHERE symbol = 'SOL' AND DATE_TRUNC('day', minute) >= DATE '2025-03-15' GROUP BY 1 ), pumpswap_trades AS ( SELECT s.block_time, DATE_TRUNC('day', s.block_time) AS dt, CASE WHEN p.quoteMint IN ( 'So11111111111111111111111111111111111111112', -- SOL 'mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So' -- mSOL ) THEN (s.quoteAmountOutorIn / 1e9) * e.avg_sol_to_usd WHEN p.quoteMint IN ( 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', -- USDC 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', -- USDT 'DEkqHyPN7GMRJ5cArtQFAWefqbZb33Hyf6s5iCwjEonT' -- USDE ) THEN s.quoteAmountOutorIn / 1e6 ELSE NULL END AS volume_usd_equiv FROM decoded_swap s JOIN decoded_pool p ON s.pool = p.pool JOIN exchange_rates e ON DATE_TRUNC('day', s.block_time) = e.dt WHERE s.block_time >= TIMESTAMP '2025-03-15' AND p.quoteMint IN ( 'So11111111111111111111111111111111111111112', 'mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So', 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', 'DEkqHyPN7GMRJ5cArtQFAWefqbZb33Hyf6s5iCwjEonT' ) ), daily_volume AS ( SELECT dt AS date, SUM(volume_usd_equiv) AS daily_volume_usd FROM pumpswap_trades WHERE volume_usd_equiv IS NOT NULL GROUP BY dt ) SELECT date, daily_volume_usd, SUM(daily_volume_usd) OVER (ORDER BY date) AS cumulative_volume_usd FROM daily_volume ORDER BY date DESC; 出来的结果大概是这样的一个非常直观的数据 ...
如何开始合约审计
合约审计 从事合约审计工作大概一年有余了。想从从业者的角度聊聊合约的审计的工作内容和发展前景。 合约审计是一项收入非常高的工作。但是收入的增加曲线是非线性的。初期的从业者很难从合约审计比赛中获得足够多的奖金来维持生计。当然我指的是普通的,大众的,大部分从业者。在网络上你可以看到那种天赋异禀的从业者,在花费了3个月以内的时间就能获得单场比赛5位数美金的奖金。其实很难去验证这些信息的真伪,但是不得不承认确实有些人天赋异禀,或者有相关的行业从业经验。比如在web2的时候就是从事漏洞发掘的工作,再转入到web3之后如鱼得水也有可能。 大部分的你我芸芸纵生,都是资质平平。对于这样的你我来说,3个月可能都没办法和合约的语言(solidity)搞的非常精通。更别说弄清楚那些隐藏在合约背后的漏洞是如何产生,又是何时消散的。 就拿我自己来说,前3个月都没有赚到3位数的奖金。这个过程是相当痛苦的,因为你不知道这条路是不是走的通,也不知道等待你的会是怎么样的结果?我们每一个合约审计从业者就像是黑夜中的赶路人。不知道何时会天亮,但是天一定会亮的信念支撑者我一路走下去。后面获得了第一笔3位数的奖金,再4位数的奖金。我相信很快5位数的奖金就在下一次的比赛。 这是一项非常有积累需要经验的工作。你会看到许多的solo finding获得了巨额的奖金。如果你擅长从不同的角度思考问题,你具备长时间专注阅读代码的能力,相信我这是一份很适合你的工作。有些人可能觉得说我根本不懂solidity,我不懂blockchain底层的逻辑,不懂geth的客户端的golang代码,不懂defi的各种复杂的交互,就像白天不懂夜的黑。但是这些其实根本不重要,重要的是思维方式,长期的专注的能力,这才是你能够从几百个参赛者中脱颖而出获得最高奖金的关键要素。至于代码怎么跑,从哪里开始跑,都是一些很低级的技能。我相信大部分人都能轻易掌握。 合约审计的平台选择 目前的合约审计平台五花八门,各有各的特点。 比如code4rena,这是我的入门平台。最早的时候这个平台支持gas优化的漏洞奖金,Low等级的奖金。对于新手试手来说非常的友好。大部分人的新手找到几个low等级的问题,找到一些gas优化的问题之后就非常兴奋,开始做起来了白日梦以为能够从此,出任CEO,赢取白富美,走上人生顶峰。在苦苦等候个把月之后发现自己提交的漏洞竟一个都没被采纳。不禁悲从中来,怀疑评审是不是针对了自己。在看过别人的审计报告之后,才发现为什么别人可以从这么刁钻的角度看待问题。这其实就是思维方式的差别,对项目的了解程度的差别,对底层逻辑的熟悉程度的差别。 在参加比赛,等待结果,查看完整报告这套流程走过几遍之后,我相信大部人的玩家都流失了。如果你坚持了大半年之后还在这个行业之后,那我相信这个时候一定是穷的叮当响的。 后面还有sherlock,cantina,immunifi等一大箩筐的平台。目前大部人的平台都不再支持low等级的漏洞了。你可以提交但是大部人的情况下都只是浪费时间。 最重要的最特殊的漏洞才能获得最高的奖金。 随着从业者人数的增加,人们往往话费更多的时间去升级自己的漏洞。就是那些被评委否定,但是提交者又心有不甘,于是从不同的角度来说服评为这是一个漏洞。这个过程由于人数众多,目前的审评过程往往都消耗个把月甚至2 3 个月的时间。所以你会发现这是一项回报周期很长的工作。 审计比赛和Bug Bounty的区别 审计比赛和BB有什么区别呢? 我想最大的区别是审计比赛对于那些重复的漏洞是有奖励的。你不需要成为第一个发现漏洞的人,也可以获得一定份额的奖金。但是BB就不同了,只有对于第一个提交的人才能够获得奖金。所以BB的奖金是非常高的,甚至达到过$1M的美金单个漏洞。相应的BB的难度肯定是更高了。对于放到immunifi上做BB的项目。基本上都已经经历了很多轮的合约审计。从业者能够从中找到valid漏洞的机会渺茫。 项目审计的学习步骤 首先我们肯定需要对语法有个了解,不一定需要特别精通但是大概的意思肯定需要看懂。这里一般都会涉及到solidity/rust/move等语言,这3门是比较常见的。 语言学习的过程对于一些有多年编程经验的人来说是非常简单的。像我自己来说在学习solidity的时候利用了大概1个月左右的业余时间。 在对语法有过几本的了解之后,我们可以去看下基础的漏洞比如: 重入漏洞 DOS 抢跑 63/63 gas规则 签名重放 在了解完这些基础知识之后,我的建议是直接去参加审计比赛,虽然刚开始可能不太会获得什么奖金,但是这个学习过程是我认为效率最高的。在规定的时间之后我们尽量去了解项目的流程,多关注细节。一些重大的安全漏洞往往藏在一些容易被人忽略的细节上。 有些平台可能很快就会公开审计的比赛结果和所有发现的漏洞,我们需要仔细的看看别人发现的漏洞。别人的审计报告是怎么写的。有时候描述的内容虽然相似,但是由于描述的方式不规范,或者影响的范围写的不完整导致没有拿到完整的奖金。在这个过程中我们可以学到很多东西。重复几次这个过程,我相信很快就能上手。
如何使用ifast+kraken安全出金
出金的风险 在国内冻卡形势日渐严峻的当下,如何安全出金成为了币圈从业人员无法逃避的问题。 在这个圈子呆久了你很容易看到一些用户因为和OTC在平台交易而收到了不明来源的钱财。即使在binance这样的宇宙所,也没办法完全避免这种问题的产生。平台没办法百分比的审核每一个OTC。或者说OTC没办法在任何情况下都是安全的,因为OTC自己也有可能收到不明来源的钱财。这些钱可能来自于另外一个诈骗案的受害者。当叔叔上门的时候,甚至叔叔只打一个电话过来你就得全额退还受害者的钱财。 天下苦出金久矣!! 那么如何能保证我们收到的钱是合法的呢? 我的建议是直接走最正规的中国银行的外汇渠道。这里切忌直接像国内汇款人名币是会收到审查的。博主的切身经历,直接像国内汇款了一笔金额不大的人民币结果当天银行的电话就过来了,询问了你的收入来源。 为了避免类似的情况发生,我的建议是直接汇款美金,再通过银行的正规的外汇渠道将美金兑换成人名币。这里银行的汇率还是比较公平,取的就是当前的外汇汇率。 那么现在的问题是有什么平台可以直接像国内汇款美金呢? 最好的选择是wise!! 不管从汇率还是从时效性来说,wise都是第一选择。wise的开卡相对来说不算复杂的,你只需要有一张可以像wise汇款的同名银行卡。记住这里得是同名的。汇款一笔小额进wise之后我们很快就能够激活wise。 但是wise的缺点也非常的明显,wise的监管相当的严格,而且wise是不欢迎币圈的如金的。博主之前从欧洲的一些交易所的出金几笔直接到wise,刚开始还是好好的。后面突然就风控了wise账户。在网上可以查到相当多的用户被wise风控,wise不会像被风控的用户提供详细的风控原因。如果你还能通过申诉来解封的话,我的建议还是别浪费时间了。所以说wise的账户只能且用且珍惜了。 言归正传,由于博主的wise账号被封,只能退而求其次了。ifast是一个不错的替代品。 ifast介绍 iFAST Global Bank(iGB)是一家总部位于英国的全牌照银行,隶属于新加坡交易所主板上市的金融科技财富管理平台——iFAST Corporation Ltd. 作为集团金融科技生态系统的重要组成部分,iGB 提供多种服务,包括多币种存款、国内外支付、货币兑换和汇款服务。此外,iGB 还是英国央行快速支付系统(Faster Payment Scheme)和大额支付系统(CHAPS)的直接成员,并且是 SWIFT 的成员。iGB 由审慎监管局(PRA)授权,并受 PRA 和金融行为监管局(FCA)的监管。iFAST Global Bank 也是金融服务补偿计划的成员。 ifast的注册就相对来说比较麻烦一点了。用户需要提供地址证明。像我们国内的银行卡注册鲜有类似地址证明的材料要求。什么样的材料能作为地址证明呢: 水电账单 信用卡账单 账单中必须体现出用户的个人信息和地址信息。如果你用过招行的信用卡的话,那么可以直接用来做地址证明。我们直接通过信用卡的月度账单拿到地址证明。拿到了地址证明之后注册就是填写一些必要材料之后等待审核了。 kraken介绍 ifast注册好之后,就需要用到kraken了。kraken的作用就是帮助我们将USDT转化为法币。 我的习惯是直接转化为美金。这里就会涉及到一点手续费了也就是我们整个出金流程的唯一手续费。大概是金额的百分之一。这里注意需要使用kraken pro进行交易,而不要在kraken上直接convert,因为手续费极高相当的不划算。博主也是在这个流程上交了一点学费的。 换算成美金之后可以直接转账到ifast,这里到ifast的时效性非常快,几乎是秒到的。 然后我们再从ifast通过国际转账,将美金转到我们国内的可以接受美金的银行卡。这里为推荐使用招行的卡。这个过程时效性就无法保证了,有时候隔天有时候3,4天。
safe钱包的原理和流程
safe钱包介绍 所谓的safe钱包其实就是一个合约地址,这里合约可以用来和外部的合约或者EOAs进行交互。和EOAs不用的是合约地址并没有一个类似私钥的东西。在safe钱包创建的时候,创建者可以为这个合约钱包设置一个owner列表和一个临界值(threshold)。怎么理解这个临界值呢? 假设我们的owner列表是由3个外部的地址组成的。我们的临界值设置为2。那么只要3个owner中的2个签名了当前的这笔交易,就可以一笔交易成功的执行。 通常情况下我们会把多签的权限分配给不同的外部用户,来分散中心化带来的一些问题。 签名的组成 签名类型有哪些 ? ECDSA 签名 这是最常见的签名格式,使用标准的 secp256k1 曲线(和以太坊 EOA 一样),格式如下: {r (32 bytes)} {s (32 bytes)} {v (1 byte)} 总长度 65 字节(r + s + v),由 Safe 拥有者(EOA 钱包,如 MetaMask)签署,交易消息通过 EIP-712 方式进行哈希,再由私钥签名。 2.合约签名(Contract Signature) 某些合约(如模块或外部签名服务)可以代替 EOA 进行签名。Safe 允许使用 合约签名(合约钱包或外部模块),格式如下: {签名数据} {签名者地址} 3.EthSign 签名 Safe 也支持 EthSign 类型的签名(类似 eth_sign),这种签名通常会在哈希前面加上 \x19Ethereum Signed Message:\n,以防止重放攻击。其格式仍然是标准的 65 字节签名。其中最后一位byte代表签名的类型。在safe解析签名的时候根据末尾的类型进行解析。 {r (32 bytes)} {s (32 bytes)} {v (1 byte)} 为了能够执行一笔交易,在调用safe钱包执行execTransaction函数的时候需要传递如下的参数: to value data operation:call/delegatecall safeTxGas baseGas gasPrice gasToken refundReceiver signatures 其中的signatures参数中包含了所有签名用户的的签名数据。在执行当前交易的时候,合约会循环验证每一条签名数据直到达到阀值。 模块(module) 在 Safe{Wallet} 中,“module”(模块)是指可以附加到 Safe 智能账户的独立智能合约,用于增强或自定义账户的功能。这些模块与 Safe 的核心多签名机制并行工作,允许用户根据需求添加自动化操作、自定义交易逻辑或其他高级功能。 Safe 账户本身是一个基础的多签名钱包(需要多个所有者签名才能执行交易),而模块则是“插件”,可以扩展其能力。模块与核心合约的逻辑分离,确保核心账户的安全性不受影响,同时提供灵活性。 ...
什么是闪电网络
闪电网络(Lightning Network)是一种基于区块链技术的第二层扩展解决方案,主要用于解决比特币等加密货币网络的交易速度慢和费用高的问题。它通过在主区块链之外建立一个支付通道网络,使得用户可以在不直接记录每笔交易到区块链的情况下,快速、低成本地进行点对点交易。以下是对闪电网络的详细介绍及其工作原理、优势与挑战。 闪电网络的起源与目的 比特币作为第一种去中心化数字货币,虽然在安全性和去中心化方面表现出色,但其交易处理能力有限。比特币网络每秒最多只能处理约7笔交易,且交易确认通常需要10分钟甚至更长时间。此外,随着交易量的增加,交易费用也随之上涨,这使得比特币不适合小额支付或日常使用场景。闪电网络由Joseph Poon和Thaddeus Dryja在2015年提出,旨在通过将大量交易移出主链来提高比特币的可扩展性,同时保留其安全性和去中心化特性。 工作原理 闪电网络的核心概念是“支付通道”(Payment Channels)。简单来说,它允许两个或多个用户在区块链之外建立一个私密的交易通道,在这个通道内进行无限次交易,而无需将每笔交易记录到比特币主链上。具体工作方式如下: 建立支付通道:两方(例如Alice和Bob)通过在比特币区块链上锁定一定数量的资金(通过多重签名交易)来创建一个支付通道。这笔资金只能在双方同意的情况下使用。 通道内交易:在通道内,Alice和Bob可以直接进行多次交易,更新彼此的余额分配。这些交易是即时的,且不需矿工确认,因此几乎没有费用。 关闭通道:当双方完成交易需求后,可以关闭通道。此时,他们将最终的余额状态提交到比特币区块链上,区块链记录这笔最终结算,释放锁定的资金。 此外,闪电网络还通过“路由”(Routing)机制实现多方互联。即使Alice和Bob没有直接建立通道,只要他们通过其他用户的通道网络间接连接(例如通过Charlie),他们仍然可以交易。这种网络化设计大大扩展了闪电网络的适用范围。 优势 闪电网络为比特币带来了显著的改进: 高吞吐量:交易速度几乎是实时的,适合小额支付,如买咖啡或在线订阅。 低成本:由于大部分交易无需上链,交易费用极低甚至为零。 隐私性增强:通道内的交易不会公开记录到区块链上,保护了用户隐私。 减轻主链负担:将大量日常交易转移到第二层,减少了比特币主链的拥堵。 挑战与局限性 尽管闪电网络前景广阔,但它仍面临一些技术和实践上的挑战: 复杂性:建立和管理支付通道对普通用户来说可能过于复杂,需要更友好的界面和工具。 流动性问题:通道中的资金是锁定的,如果一方缺乏足够的余额,交易可能无法进行。 中心化风险:随着网络发展,可能会出现依赖少数大型“枢纽节点”的情况,这与比特币的去中心化精神有所冲突。 安全性:用户需要保持在线状态以监控通道,否则可能面临资金被盗的风险。 当前发展与未来 截至2025年3月19日,闪电网络已经在比特币生态中得到了广泛应用。许多钱包(如Phoenix、Muun)和商家已支持闪电支付,特别是在小额支付和跨境转账领域。与此同时,开发者和社区也在不断优化其协议,解决上述挑战。例如,改进的路由算法和更智能的通道管理工具正在推动其普及。 未来,闪电网络不仅限于比特币,还可能扩展到其他支持智能合约的区块链(如以太坊的类似方案)。它代表了区块链技术向高效、实用方向迈进的重要一步,有望让加密货币真正融入日常支付场景。 结论 闪电网络是比特币可扩展性问题的一个创新解决方案,它通过将交易从主链转移到第二层,实现了快速、低成本的支付体验。虽然仍有一些技术障碍需要克服,但其潜力无疑为加密货币的广泛采用铺平了道路。对于希望探索比特币未来发展的用户来说,闪电网络是一个值得关注的关键技术。