Hi, I am working on a project where I want to use the actor model on the Internet Computer. I know how to create Motoko source canisters and how to address them from a browser and from dfx. I also know how to call functions from a canister from another canister(within same dfx project). However, I need (1) to send send actor messages between canisters and (2) from an Arm powered device (in Linux). I do not find how to do that from the available documentation.
Does/will Motoko allow message sending/receiving between canisters? (canisters compiled from different dfx projects)
With dfx running on Arm, I could do (2) . Is there any plan on porting dfx to Arm?Any other solution?
I would really appreciate some help on this subject.
To call canisters outside of your project you’ll need to create an actor instance that has a signature matching the interface of the canister method you’re calling, for a simple Motoko example see here: How to use "cowsay" project in my project? - #2 by Ori
To call canisters from other devices, you can use an agent library for the language you’re writing the application in, eg the rust agent library here: https://github.com/dfinity/agent-rs/tree/main/ic-agent
With either of these approaches you can call any deployed canister, no matter the project that built it or language used to write it. All you need to know is its canister id and interface description/signature. For mainnet deployed canisters you can find these on sites like Canlista (eg Canlista - reversi-game - iabks-raaaa-aaaab-aaafq-cai) or ic-rocks (https://ic.rocks)
Thanks Ori. I shall look into this. Unfortunately I do not know much about rust. I wonder whether there is a plan to include functionalities in Motoko. Or whether there is a plan to port dfx to Arm.
Or may be somebody is working on a python library?
already supported in Motoko, Please read this post for detail info:
Dfx don’t support arm natively now, But in Mac M1 you can use dfx though rosetta2, A trick way to run Motoko in Mac M1. I don’t know the plan.
SDK, there are Rust/Javascript SDK, no Python SDK