Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion script/Scribe.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,9 @@ contract ScribeScript is Script {
// Require self to be deactivated.
{
vm.prank(address(0));
(bool ok, /*val*/ ) = IScribe(self).tryRead();
(
bool ok, /*val*/
) = IScribe(self).tryRead();
require(!ok, "Instance not deactivated: read() does not fail");

require(
Expand Down
19 changes: 10 additions & 9 deletions script/ScribeOptimistic.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ import {IToll} from "chronicle-std/toll/IToll.sol";

import {IScribe} from "src/IScribe.sol";
import {IScribeOptimistic} from "src/IScribeOptimistic.sol";
import {Chronicle_BASE_QUOTE_COUNTER as ScribeOptimistic} from
"src/ScribeOptimistic.sol";
import {
Chronicle_BASE_QUOTE_COUNTER as ScribeOptimistic
} from "src/ScribeOptimistic.sol";
// @todo ^^^^ ^^^^^ ^^^^^^^ Adjust name of Scribe instance.

import {LibSecp256k1} from "src/libs/LibSecp256k1.sol";
Expand Down Expand Up @@ -134,7 +135,9 @@ contract ScribeOptimisticScript is ScribeScript {
// Require self to be deactivated.
{
vm.prank(address(0));
(bool ok, /*val*/ ) = IScribe(self).tryRead();
(
bool ok, /*val*/
) = IScribe(self).tryRead();
require(!ok, "Instance not deactivated: read() does not fail");

require(
Expand Down Expand Up @@ -173,16 +176,14 @@ contract ScribeOptimisticScript is ScribeScript {
IScribe.SchnorrData(bytes32(0), address(0), hex"");

// Construct opPokeMessage.
bytes32 opPokeMessage = IScribeOptimistic(self).constructOpPokeMessage(
pokeData, schnorrData
);
bytes32 opPokeMessage = IScribeOptimistic(self)
.constructOpPokeMessage(pokeData, schnorrData);

// Let feed sign opPokeMessage.
IScribe.ECDSAData memory opPokeSig = feed.signECDSA(opPokeMessage);

// Rescue ETH via rescuer contract.
Rescuer(payable(rescuer)).suck(
self, feed.pubKey, registrationSig, pokeDataAge, opPokeSig
);
Rescuer(payable(rescuer))
.suck(self, feed.pubKey, registrationSig, pokeDataAge, opPokeSig);
}
}
3 changes: 1 addition & 2 deletions script/benchmarks/ScribeBenchmark.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,7 @@ contract ScribeBenchmark is Script {
// Create pokeData.
// Note to use max value for val to have highest possible gas costs.
IScribe.PokeData memory pokeData = IScribe.PokeData({
val: type(uint128).max,
age: uint32(block.timestamp)
val: type(uint128).max, age: uint32(block.timestamp)
});

// Create schnorrData.
Expand Down
9 changes: 3 additions & 6 deletions script/benchmarks/ScribeOptimisticBenchmark.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,7 @@ contract ScribeOptimisticBenchmark is Script {
// Create pokeData.
// Note to use max value for val to have highest possible gas costs.
IScribe.PokeData memory pokeData = IScribe.PokeData({
val: type(uint128).max,
age: uint32(block.timestamp)
val: type(uint128).max, age: uint32(block.timestamp)
});

// Create schnorrData.
Expand All @@ -135,8 +134,7 @@ contract ScribeOptimisticBenchmark is Script {
// Create pokeData.
// Note to use max value for val to have highest possible gas costs.
IScribe.PokeData memory pokeData = IScribe.PokeData({
val: type(uint128).max,
age: uint32(block.timestamp)
val: type(uint128).max, age: uint32(block.timestamp)
});

// Create schnorrData.
Expand Down Expand Up @@ -164,8 +162,7 @@ contract ScribeOptimisticBenchmark is Script {
// Create pokeData.
// Note to use max value for val to have highest possible gas costs.
IScribe.PokeData memory pokeData = IScribe.PokeData({
val: type(uint128).max,
age: uint32(block.timestamp)
val: type(uint128).max, age: uint32(block.timestamp)
});

// Create schnorrData.
Expand Down
15 changes: 6 additions & 9 deletions script/dev/ScribeOptimisticTester.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,8 @@ contract ScribeOptimisticTesterScript is ScribeTesterScript {

IScribe.ECDSAData memory ecdsaData;
ecdsaData = signer.signECDSA(
IScribeOptimistic(self).constructOpPokeMessage(
pokeData, schnorrData
)
IScribeOptimistic(self)
.constructOpPokeMessage(pokeData, schnorrData)
);

vm.startBroadcast();
Expand Down Expand Up @@ -155,9 +154,8 @@ contract ScribeOptimisticTesterScript is ScribeTesterScript {

IScribe.ECDSAData memory ecdsaData;
ecdsaData = signer.signECDSA(
IScribeOptimistic(self).constructOpPokeMessage(
pokeData, schnorrData
)
IScribeOptimistic(self)
.constructOpPokeMessage(pokeData, schnorrData)
);

vm.startBroadcast();
Expand Down Expand Up @@ -210,9 +208,8 @@ contract ScribeOptimisticTesterScript is ScribeTesterScript {
bytes32 pokeMessage = IScribe(self).constructPokeMessage(pokeData);

// Check whether schnorrData is not acceptable.
bool ok = IScribe(self).isAcceptableSchnorrSignatureNow(
pokeMessage, schnorrData
);
bool ok = IScribe(self)
.isAcceptableSchnorrSignatureNow(pokeMessage, schnorrData);
if (ok) {
console2.log(
"Schnorr signature is acceptable: expecting opChallenge to be unsuccessful"
Expand Down
5 changes: 3 additions & 2 deletions script/libs/LibSchnorrExtended.sol
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,9 @@ library LibSchnorrExtended {
returns (uint)
{
// k = H(x ‖ m) mod Q
return uint(keccak256(abi.encodePacked(privKey, message)))
% LibSecp256k1.Q();
return
uint(keccak256(abi.encodePacked(privKey, message)))
% LibSecp256k1.Q();
}

function computeNoncePublicKey(uint nonce)
Expand Down
4 changes: 1 addition & 3 deletions script/rescue/Rescuer.sol
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,7 @@ contract Rescuer is Auth {

// Construct invalid Schnorr signature.
IScribe.SchnorrData memory schnorrSig = IScribe.SchnorrData({
signature: bytes32(0),
commitment: address(0),
feedIds: hex""
signature: bytes32(0), commitment: address(0), feedIds: hex""
});

// Lift validator.
Expand Down
3 changes: 3 additions & 0 deletions src/IScribe.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;
// forgefmt: disable-start

import {IChronicle} from "chronicle-std/IChronicle.sol";

Expand Down Expand Up @@ -243,3 +244,5 @@ interface IScribe is IChronicle {
/// @return isValid True if value exists, false otherwise.
function peep() external view returns (uint value, bool isValid);
}

// forgefmt: disable-end
3 changes: 3 additions & 0 deletions src/IScribeOptimistic.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;
// forgefmt: disable-start

import {IScribe} from "./IScribe.sol";

Expand Down Expand Up @@ -174,3 +175,5 @@ interface IScribeOptimistic is IScribe {
/// @param maxChallengeReward The value to update maxChallengeReward to.
function setMaxChallengeReward(uint maxChallengeReward) external;
}

// forgefmt: disable-end
3 changes: 3 additions & 0 deletions src/Scribe.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.16;
// forgefmt: disable-start

import {IChronicle} from "chronicle-std/IChronicle.sol";
import {Auth} from "chronicle-std/auth/Auth.sol";
Expand Down Expand Up @@ -526,3 +527,5 @@ contract Chronicle_BASE_QUOTE_COUNTER is Scribe {
Scribe(initialAuthed, wat_)
{}
}

// forgefmt: disable-end
3 changes: 3 additions & 0 deletions src/ScribeOptimistic.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.16;
// forgefmt: disable-start

import {IChronicle} from "chronicle-std/IChronicle.sol";

Expand Down Expand Up @@ -599,3 +600,5 @@ contract Chronicle_BASE_QUOTE_COUNTER is ScribeOptimistic {
ScribeOptimistic(initialAuthed, wat_)
{}
}

// forgefmt: disable-end
3 changes: 3 additions & 0 deletions src/extensions/IScribeLST.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;
// forgefmt: disable-start

import {IScribe} from "../IScribe.sol";

import {IRateSource} from "./external_/interfaces/IRateSource.sol";

interface IScribeLST is IScribe, IRateSource {}

// forgefmt: disable-end
3 changes: 3 additions & 0 deletions src/extensions/IScribeOptimisticLST.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;
// forgefmt: disable-start

import {IScribeOptimistic} from "../IScribeOptimistic.sol";

import {IRateSource} from "./external_/interfaces/IRateSource.sol";

interface IScribeOptimisticLST is IScribeOptimistic, IRateSource {}

// forgefmt: disable-end
3 changes: 3 additions & 0 deletions src/extensions/ScribeLST.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.16;
// forgefmt: disable-start

import {IScribeLST} from "./IScribeLST.sol";
import {IRateSource} from "./external_/interfaces/IRateSource.sol";
Expand Down Expand Up @@ -36,3 +37,5 @@ contract Chronicle_BASE_QUOTE_COUNTER is ScribeLST {
ScribeLST(initialAuthed, wat_)
{}
}

// forgefmt: disable-end
3 changes: 3 additions & 0 deletions src/extensions/ScribeOptimisticLST.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.16;
// forgefmt: disable-start

import {IScribeOptimisticLST} from "./IScribeOptimisticLST.sol";
import {IRateSource} from "./external_/interfaces/IRateSource.sol";
Expand Down Expand Up @@ -36,3 +37,5 @@ contract Chronicle_BASE_QUOTE_COUNTER is ScribeOptimisticLST {
ScribeOptimisticLST(initialAuthed, wat_)
{}
}

// forgefmt: disable-end
4 changes: 4 additions & 0 deletions src/extensions/external_/interfaces/IRateSource.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0
pragma solidity >=0.8.0;

// forgefmt: disable-start

/**
* @dev Interest rate oracle interface from [Spark](https://spark.fi/).
*
Expand All @@ -11,3 +13,5 @@ interface IRateSource {
/// @return The oracle's current APR value.
function getAPR() external view returns (uint);
}

// forgefmt: disable-end
3 changes: 3 additions & 0 deletions src/libs/LibSchnorr.sol
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;
// forgefmt: disable-start

import {LibSecp256k1} from "./LibSecp256k1.sol";

Expand Down Expand Up @@ -101,3 +102,5 @@ library LibSchnorr {
return commitment == recovered;
}
}

// forgefmt: disable-end
4 changes: 4 additions & 0 deletions src/libs/LibSecp256k1.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;

// forgefmt: disable-start

/**
* @title LibSecp256k1
*
Expand Down Expand Up @@ -359,3 +361,5 @@ library LibSecp256k1 {
return t;
}
}

// forgefmt: disable-end
6 changes: 3 additions & 3 deletions test/EVMTest.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ abstract contract EVMTest is Test {
/// index returns 0.
/// Note that ScribeOptimistic::opChallenge() requires such an
/// expression to _not revert_.
function testFuzz_calldataload_ReadingNonExistingCalldataReturnsZero(
uint index
) public {
function testFuzz_calldataload_ReadingNonExistingCalldataReturnsZero(uint index)
public
{
uint minIndex;
assembly ("memory-safe") {
minIndex := calldatasize()
Expand Down
Loading
Loading