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

Release/v0.1.0 #255

Merged
merged 7 commits into from
Oct 16, 2024
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
37 changes: 0 additions & 37 deletions .github/workflows/cosmwasm-release.yml

This file was deleted.

24 changes: 12 additions & 12 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -125,20 +125,20 @@ mc-sgx-dcap-sys-types = { version = "0.11.0", default-features = false }
mc-attestation-verifier = { version = "0.4.3", default-features = false }

# quartz
quartz-cw-proof = { path = "crates/enclave/cw-proof", default-features = false }
quartz-common = { path = "crates/common", default-features = false }
quartz-contract-core = { path = "crates/contracts/core", default-features = false }
quartz-dcap-verifier-msgs = { path = "crates/contracts/dcap-verifier/msgs", default-features = false }
quartz-enclave-core = { path = "crates/enclave/core", default-features = false }
quartz-proto = { path = "crates/enclave/proto", default-features = false }
quartz-tee-ra = { path = "crates/contracts/tee-ra", default-features = false }
quartz-tcbinfo = { path = "crates/contracts/tcbinfo", default-features = false, features = [
quartz-cw-proof = { version = "0.1.0", path = "crates/enclave/cw-proof", default-features = false }
quartz-common = { version = "0.1.0", path = "crates/common", default-features = false }
quartz-contract-core = { version = "0.1.0", path = "crates/contracts/core", default-features = false }
quartz-dcap-verifier-msgs = { version = "0.1.0", path = "crates/contracts/dcap-verifier/msgs", default-features = false }
quartz-enclave-core = { version = "0.1.0", path = "crates/enclave/core", default-features = false }
quartz-proto = { version = "0.1.0", path = "crates/enclave/proto", default-features = false }
quartz-tee-ra = { version = "0.1.0", path = "crates/contracts/tee-ra", default-features = false }
quartz-tcbinfo = { version = "0.1.0", path = "crates/contracts/tcbinfo", default-features = false, features = [
"library",
] }
quartz-tcbinfo-msgs = { path = "crates/contracts/tcbinfo/msgs", default-features = false }
quartz-tm-prover = { path = "crates/utils/tm-prover", default-features = false }
quartz-tm-stateless-verifier = { path = "crates/enclave/tm-stateless-verifier", default-features = false }
cw-client = { path = "crates/utils/cw-client", default-features = false }
quartz-tcbinfo-msgs = { version = "0.1.0", path = "crates/contracts/tcbinfo/msgs", default-features = false }
quartz-tm-prover = { version = "0.1.0", path = "crates/utils/tm-prover", default-features = false }
quartz-tm-stateless-verifier = { version = "0.1.0", path = "crates/enclave/tm-stateless-verifier", default-features = false }
cw-client = { version = "0.1.0", path = "crates/utils/cw-client", default-features = false }

[profile.release]
opt-level = "z"
Expand Down
1 change: 1 addition & 0 deletions crates/contracts/dcap-verifier/msgs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ homepage.workspace = true
keywords = ["cosmos", "cosmwasm", "cycles", "quartz", "sgx"]
readme = "README.md"
description = """
Message and query definitions for the quartz-dcap-verifier contract
"""

[dependencies]
Expand Down
3 changes: 3 additions & 0 deletions crates/contracts/dcap-verifier/msgs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# quartz-dcap-verifier-msgs

Message and query definitions for the quartz-dcap-verifier contract
1 change: 1 addition & 0 deletions crates/contracts/tcbinfo/msgs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ homepage.workspace = true
keywords = ["cosmos", "cosmwasm", "cycles", "quartz", "sgx"]
readme = "README.md"
description = """
Message and query definitions for the quartz-tcbinfo contract
"""

[dependencies]
Expand Down
3 changes: 3 additions & 0 deletions crates/contracts/tcbinfo/msgs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# quartz-tcbinfo-msgs

Message and query definitions for the quartz-tcbinfo contract
3 changes: 3 additions & 0 deletions crates/enclave/cw-proof/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# quartz-cw-proof

Merkle proofs of CosmWasm contract state. This crate contains proof types and a verifier implementation.
3 changes: 3 additions & 0 deletions crates/enclave/proto/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# quartz-proto

Protobuf types defining the Quartz handshake to initialize connection between a smart contract and trusted execution environment.
3 changes: 3 additions & 0 deletions crates/enclave/tm-stateless-verifier/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# quartz-tm-stateless-verifier

Stateless verification of a tendermint light client proof.
3 changes: 3 additions & 0 deletions crates/utils/print-fmspc/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# quartz-print-fmspc

Convenience tool to print the FMSPC (Family-Model-Stepping-Platform-Custom) of the local SGX processor.
78 changes: 78 additions & 0 deletions release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#!/bin/bash

# release.sh will hopefully allow us to publish all of the necessary crates in
# this repo in the right order. It is assumed that only one person will be
# releasing all crates at the same time.
#
# It has a default set of crates it will publish, which can be overridden by
# way of command line arguments:
#
# # Release all packages, prompting for each package as to whether to publish
# ./scripts/release.sh
#
# # Just release a single crate, but nothing else
# ./scripts/release.sh <crate>

set -e

# A space-separated list of all the crates we want to publish, in the order in
# which they must be published. It's important to respect this order, since
# each subsequent crate depends on one or more of the preceding ones.
DEFAULT_CRATES="cw-client quartz-dcap-verifier-msgs quartz-tcbinfo-msgs quartz-tee-ra quartz-contract-core quartz-cw-proof quartz-proto quartz-tm-stateless-verifier quartz-enclave-core quartz-common quartz-tm-prover quartz-print-fmspc quartz-dcap-verifier quartz-tcbinfo quartz-rs"

# Allows us to override the crates we want to publish.
CRATES=${*:-${DEFAULT_CRATES}}

get_manifest_path() {
cargo metadata --format-version 1 | jq -r '.packages[]|select(.name == "'"${1}"'")|.manifest_path'
}

get_local_version() {
cargo metadata --format-version 1 | jq -r '.packages[]|select(.name == "'"${1}"'")|.version'
}

check_version_online() {
curl -s "https://crates.io/api/v1/crates/${1}" | jq -r '.versions[]|select(.num == "'"${2}"'").updated_at'
}

publish() {
echo "Publishing crate $1..."
cargo publish --manifest-path "$(get_manifest_path "${1}")"
echo ""
}

wait_until_available() {
echo "Waiting for crate ${1} to become available via crates.io..."
for retry in {1..5}; do
sleep 5
ONLINE_DATE="$(check_version_online "${1}" "${2}")"
if [ -n "${ONLINE_DATE}" ]; then
echo "Crate ${crate} is now available online"
break
else
if [ "${retry}" == 5 ]; then
echo "ERROR: Crate should have become available by now"
exit 1
else
echo "Not available just yet. Waiting a few seconds..."
fi
fi
done
echo "Waiting an additional 10 seconds for crate to propagate through CDN..."
sleep 10
}

echo "Attempting to publish crate(s): ${CRATES}"

for crate in ${CRATES}; do
VERSION="$(get_local_version "${crate}")"
ONLINE_DATE="$(check_version_online "${crate}" "${VERSION}")"
echo "${crate} version number: ${VERSION}"
if [ -n "${ONLINE_DATE}" ]; then
echo "${crate} ${VERSION} has already been published at ${ONLINE_DATE}, skipping"
continue
fi

publish "${crate}"
wait_until_available "${crate}" "${VERSION}"
done
Loading