Cudos contest - 0xf15ers's results

Decentralised cloud computing for Web3.

General Information

Platform: Code4rena

Start Date: 03/05/2022

Pot Size: $75,000 USDC

Total HM: 6

Participants: 55

Period: 7 days

Judge: Albert Chon

Total Solo HM: 2

Id: 116

League: COSMOS

Cudos

Findings Distribution

Researcher Performance

Rank: 49/55

Findings: 1

Award: $75.66

🌟 Selected for report: 0

🚀 Solo Findings: 0

Awards

75.6568 USDC - $75.66

Labels

bug
G (Gas Optimization)

External Links

1. Arrays length can be cached to save gas

uint length = _users.length;
for (uint256 i = 0; i < _users.length; i++) {
  ............
}

Same for below:

./solidity/contracts/Gravity.sol:149:		 for (uint256 i = 0; i < _users.length; i++) {
./solidity/contracts/Gravity.sol:267:		for (uint256 i = 0; i < _currentValidators.length; i++) {
./solidity/contracts/Gravity.sol:299:		for (uint256 i = 0; i < _newValset.validators.length; i++) {
./solidity/contracts/Gravity.sol:489:				for (uint256 i = 0; i < _amounts.length; i++) {
./solidity/contracts/Gravity.sol:605:		for (uint256 i = 0; i < _args.transferAmounts.length; i++) {
./solidity/contracts/Gravity.sol:616:		for (uint256 i = 0; i < _args.feeAmounts.length; i++) {
./solidity/contracts/Gravity.sol:698:		for (uint256 i = 0; i < _powers.length; i++) {

2. Default initialisation can be omitted

uint256 public state_lastValsetNonce = 0

3. External function are cheaper than public functions

  • Public functions not called anywhere inside the contract can be declared external to save gas.
  • Function like manageWhitelist(), testCheckValidatorSignatures() updateValset() submitBatch() submitLogicCall() sendToCosmos(), etc. can be declared external.

4. Prefix increment is cheaper than postfix increment

Same for below:

./solidity/contracts/Gravity.sol:150:		for (uint256 i = 0; i < _users.length; i++) {
./solidity/contracts/Gravity.sol:268:		for (uint256 i = 0; i < _currentValidators.length; i++) {
./solidity/contracts/Gravity.sol:300:		for (uint256 i = 0; i < _newValset.validators.length; i++) {
./solidity/contracts/Gravity.sol:490:				for (uint256 i = 0; i < _amounts.length; i++) {
./solidity/contracts/Gravity.sol:606:		for (uint256 i = 0; i < _args.transferAmounts.length; i++) {
./solidity/contracts/Gravity.sol:617:		for (uint256 i = 0; i < _args.feeAmounts.length; i++) {
./solidity/contracts/Gravity.sol:699:		for (uint256 i = 0; i < _powers.length; i++) {
AuditHub

A portfolio for auditors, a security profile for protocols, a hub for web3 security.

Built bymalatrax © 2024

Auditors

Browse

Contests

Browse

Get in touch

ContactTwitter