Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add preview, submit tx and tx stream APIs in Rust #95

Merged
merged 11 commits into from
Aug 30, 2022
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
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./gradlew sonarqube
local-dev-sm-docker-build:
name: Test state-manager docker build for local development
name: Test core-rust docker build for local development
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
Expand All @@ -76,8 +76,8 @@ jobs:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: ${{ runner.os }}-gradle
- name: Run local state-manager docker build
run: ./gradlew :state-manager:buildRustForDocker
- name: Run local core-rust docker build
run: ./gradlew :core-rust:buildRustForDocker
steadystate-integration:
name: Steady state integration tests
runs-on: babylon-runner
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -182,12 +182,12 @@ allprojects {
tasks.withType(Test) {
systemProperty "file.encoding", "UTF-8"
jvmArgs("--enable-preview")
systemProperty "java.library.path", "${project(':state-manager').projectDir}/target/debug"
systemProperty "java.library.path", "${project(':core-rust').projectDir}/target/debug"
}
}

subprojects {
if (project.name == "state-manager") {
if (project.name == "core-rust") {
// The below is suitable for a java project, not for a rust project
return
}
Expand Down
4 changes: 2 additions & 2 deletions cli-tools/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ task getClassPathForRadixShell {

task getNativeLibPathForRadixShell {
doLast {
print "${project(':state-manager').projectDir}/target/debug/"
print "${project(':core-rust').projectDir}/target/debug/"
}
}

Expand Down Expand Up @@ -249,7 +249,7 @@ task runAllIntegrationTests(type: Test) {

task runP2pTests(type: JavaExec) {
classpath = sourceSets.p2pTest.runtimeClasspath
systemProperty "java.library.path", "${project(':state-manager').projectDir}/target/debug/"
systemProperty "java.library.path", "${project(':core-rust').projectDir}/target/debug/"
main = "com.radixdlt.p2ptest.LargeMessageTest"

}
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,11 @@ compileJava {
// This prevents it being output by the jobs EG generateDevUniverse run in quiet mode. Hence, lifecycle.
// Side note: The method of using stdout for generateDevUniverse and friends should really be changed.
if (System.getenv("SKIP_NATIVE_RUST_BUILD") == "TRUE") {
logger.lifecycle("As SKIP_NATIVE_RUST_BUILD=TRUE, the native state-manager rust build is being skipped at this point.")
logger.lifecycle("As SKIP_NATIVE_RUST_BUILD=TRUE, the native core-rust build is being skipped at this point.")
} else {
logger.lifecycle("A native debug rust build required for the node to run natively will be run.")
logger.lifecycle("This can be skipped with SKIP_NATIVE_RUST_BUILD=TRUE, if the rust is being built separately.")
dependsOn(":state-manager:buildRustDebug")
dependsOn(":core-rust:buildRustDebug")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,4 +88,5 @@ public static NetworkDefinition from(Network network) {

public static NetworkDefinition LOCAL_SIMULATOR = NetworkDefinition.from(Network.LOCALSIMULATOR);
public static NetworkDefinition INT_TEST_NET = NetworkDefinition.from(Network.INTEGRATIONTESTNET);
public static NetworkDefinition LOCALNET = NetworkDefinition.from(Network.LOCALNET);
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,6 @@
import com.radixdlt.sbor.codec.CodecMap;
import com.radixdlt.sbor.codec.StructCodec;
import com.radixdlt.statecomputer.commit.CommitRequest;
import com.radixdlt.statecomputer.preview.FeeSummary;
import com.radixdlt.statecomputer.preview.PreviewError;
import com.radixdlt.statecomputer.preview.PreviewFlags;
import com.radixdlt.statecomputer.preview.PreviewRequest;
import com.radixdlt.statecomputer.preview.PreviewResult;
import com.radixdlt.statemanager.CoreApiServerConfig;
import com.radixdlt.statemanager.REv2DatabaseConfig;
import com.radixdlt.statemanager.StateManagerConfig;
Expand Down Expand Up @@ -124,17 +119,12 @@ public static void registerCodecsWithCodecMap(CodecMap codecMap) {
NetworkDefinition.registerCodec(codecMap);
StateManagerConfig.registerCodec(codecMap);
RawTransaction.registerCodec(codecMap);
PreviewFlags.registerCodec(codecMap);
PreviewRequest.registerCodec(codecMap);
PreviewResult.registerCodec(codecMap);
PreviewError.registerCodec(codecMap);
TransactionStatus.registerCodec(codecMap);
Decimal.registerCodec(codecMap);
LogLevel.registerCodec(codecMap);
ComponentAddress.registerCodec(codecMap);
PackageAddress.registerCodec(codecMap);
ResourceAddress.registerCodec(codecMap);
FeeSummary.registerCodec(codecMap);
TID.registerCodec(codecMap);
StateManagerRuntimeError.registerCodec(codecMap);
MempoolError.registerCodec(codecMap);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,6 @@
import com.radixdlt.rev2.Decimal;
import com.radixdlt.sbor.NativeCalls;
import com.radixdlt.statecomputer.commit.CommitRequest;
import com.radixdlt.statecomputer.preview.PreviewError;
import com.radixdlt.statecomputer.preview.PreviewRequest;
import com.radixdlt.statecomputer.preview.PreviewResult;
import com.radixdlt.statemanager.StateManager;
import com.radixdlt.transaction.REv2TransactionAndProofStore;
import com.radixdlt.transactions.RawTransaction;
Expand All @@ -93,9 +90,6 @@ public RustStateComputer(StateManager stateManager) {
verifyFunc =
NativeCalls.Func1.with(
stateManager, new TypeToken<>() {}, new TypeToken<>() {}, RustStateComputer::verify);
previewFunc =
NativeCalls.Func1.with(
stateManager, new TypeToken<>() {}, new TypeToken<>() {}, RustStateComputer::preview);
commitFunc =
NativeCalls.Func1.with(
stateManager, new TypeToken<>() {}, new TypeToken<>() {}, RustStateComputer::commit);
Expand Down Expand Up @@ -136,19 +130,10 @@ public Result<Unit, String> verify(RawTransaction transaction) {
return verifyFunc.call(transaction);
}

public Result<PreviewResult, PreviewError> preview(PreviewRequest previewRequest) {
return previewFunc.call(previewRequest);
}

private final NativeCalls.Func1<StateManager, RawTransaction, Result<Unit, String>> verifyFunc;

private static native byte[] verify(StateManager stateManager, byte[] payload);

private final NativeCalls.Func1<StateManager, PreviewRequest, Result<PreviewResult, PreviewError>>
previewFunc;

private static native byte[] preview(StateManager stateManager, byte[] payload);

private final NativeCalls.Func1<StateManager, CommitRequest, Unit> commitFunc;

private static native byte[] commit(StateManager stateManager, byte[] payload);
Expand Down
1 change: 1 addition & 0 deletions state-manager/Cargo.lock → core-rust/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

File renamed without changes.
4 changes: 2 additions & 2 deletions state-manager/build.gradle → core-rust/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ task buildRustForDocker(type: Exec) {
ignoreExitValue true
if (project.hasProperty('ci')){
workingDir rootProject.projectDir
def outputDir="state-manager/target/$target"
def outputDir="core-rust/target/$target"
def rustBuilderRepo = "eu.gcr.io/dev-container-repo/rust-builder-base"
def rustCacheRepo = "eu.gcr.io/dev-container-repo/rust-cache-packages"
def cacheTag = project.properties['cacheBranch'] ?: "latest"
Expand All @@ -135,7 +135,7 @@ task buildRustForDocker(type: Exec) {
docker build -f docker/rust-builder/Dockerfile \\
--target=artifact --build-arg TARGET=$target --build-arg BUILDKIT_INLINE_CACHE=1 \\
--cache-from=$rustBuilderRepo:$cacheTag --cache-from=$rustCacheRepo:$cacheTag \\
--output type=local,dest=state-manager/target/$target/${project.property("rustBinaryBuildType")}/ .
--output type=local,dest=core-rust/target/$target/${project.property("rustBinaryBuildType")}/ .
docker push $rustBuilderRepo:$cacheTag || true
docker push $rustCacheRepo:$cacheTag || true
[ -f $outputDir/${project.property("rustBinaryBuildType")}/libcorerust.so ]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,4 @@ serde_ignored = "0.1.1"
url = "2.1"
lazy_static = "1.4"
regex = "1.3"
hex = { version = "0.4.3", default-features = false }
Loading