What’s web3j-solidity-gradle plugin?
Web3j-solidity-gradle-plugin is a helpful instrument and extension of web3j library. You need to use it for integrating Solidity good contract compilation into your Gradle mission. It simplifies the method of constructing and managing good contracts inside a Java or Android mission that makes use of Web3j. It presents varied configurations for compiling and makes use of web3j-sokt behind the scenes.
Web3j-Sokt is a Kotlin wrapper for the Solidity compiler (solc). Given a solidity file, it might probably establish the perfect compiler model to make use of from the pragma assertion on the prime of the file. It might then obtain, set up and invoke the compiler. Fairly than utilizing Dockerized variations of Solc, Sokt makes use of native builds and is appropriate with Mac, Home windows and Linux.
For extra data on web3j-sokt test right here – https://github.com/hyperledger/web3j-sokt
Find out how to use web3j-solidity-gradle plugin?
Step 1: Apply the Plugin
First, you could apply the web3j-solidity-gradle plugin to your Gradle mission. You are able to do this by including the next strains to your construct.gradle file:
plugins {
id ‘org.web3j.solidity.gradle.plugin’ model ‘x.y.z’
}
Step 2: Configure the Plugin
After making use of the plugin, you possibly can configure the compilation flags. Right here is an instance configuration:
solidity {
// Non-compulsory: Specify the Solidity compiler model
solcVersion = ‘v0.5.16’
// Non-compulsory: Configure the optimizer
outputComponents = [BIN, ABI, ASM_JSON]
optimizeRuns = 500
}
Step 3: Add Solidity Information
By default, all .sol recordsdata in $projectDir/src/important/solidity and $projectDir/src/check/solidity will likely be processed by the plugin. To specify and add completely different supply units, use the sourceSets DSL. You too can set your most well-liked output listing for compiled code.
sourceSets {
important {
solidity {
srcDir {
“my/customized/path/to/solidity”
}
output.resourcesDir = file(‘out/bin/compiledSol’)
}
}
}
Step 4: Construct Contracts
To compile your Solidity contracts, run the next command in your terminal:
./gradlew construct
Or you possibly can simply run the compileSolidity gradle processÂ
./gradlew compileSolidity
This command triggers the compilation of Solidity contracts and generates binary and ABI recordsdata within the specified vacation spot listing.
Step 5: Combine with Web3j
After compiling your contracts, chances are you’ll need to generate Java wrappers to work together with them. You possibly can combine the web3j library to your mission and use the Web3j CLI or Web3j Gradle plugin to generate these wrappers. Right here’s a information on how one can add Web3j-gradle-plugin to your Gradle mission: https://docs.web3j.io/4.11.0/plugins/web3j_gradle_plugin/
Then, use the plugin to generate Java wrappers that correspond to your good contracts.
Step 6: Run and Take a look at
Lastly, use the generated Java wrappers in your Java or Android mission to deploy, work together with, and check your good contracts.
Introducing New Options within the Web3j-Solidity-Gradle Plugin
The Web3j Solidity Gradle plugin permits for outlining completely different supply units. Nevertheless, the Solidity compilation configuration is international. It can’t be set individually for every supply set.
Here is an instance of how supply units together with solidity flags are presently configured:
sourceSets {
important {
solidity {
srcDir {
“my/customized/path/to/solidity”
}
output.resourcesDir = file(‘out/bin/compiledSol’)
}
}
}
solidity {
outputComponents = [BIN, ABI, ASM_JSON]
optimizeRuns = 500
}
This strategy may be problematic for customers who need completely different configurations for compiling good contracts throughout supply units, as compilation settings are restricted to international values.
To deal with this, we’ve launched new options that allow customers configure parameters like Solidity model, EVM model, optimization settings, and optimization runs per supply set.
Instance with the brand new characteristic:
sourceSets {
important {
solidity {
srcDir {
“my/customized/path/to/solidity”
}
output.resourcesDir = file(‘out/bin/compiledSol’)
setEvmVersion(‘ISTANBUL’)
setOptimize(true)
setOptimizeRuns(200)
setVersion(‘0.8.12’)
}
}
}
Builders who need to discover this new performance can comply with the associated pull request: https://github.com/hyperledger/web3j-solidity-gradle-plugin/pull/69. These options will likely be out there within the upcoming launch of the Web3j-Solidity-Gradle plugin v0.4.2.
Customers and builders can discover the mission code supply right here – https://github.com/hyperledger/web3j-solidity-gradle-plugin
Â
The Web3j-Solidity-Gradle plugin supplies a seamless improvement expertise from good contract coding to Java software integration. The brand new options let customers apply completely different compilation settings for good contracts throughout varied supply units, making it simpler to handle project-specific necessities successfully.
Â