跨链合约时代:Axelar、Wormhole、Hyperlane 谁能称霸多链通信?
跨链合约时代:Axelar、Wormhole、Hyperlane 谁能称霸多链通信?随着区块链技术的快速发展,跨链通信已经成为了区块链生态系统中的重要组成部分。跨链协议允许不同的区块链之间进行信息传递和资产互操作,从而打破了各个链之间的孤立局面。Axelar、Wormhole 和 Hyperlane 作为三大跨链协议的代表,它们在多链通信的实现上各具特色。那么,谁能称霸跨链合约时代,成为未来的多链通信标准呢?
一、跨链协议的背景随着区块链的多样化发展,去中心化金融(DeFi)、NFT、游戏和其他应用程序已经不再局限于单一链上运行。不同区块链之间的数据和资产流通需求日益增加。然而,不同链之间缺乏统一的通信协议,导致了跨链操作的复杂性和不兼容性。因此,跨链协议应运而生,它们旨在提供链与链之间的高效、安全和可扩展的通信机制。
跨链协议不仅仅是为了解决资产的流动问题,更重要的是推动去中心化应用(DApp)和去中心化自治组织(DAO)等创新模式的实现。
二、Axelar:跨链的互联网Axelar 提供了一个简单、安全且去中心化的跨链解决方案,其目标是成为一个“区块链互联网”。Axelar 使用统 ...
codehawk-Liquidity Management
高 执行逻辑错误的参数漏洞代码:
/** * @notice 此函数是提款流程的结束。 * @dev 应更新所有必要的全局状态变量 * * @param withdrawn 从头寸中提取的代币数量 * @param positionClosed 当完全通过提款关闭头寸时为真,否则为假 */ function _handleReturn(uint256 withdrawn, bool positionClosed, bool refundFee) internal { (uint256 depositId) = flowData; uint256 shares = depositInfo[depositId].shares; uint256 amount; if (positionClosed) { amount = collateralToken.balanceOf(address(this)) * shares / totalShares; } else { uint ...
cantina-size Credit
cantina-size Credit使用owner()函数,该合约已经设置了owner为零漏洞代码
function reinitialize() external onlyOwner reinitializer(1_7_0) { // grant `AccessControlUpgradeable` roles to the `Ownable2StepUpgradeable` owner _grantRole(DEFAULT_ADMIN_ROLE, owner()); _grantRole(PAUSER_ROLE, owner()); _grantRole(KEEPER_ROLE, owner()); _grantRole(BORROW_RATE_UPDATER_ROLE, owner()); // transfer `Ownable2StepUpgradeable` ownership to the zero address to keep the state consisten ...
sherlock-Yieldoor 审计报告
Yieldoor整数溢出 (高)代码如下:
uint256 index = (observationCardinality + currentIndex - i) % observationCardinality;
这里的observationCardinality和currentIndex在合约中都是uint16的类型,也就是说2^16-1
0-65535,当他们俩个相加的话就会出现整数溢出,导致依赖计算的函数都会无法进行
溢出就会导致整个合约的核心功能无法使用
杠杆base计算错误 (高)代码如下:
base = owedAmount / vp.maxTimesLeverage;
使用了借款金额,来计算base,可能会导致超过初始抵押品的,导致用户被清算。
计算 base 时 未考虑初始抵押品 initCollateralValue,导致 base 可能超出合理范围。这导致用户在 实际抵押品仍然充足的情况下被提前清算。例子如下:假设:
用户存入 1000 USDT 作为抵押
借入 1000 USDT,总仓位变成 2000 USDT
vp.maxTimesLeverage ...
codeHawks-2024-12-Aldo SssTablecoinsss 审计报告
Aldo SssTablecoinsss 审计报告这次抽空在codeHarw上面,做了一次首飞。是关于defi 的。结果使用p语言写的,导致很多人可能就没有去参加,我也提交了3个,虽然只有一个被判为中等,但是这是我第一次被选择成最终报告
这是我正确的报告
语言机的时间设置的太大(中等)(me)(被选为作为报告)M-01. The TIMEOUT is set as a fixed constant of 72 hours, which makes it inflexible in adapting to the market price.SummaryIn this contract, the TIMEOUT is set as a fixed constant (72 hours, or 259200 seconds). This means that if the oracle price data is not updated within 72 hours, the data will be considered outdated, and the contract will ...
sherlock-2024-11-Oku'sNew Order Types 审计报告
一Summary在执行 _getExchangeRate函数的时候,没有检查,tokenIn和tokenOut是不是同种的代币,导致一些无意义的汇率计算出来
Root Cause2024-11-oku-HeYuan-33/oku-custom-order-types/contracts/automatedTrigger/AutomationMaster.sol
Lines 77 to 86 in ee3f781
function _getExchangeRate( IERC20 tokenIn, IERC20 tokenOut ) internal view returns (uint256 exchangeRate) { // Retrieve USD prices from oracles, scaled to 1e8 uint256 priceIn = oracles[tokenIn].currentValue(); uint256 priceOut = oracles[tokenOut]. ...
CTF-ApproveMain
CTF-ApproveMain题目的源代码:
pragma solidity ^0.8.0;// ERC20contract Cert{ mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; address public admin; struct AddressSlot { address value; } // 预挖给msg.sender 100个代币 constructor () { _mint(msg.sender, 100*10**18); } modifier safeCheek(address spender, uint256 amount) { if (uin ...
CTF-EverythingArt
CTF-EverythingArt题目源代码:
pragma solidity ^0.8.0;// Using @openzeppelin/contracts@3.2.0// pragma solidity ^0.8.0;import "@openzeppelin/contracts/utils/math/SafeMath.sol";import "@openzeppelin/contracts/token/ERC721/ERC721.sol";contract EverytingIsArt is ERC721 { using SafeMath for *; uint256 public totalMinted; bool public hope = true; bool public hope2 = true; // Deploy by CTFer EOA account constructor() public ERC721("All Arts", "AA" ...
关于solidity漏洞的基础知识
关于solidity漏洞的基础知识精度的计算这个错误常常出现于计算过程当中,使用了先除后乘,就会导致精度的计算错误,比如
interest = principal / 3_333 * 10_000;
如果本金小于3_333,那么就会计算的利息为零如果按一下的例子计算
interest = principal * 10_000 / 3_333;
那么就不会出现这种的错误,因为使先扩大的精度,再除的话,就能避免精度的损失个人也是通过近几次的审计报告发现,大家都是很注意计算的地方
函数变量不用同一个变量声明这是我再审计报告中,第一次了解到这个问题,但是学过Java的都知道,成员变量和方法的变量冲突的话就会使用this来区分,而我们solidity没有这种说法,所以只能用不同的命名来表示,比如
address owner;function change owner(address owner) internal{ require(owner == msg.sender,"NOT CHANGE"); owner = owner;}
在这个函数 ...
codeHawks-2024-11-twentyone 审计报告
twentyone 审计报告我自己这次犯了一个重大错误。就是没有真正的理解题目意思。导致全是找的破环游戏规则(可以任意查看手牌的错误。其实是游戏这么设定是合理的)然后这次就不放我的报告的了。因为都是public惹得祸。让我以为这次的首飞就是只有权限的问题,那就看看正确的漏洞出处
计算玩家和庄家的手牌不一致 (高)其实这个问题应该是最简单的。因为从下面代码就能显而易见
//playerHand if (cardValue == 0 || cardValue >= 10) { playerTotal += 10; } else { playerTotal += cardValue; }//dealerHand if (cardValue >= 10) { dealerTotal += 10; } else { ...