![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
redprint-forge
Advanced tools
A developer-friendly framework/library in solidity to modify & deploy OPStack ’s contracts in a modular style.
[!NOTE] You can find our alpha mvp and relevant examples
here
[!WARNING] The code is not audited yet. Please use it carefully in production.
There are 2 ways: with Node.js and one Git Submodules
This is the recommended approach.
We assume that you already setup your working environment with hardhat + foundry as specified in foundry 's guide or hardhat 's guide and cd
into it
cd my-project;
redprint-forge
using your favorite package manager, e.g., with Yarn:yarn add -D redprint-forge
remappings.txt
with following line:@redprint-core/=node_modules/redprint-forge/src
@redprint-deploy/=node_modules/redprint-forge/script
@redprint-forge-std/=node_modules/redprint-forge/lib/forge-std/src
@redprint-openzeppelin/=node_modules/redprint-forge/lib/openzeppelin-4_7_3/contracts
@redprint-openzeppelin-upgradable/=node_modules/redprint-forge/lib/openzeppelin-upgradable-4_7_3/contracts
@redprint-safe-contracts/=node_modules/redprint-forge/lib/safe-smart-account/contracts
[!NOTE] All OPStack's contracts are based on
v1.9.4
[!TIP] We use @redprint-/ as a convention to avoid any naming conflicts with your previously installed libararies ( i.e.
@redprint-forge-std/
vs@forge-std/
)
One of our Swiss army knife toolset: redprint-forge is a developer-friendly framework/library in solidity to modify & deploy OPStack ’s contracts in a modular style.
The features include:
Type-safe smart contract deployment
Re-usable smart contract deployment and testing pipeline
Standardized framework, minimizing developer mistake and enhancing better security
All-Solidity-based so no context switching, no new scripting syntax in other languages
Tx Management via Safe Smart Contract Deploy Script
Together with Redprint Wizard UI
, which is a code generator/ interactive playground oriented for OPStack development, it does not only help novice developers to deploy OPStack's smart contracts to deploy on OP mainnet, but also help them to use generated deployment script in their own projects.
You can write solidity script, then execute it from command-line in order to make any smart contract calls, or send transactions from your own safe multi-sig wallet.
You can access both _upgradeAndCallViaSafe
and _callViaSafe
easily by inheriting and using from in redprint-forge
module ’s parent contract SafeScript
.
Let’s see a practical example when initializing one of OPStack's proxy contract ( eg. ProtocolVersions
) by calling _upgradeAndCallViaSafe
:
/** ... */
// `redprint-forge` 's core engine
import { SafeScript} from "@redprint-deploy/safe-management/SafeScript.sol";
/** ... */
contract DeployAndInitializeProtocolVersionsScript is DeployScript, SafeScript {
/** ... */
function initializeProtocolVersions() public {
console.log("Upgrading and initializing ProtocolVersions proxy");
/** ... */
address proxyAdmin = deployer.mustGetAddress("ProxyAdmin");
address safe = deployer.mustGetAddress("SystemOwnerSafe");
/** ... */
_upgradeAndCallViaSafe({
_proxyAdmin: proxyAdmin,
_safe: safe,
_owner: owner,
_proxy: payable(protocolVersionsProxy),
_implementation: protocolVersions,
_innerCallData: abi.encodeCall(
ProtocolVersions.initialize,
(
finalSystemOwner,
ProtocolVersion.wrap(requiredProtocolVersion),
ProtocolVersion.wrap(recommendedProtocolVersion)
)
)
});
/** ... */
}
}
[!NOTE] You can the see full example here:
03B_DeployAndInitializeProtocolVersions.s.sol
Let’s see another example at SafeScript
itselfs. Our internal function just calls _callViaSafe
:
/** ... */
abstract contract SafeScript {
/** ... */
function _upgradeAndCallViaSafe( address _owner, address _proxyAdmin, address _safe, address _proxy, address _implementation, bytes memory _innerCallData) internal {
bytes memory data =
abi.encodeCall(ProxyAdmin.upgradeAndCall, (payable(_proxy), _implementation, _innerCallData));
Safe safe = Safe(payable(_safe));
_callViaSafe({ _safe: safe, _owner: _owner, _target: _proxyAdmin, _data: data });
}
/** ... */
}
We are currently still in an experimental phase leading up to a first audit and would love to hear your feedback on how we can improve Reprint
.
If you want to say thank you or/and support active development of redprint-forge:
This project would not have been possible to build without the advanced iniatiative from opensource software including forge-deploy, so we are deeply thankful for their contributions in our web3 ecosystem.
If we’ve overlooked anyone, please open an issue so we can correct it. While we always aim to acknowledge the inspirations and code we utilize, mistakes can happen in a team setting, and a reference might unintentionally be missed.
FAQs
A developer-friendly framework/library in solidity to modify & deploy OPStack ’s contracts in a modular style.
The npm package redprint-forge receives a total of 15 weekly downloads. As such, redprint-forge popularity was classified as not popular.
We found that redprint-forge demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.