Skip to content

Commit 49ff4ad

Browse files
ibrizsabinviveksharmapoudelredlarvaizyaknightowl121
authored
fix: release conflicts (icon-project#765)
* fix: ibc query method get consensus state by height should return any type (icon-project#727) * patch: ibc query method get consensus state by height should return any type * fix: add uniformity * feat: remove xcall multi submodule (icon-project#733) * fix: remove xcall submodule * refactor: update test execution script * fix: update documentation * feat: save write ack event height (icon-project#734) * feat: save write ack event height * chore: style fixes Signed-off-by: Night Owl <nightowl121@protonmail.com> * fix: add test case --------- Signed-off-by: Night Owl <nightowl121@protonmail.com> Co-authored-by: viveksharmapoudel <viveksharmapoudel@gmail.com> Co-authored-by: Night Owl <nightowl121@protonmail.com> * feat: test multiple packets on same height (icon-project#736) * add(test): multiple packets on same heigt * rf: simplfy recursion call * ci: remove cw_common from inside the docker container (icon-project#712) Signed-off-by: Night Owl <nightowl121@protonmail.com> * chore: exclude cosmwasm library and common file from contract deployment (icon-project#698) --------- Signed-off-by: Night Owl <nightowl121@protonmail.com> Co-authored-by: Debendra Oli <debendraoli@pm.me> Co-authored-by: Night Owl <91905208+nightowl121@users.noreply.github.com> Co-authored-by: DeepakBomjan <44976635+DeepakBomjan@users.noreply.github.com> * feat: add write ack log (icon-project#700) * feat: add write ack log * chore: pass build --------- Co-authored-by: sabinchitrakar <immortal.infidel@gmail.com> * fix: point to xcall tag (icon-project#738) * fix: point to xcall tag * fix: xcall contract build script --------- Co-authored-by: red__larva <red.x.larva@proton.me> * fix: address decoding on fee claim (icon-project#741) * fix: do not send fund to ibc core on send_call_message (icon-project#740) * fix: do not send fund to ibc host on send call message * fix: unit test --------- Co-authored-by: ibrizsabin <sabin.chitrakar@ibriz.ai> * feat: Add artifact checksum in release (icon-project#742) * chore: pass build * ci: cleanup release artifacts upload * dynamically fetch wasm version * chore: cleanup redundant steps from the workflow --------- Co-authored-by: ibrizsabin <sabin.chitrakar@ibriz.ai> * ci: fix download error (icon-project#744) * ci: revert release workflow changes (icon-project#746) * ci: debug * ci: debug * ci: revert release workflow changes * fix: call update admin (icon-project#751) * fix: call-update-admin * chore: pass build * ci: update release build tag format (icon-project#758) ci: trigger release action on any tag format and enable release * fix: merge release (icon-project#759) * ci: remove cw_common from inside the docker container (icon-project#712) Signed-off-by: Night Owl <nightowl121@protonmail.com> * feat: cw-mock-ibc-connection added (icon-project#711) * feat/cw-mock-ibc-connection added * feat: mock xcall connection added * fix: cargo lints fixes * fix: mock xcall connection functionality reduced * fix: cargo lints fixes * chore: exclude cosmwasm library and common file from contract deployment (icon-project#698) * fix: fee check added in sendMessage (icon-project#684) * fix: funds compare issue * fix: fee check added in sendMessage * style: caro lints fixes * feat: unit test for funds in send message added * chore: cargo lints fixes * fix: funds compare issue * fix: fee check added in sendMessage * style: caro lints fixes * feat: unit test for funds in send message added * chore: cargo lints fixes * fix: bug fixed in send message funds test * fix: cargo lints fixes * fix: owner check removed in addAdmin in xcall-mock-connection (icon-project#715) * fix: admin and owner state changed to Addr, and corresponding tests fixed (icon-project#687) * admin and owner state changed to Addr, and corresponding tests fixed * style: caro lints fixes * Revert "style: caro lints fixes" This reverts commit 755c628. * fix: cargo lints fixes --------- Co-authored-by: ibrizsabin <101165234+ibrizsabin@users.noreply.github.com> * fix: remove_admin and update_owner, update_admin are removed (icon-project#692) * fix: remove_admin and update_owner is removed, and created a method for update_admin * fix: transfer admin removed and add_admin updated * fix: transfer admin removed and add_admin updated * fix: add_owner_unauthorized removed * ci: add terraform deployment script (icon-project#750) * ci: add terraform deployment script * ci: update instance tag value * ci: fix goloop command not found by adding goloop bin path in sudo secure path * ci: cleanup deployment script * ci: restrict keystore directory * ci: update permission * ci: make secret files inaccessable to other users (icon-project#753) * ci: make secret files inaccessable to other users * ci: fix permission * ci: fix typo (icon-project#756) * fix: update admin tests * chore: pass build --------- Signed-off-by: Night Owl <nightowl121@protonmail.com> Co-authored-by: Night Owl <91905208+nightowl121@users.noreply.github.com> Co-authored-by: gcranju <134275268+gcranju@users.noreply.github.com> Co-authored-by: DeepakBomjan <44976635+DeepakBomjan@users.noreply.github.com> --------- Signed-off-by: Night Owl <nightowl121@protonmail.com> Co-authored-by: viveksharmapoudel <viveksharmapoudel@gmail.com> Co-authored-by: redlarva <91685111+redlarva@users.noreply.github.com> Co-authored-by: izyak <76203436+izyak@users.noreply.github.com> Co-authored-by: Night Owl <nightowl121@protonmail.com> Co-authored-by: Debendra Oli <debendraoli@pm.me> Co-authored-by: Night Owl <91905208+nightowl121@users.noreply.github.com> Co-authored-by: DeepakBomjan <44976635+DeepakBomjan@users.noreply.github.com> Co-authored-by: sabinchitrakar <immortal.infidel@gmail.com> Co-authored-by: red__larva <red.x.larva@proton.me> Co-authored-by: gcranju <134275268+gcranju@users.noreply.github.com>
1 parent a941a99 commit 49ff4ad

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+568
-232
lines changed

.github/workflows/release.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Pre-release
22
on:
33
push:
44
tags:
5-
- 'v*.*.*-alpha.*'
5+
- '*'
66
permissions:
77
contents: write
88
packages: write
@@ -105,7 +105,7 @@ jobs:
105105
body: |
106106
${{ steps.Changelog.outputs.changelog }}
107107
draft: false
108-
prerelease: true
108+
prerelease: false
109109

110110
- name: Upload Javascore contracts to release
111111
uses: svenstaro/upload-release-action@v2

.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -200,4 +200,6 @@ lcov.info
200200
vendor/**
201201
scripts/download_buf.sh
202202

203-
test/e2e-demo/ibc-config/**
203+
test/e2e-demo/ibc-config/**
204+
205+
.xcall-multi

.gitmodules

-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
11
[submodule "contracts/javascore/gochain-btp"]
22
path = contracts/javascore/gochain-btp
33
url = https://github.com/izyak/gochain-btp.git
4-
5-
[submodule "xcall-multi"]
6-
path = xcall-multi
7-
url = https://github.com/icon-project/xcall-multi.git
8-
branch = main
9-

Cargo.lock

+47-13
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+4-4
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ cosmwasm-storage = "1.2.2"
1818
cosmwasm-schema = "1.2.2"
1919
schemars = "0.8.12"
2020
cw-storage-plus = {git="https://github.com/icon-project/cw-storage-plus.git", branch="fix-raw"}
21-
cw-xcall-lib={package="cw-xcall-lib", git="https://github.com/icon-project/xCall.git", branch="main"}
22-
cw-xcall = {package="cw-xcall", git="https://github.com/icon-project/xCall.git", branch="main"}
23-
cw-mock-dapp = { git="https://github.com/icon-project/xCall.git", branch="main" }
24-
cw-mock-dapp-multi = { git="https://github.com/icon-project/xCall.git", branch="main" }
21+
cw-xcall-lib={package="cw-xcall-lib", git="https://github.com/icon-project/xCall.git", tag="v0.1.0-alpha.5"}
22+
cw-xcall = {package="cw-xcall", git="https://github.com/icon-project/xCall.git", tag="v0.1.0-alpha.5"}
23+
cw-mock-dapp = { git="https://github.com/icon-project/xCall.git", tag="v0.1.0-alpha.5" }
24+
cw-mock-dapp-multi = { git="https://github.com/icon-project/xCall.git", tag="v0.1.0-alpha.5" }
2525
cw2 = "1.0.1"
2626

2727
ibc-proto = { version = "0.26.0", default-features = false}

Makefile

+7-7
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
DOCKER := $(shell which docker)
33
DOCKER_BUF := $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace bufbuild/buf:1.9.0
44
PROJECT_NAME = $(shell git remote get-url origin | xargs basename -s .git)
5-
5+
BRANCH ?= "main"
66
export GO111MODULE = on
77

88

@@ -44,20 +44,20 @@ build-builder-img:
4444

4545
optimize-jar:
4646
@echo "Generating optimized jar for ICON contracts"
47-
@if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerBuilder}-icon$$"; then docker start -a "${containerBuilder}-icon" ; else docker run --name "${containerBuilder}-icon" -v $(CURDIR):/workspace --workdir /workspace $(builderImage) sh ./scripts/optimize-jar.sh; fi
47+
@if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerBuilder}-icon$$"; then docker start -a "${containerBuilder}-icon" ; else docker run --name "${containerBuilder}-icon" -v $(CURDIR):/workspace --workdir /workspace $(builderImage) bash ./scripts/optimize-jar.sh; fi
4848

4949
optimize-cosmwasm:
5050
@echo "Generating optimized cosmwasm for Archway contracts"
51-
@if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerBuilder}-cosmwasm$$"; then docker start -a "${containerBuilder}-cosmwasm" ; else docker run --name "${containerBuilder}-cosmwasm" -v $(CURDIR):/workspace --workdir /workspace $(builderImage) sh ./scripts/optimize-cosmwasm.sh; fi
51+
@if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerBuilder}-cosmwasm$$"; then docker start -a "${containerBuilder}-cosmwasm" ; else docker run --name "${containerBuilder}-cosmwasm" -v $(CURDIR):/workspace --workdir /workspace $(builderImage) bash ./scripts/optimize-cosmwasm.sh; fi
5252

5353
optimize-xcall:
54-
@echo "Generating optimized xcall cosmwasm for Archway contracts"
55-
@if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerBuilder}-xcall$$"; then docker start -a "${containerBuilder}-xcall" ; else docker run --name "${containerBuilder}-xcall" -v $(CURDIR):/workspace --workdir /workspace $(builderImage) sh ./scripts/build-xcall.sh; fi
54+
@echo "Generating optimized xcall contracts ..."
55+
@if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerBuilder}-xcall$$"; then docker start -a "${containerBuilder}-xcall" ; else docker run --name "${containerBuilder}-xcall" -v $(CURDIR):/workspace --workdir /workspace $(builderImage) bash ./scripts/optimize-xcall-build.sh build $(BRANCH); fi
5656

5757

5858
optimize-build:
5959
@echo "Generating optimized contracts..."
60-
@if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerBuilder}$$"; then docker start -a ${containerBuilder}; else docker run --name $(containerBuilder) -v $(CURDIR):/workspace --workdir /workspace $(builderImage) sh ./scripts/optimize-build.sh; fi
60+
@if docker ps -a --format '{{.Names}}' | grep -Eq "^${containerBuilder}$$"; then docker start -a ${containerBuilder}; else docker run --name $(containerBuilder) -v $(CURDIR):/workspace --workdir /workspace $(builderImage) bash ./scripts/optimize-build.sh build; fi
6161

6262
gobuild:
6363
go build .
@@ -75,4 +75,4 @@ e2e-demo-clean:
7575
go test -v ./test/e2e-demo -testify.m TestCleanup
7676

7777

78-
.PHONY: proto-all proto-gen proto-gen-any proto-swagger-gen proto-format proto-lint proto-check-breaking proto-update-deps gobuild
78+
.PHONY: proto-all proto-gen proto-gen-any proto-swagger-gen proto-format proto-lint proto-check-breaking proto-update-deps gobuild optimize-build optimize-xcall e2e-demo-setup e2e-demo-clean

contracts/cosmwasm-vm/cw-common/src/core_msg.rs

+7
Original file line numberDiff line numberDiff line change
@@ -207,4 +207,11 @@ pub enum QueryMsg {
207207
},
208208
#[returns(Vec<u64>)]
209209
GetPreviousConsensusStateHeight { client_id: String, height: u64 },
210+
#[returns(HashMap<u64,u64>)]
211+
GetAckHeights {
212+
port_id: String,
213+
channel_id: String,
214+
start_sequence: u64,
215+
end_sequence: u64,
216+
},
210217
}

contracts/cosmwasm-vm/cw-ibc-core/src/context.rs

+14
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,20 @@ impl<'a> CwIbcCoreContext<'a> {
9797
return self.ibc_store().callback_data().remove(store, id);
9898
}
9999

100+
pub fn store_write_ack(
101+
&self,
102+
store: &mut dyn Storage,
103+
port_id: &PortId,
104+
channel_id: &ChannelId,
105+
seq: u64,
106+
height: u64,
107+
) -> Result<(), ContractError> {
108+
self.ibc_store()
109+
.write_acks()
110+
.save(store, (port_id, channel_id, seq), &height)
111+
.map_err(ContractError::Std)
112+
}
113+
100114
pub fn get_callback_data<T: DeserializeOwned>(
101115
&self,
102116
store: &dyn Storage,

contracts/cosmwasm-vm/cw-ibc-core/src/contract.rs

+24-4
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ impl<'a> CwIbcCoreContext<'a> {
234234
} => {
235235
cw_println!(deps, "[IBCCore] Write Acknowledgement Called");
236236
let ack = acknowledgement.to_bytes()?;
237-
self.write_acknowledgement(deps, info, packet, ack)
237+
self.write_acknowledgement(deps, info, &env, packet, ack)
238238
}
239239
}
240240
// Ok(Response::new())
@@ -290,10 +290,10 @@ impl<'a> CwIbcCoreContext<'a> {
290290
let client_val = IbcClientId::from_str(&client_id).unwrap();
291291
let client = self.get_light_client(deps.storage, &client_val).unwrap();
292292
let res = client
293-
.get_consensus_state(deps, &client_val, height)
293+
.get_consensus_state_any(deps, &client_val, height)
294294
.unwrap();
295-
let state = res.as_bytes();
296-
to_binary(&hex::encode(state))
295+
296+
to_binary(&hex::encode(res.encode_to_vec()))
297297
}
298298
QueryMsg::GetClientState { client_id } => {
299299
let res = self
@@ -475,6 +475,26 @@ impl<'a> CwIbcCoreContext<'a> {
475475
.unwrap();
476476
to_binary(&heights)
477477
}
478+
QueryMsg::GetAckHeights {
479+
port_id,
480+
channel_id,
481+
start_sequence,
482+
end_sequence,
483+
} => {
484+
let port_id = IbcPortId::from_str(&port_id).unwrap();
485+
let channel_id = IbcChannelId::from_str(&channel_id).unwrap();
486+
let heights = self
487+
.ibc_store()
488+
.get_ack_heights(
489+
deps.storage,
490+
&port_id,
491+
&channel_id,
492+
start_sequence,
493+
end_sequence,
494+
)
495+
.unwrap();
496+
to_binary(&heights)
497+
}
478498

479499
QueryMsg::GetMissingPacketReceipts {
480500
port_id,

contracts/cosmwasm-vm/cw-ibc-core/src/ics04_channel/packet/write_acknowledgement.rs

+3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ impl<'a> CwIbcCoreContext<'a> {
1515
&self,
1616
deps: DepsMut,
1717
info: MessageInfo,
18+
env: &Env,
1819
packet: CwPacket,
1920
ack: Vec<u8>,
2021
) -> Result<Response, ContractError> {
@@ -47,6 +48,8 @@ impl<'a> CwIbcCoreContext<'a> {
4748
Sequence::from(seq),
4849
AcknowledgementCommitment::from(ack_commitment),
4950
)?;
51+
let height = env.block.height;
52+
self.store_write_ack(deps.storage, &ibc_port, &ibc_channel, seq, height)?;
5053

5154
let event = create_packet_event(
5255
IbcEventType::WriteAck,

contracts/cosmwasm-vm/cw-ibc-core/src/state.rs

+28
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ pub struct CwIbcStore<'a> {
116116
// Stores data by replyid to be used later on reply from cross contract call
117117
callback_data: Map<'a, u64, Vec<u8>>,
118118
sent_packets: Map<'a, (&'a PortId, &'a ChannelId, u64), u64>,
119+
write_acks: Map<'a, (&'a PortId, &'a ChannelId, u64), u64>,
119120
}
120121

121122
impl<'a> Default for CwIbcStore<'a> {
@@ -147,6 +148,7 @@ impl<'a> CwIbcStore<'a> {
147148
last_processed_on: Map::new(StorageKey::LastProcessedOn.as_str()),
148149
callback_data: Map::new(StorageKey::CallbackData.as_str()),
149150
sent_packets: Map::new(StorageKey::SentPackets.as_str()),
151+
write_acks: Map::new(StorageKey::WriteAcks.as_str()),
150152
}
151153
}
152154
pub fn client_registry(&self) -> &Map<'a, IbcClientType, String> {
@@ -214,6 +216,10 @@ impl<'a> CwIbcStore<'a> {
214216
&self.sent_packets
215217
}
216218

219+
pub fn write_acks(&self) -> &Map<'a, (&'a PortId, &'a ChannelId, u64), u64> {
220+
&self.write_acks
221+
}
222+
217223
pub fn clear_storage(&self, store: &mut dyn Storage) {
218224
let keys: Vec<_> = store
219225
.range(None, None, Order::Ascending)
@@ -290,6 +296,28 @@ impl<'a> CwIbcStore<'a> {
290296
Ok(missing)
291297
}
292298

299+
pub fn get_ack_heights(
300+
&self,
301+
store: &dyn Storage,
302+
port_id: &PortId,
303+
channel_id: &ChannelId,
304+
start_seq: u64,
305+
end_seq: u64,
306+
) -> Result<HashMap<u64, u64>, ContractError> {
307+
let min_key = (port_id, channel_id, start_seq);
308+
let max_key = (port_id, channel_id, end_seq);
309+
let min_bound = Bound::Inclusive::<(&PortId, &ChannelId, u64)>((min_key, PhantomData));
310+
let max_bound = Bound::Inclusive::<(&PortId, &ChannelId, u64)>((max_key, PhantomData));
311+
312+
let result: HashMap<u64, u64> = self
313+
.write_acks
314+
.range(store, Some(min_bound), Some(max_bound), Order::Ascending)
315+
.filter_map(|p| p.ok().map(|r| (r.0 .2, r.1)))
316+
.collect();
317+
318+
Ok(result)
319+
}
320+
293321
pub fn save_commitment(
294322
&self,
295323
store: &mut dyn Storage,

0 commit comments

Comments
 (0)