concordium / concordium-net-sdk Goto Github PK
View Code? Open in Web Editor NEW.NET SDK for the Concordium blockchain.
Home Page: http://developer.concordium.software/concordium-net-sdk/
License: Mozilla Public License 2.0
.NET SDK for the Concordium blockchain.
Home Page: http://developer.concordium.software/concordium-net-sdk/
License: Mozilla Public License 2.0
Task description
Implement the missing gRPC calls for managing the node.
Sub-tasks
GetPeersInfo
GetBannedPeers
PeerConnect
PeerDisconnect
BanPeer
UnbanPeer
DumbStart
DumbStop
Shutdown
Task description
Implement the missing account related gRPC queries listed below:
Sub-tasks
GetAccountNonFinalizedTransactions
GetAccountTransactionSignHash
Implement support for the new query GetBakersRewardPeriod
that will be introduced as part of the node 6.1.x release.
Task description
Implement support for GetBlockCertificates.
Task description
Implement the missing block gRPC queries listed below:
Sub-tasks
GetBlocks
GetFinalizedBlocks
GetBranches
GetAncestors
GetBlockPendingUpdates
GetBlockItems
(The return type is fairly big for this one)Since updating the configuration file to include documentation, several warnings for missing documentation and formatting are now shown during compilation.
We need to fix all the warnings and ideally have the CI build treat warnings as errors for future PRs.
Task description
Add functionality for using the smart contract schema to convert bytes to and from JSON.
This is relevant for smart contract parameters, events and return types.
Sub-tasks
Task description
Support using a smart contract schema to construct smart contract parameters, for both init
and update
transactions.
Sub-tasks
Parameter
class to construct it from a schema and JSON.Task description
Implement the missing protocol related gRPC queries listed below:
Sub-tasks
GetCryptographicParameters
GetElectionInfo
GetAnonymityRevokers
Task description
Implement the smart contract state gRPC queries listed below:
Sub-tasks
GetInstanceState
InstanceStateLookup
Task description
Support the added field containing commission rates for the current reward period.
Concordium/concordium-node#996
Description
The .NET SDK doesn’t work on docker image with Debian 11. The rust binaries for the .NET SDK are build on Ubuntu 22.04
https://github.com/Concordium/concordium-net-sdk/actions/runs/7209178248/job/19639595963
This compilation adds a dependency to libc
which is higher than 2.31. 2.31 is the highest supported version of libc
in Debian 11.
When looking at shared object dependencies of the file librust_bindings.so
inside an image using Debian 11 we have
./librust_bindings.so: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./librust_bindings.so)
./librust_bindings.so: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./librust_bindings.so)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00000040028f2000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x000000400290c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x0000004002a50000)
/lib64/ld-linux-x86-64.so.2 (0x0000004000000000)
Changing to an image using either Debian 12 or Ubuntu 22.02, then shared object dependencies reports no errors
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x0000004002901000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x0000004002921000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x0000004002a08000)
/lib64/ld-linux-x86-64.so.2 (0x0000004000000000)
After discussion with @limemloh it may be possible to have compilation with static linking using musl instead of dynamic linking using glibc.
Best long term solution would be to compile for different runtimes and OS like in this example https://nuget.info/packages/librdkafka.redist/2.3.0.
Pros and cons and best solutions however needs to be investigated.
Workaround is to bump to image using either Ubuntu 22.04 or Debian 12 (hence use either 6.0-bookworm-slim which uses Debian 12 or 6.0-jammy which uses Ubuntu 22.04 https://github.com/dotnet/dotnet-docker/blob/main/README.runtime.md#full-tag-listing)
Steps to Reproduce
Build a docker image which uses Debian 11 and trigger interop calls to rust binaries. One can do this by using image mcr.microsoft.com/dotnet/sdk:6.0
and then run the .NET SDK test suite inside the image.
The docker build fails due to test failing. Error message
System.DllNotFoundException: Unable to load shared library 'rust_bindings' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: librust_bindings: cannot open shared object file: No such file or directory
which is the same error message observed in environment which used the image and .NET SDK.
Expected Result
The .NET SDK works with default image mcr.microsoft.com/dotnet/sdk:6.0
.
Actual Result
Fails due to missing shared object dependency linking.
Versions
Task description
Implement the missing baker related gRPC queries listed below:
Sub-tasks
GetBakerList
GetPassiveDelegationInfo
GetPoolDelegators
GetPoolDelegatorsRewardPeriod
GetPassiveDelegators
GetPassiveDelegatorsRewardPeriod
Task description
Implement the gRPC call InvokeInstance
.
The new node APIs must be supported.
Task description
Implement the smart contract gRPC queries listed below. This list excludes the queries related to smart contract state, which is tracked in #67.
Queries
GetModuleList
GetInstanceList
GetModuleSource
GetInstanceInfo
The current .NET SDK is unmaintained and leverages the older GRPC API V1 served by Concordium nodes. The SDK should be rewritten to use the newer node GRPC API V2.
Task description
Add support for deploy module, initialize contract and update contract transactions. This does not include functionality for parameter serialization and deserialization with schemas, but rather just uses binary representations.
Implement
Description
The currently published nuget package supports linux x86-64, windows and mac x86-64. In particular on mac the users of the published package must use the dotnet runtime for the Intel (x86-64), otherwise they get an error about missing shared libraries.
Since apple's devices now exclusively use arm chips in new models we should also support that platform in the package.
The current workaround is for users to build their own package on the arm platform.
Versions
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.