I found that ledger canister has some interfaces that use protobuf for canister interface:
I guess this is done for efficiency.
But currently dfx and motoko canister only support candid-based interface calls, and cannot call this protobuf-based interface:
The Replica returned an error: code 4, message: "IC0503: Canister ryjl3-tyaaa-aaaaa-aaaba-cai trapped explicitly: Panicked at 'Deserialization Failed: "failed to decode Protobuf message: unexpected end group tag"', /home/peter/ic/rs/rust_canisters/dfn_core/src/endpoint.rs:34:41"