5afe / bivrost-kotlin Goto Github PK
View Code? Open in Web Editor NEW๐ฅ ๐ Bridge between Solidity Contracts and Kotlin
License: Apache License 2.0
๐ฅ ๐ Bridge between Solidity Contracts and Kotlin
License: Apache License 2.0
We should be able to apply the abi as a gradle plugin to any project
Each solidity type should also have a way to access the raw/native value (Java/Kotlin type)
@rmeissner commented on Mon Dec 09 2019
It should be possible to use encodePacked with Types
Code generated by bivrost-kotlin should also compile on Android
I'm getting Unresolved reference: intValueExact
compilation error for code generated based on a particular contract.
The generated code seems to be using the new stuff about encoding dynamic types.
I created an example project that is seeing this behavior.
It's a basic Android app project that uses bivrost to generate code from an ABI also in the repo:
https://github.com/mirceanis/bivrost-kotlin-eval
It seems there's no intValueExact
method on the BigInteger
class on Android.
Generating code for a contract compiled with a recent version of truffle should work.
in v0.6.2, code generation fails with:
Required value contractName missing at $
Looks like abi generated by truffle is adding a field called "contractName" and the parser expects to see "contract_name".
The workaround is to manually change the field name in the abi json.
There is a feature/update_json
branch that seems to fix this, and is already in master.
Is it possible to have a 0.7.x
release with recent fixes including this?
Comparing different Bytes
and BytesN
based on their values, not reference. Right now we need to access their contents for comparison.
Comparing these classes will compare the references which is not really useful for most use cases. We should implement the equals()
and hashCode()
methods in order to easily compare their values.
Currently the build process relies on Travis. As Gnosis has moved to GitHub action this project should also be migrated.
GITHUB_API_KEY
usage as it will be deleted beginning of JulyCombine multiple rpc calls:
[{
"method": "eth_estimateGas",
"params": ["0xa5056c8efadb5d6a1a6eb0176615692b6e648313"],
"jsonrpc":"2.0",
"id": 42
},{
"method": "eth_gasPrice",
"params": [],
"jsonrpc":"2.0",
"id": 45
},{
"method": "eth_getTransactionCount",
"params": [
"0xa5056c8efadb5d6a1a6eb0176615692b6e648313",
"latest"
],
"jsonrpc": "3.0",
"id": "dkhfgs"
}]
variantOutput.getProcessResources()
has been deprecated and should be replaced with variantOutput.getProcessResourcesProvider()
.
Warnings show pm.gnosis.plugin.BivrostPlugin$configureCodeGeneration$1.execute(BivrostPlugin.kt:13)
as the location of the call
Check if the return is not malformed. Throw an exception if it is (ie.: the condition in the title doesn't hold)
currently it depends on the android gradle plugin and is tightly coupled to android. This plugin might also be useful outside the android scope. So it would be great if the android dependency could be dropped or optional.
Some abi encoder encode empty bytes as
0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
(length = 0 and an 0-bytes body)
bivrost is expecting 0x0000000000000000000000000000000000000000000000000000000000000000
we make use of this assumption when decoding tuples. Therefore we will have unexpected results if we try to decode tuples that contain the "padded" encoding.
The solution would be to parse the position of each dynamic type and jump to that position for decoding.
It would be really useful to be able to create deployment transactions. For this the deployment code (init code) is required and it should be possible to encode the constructor data.
Another useful feature would be to decode constructor data, so that deployment transactions can be analysed.
As this are potentially large strings that are copied into code it should be possible to deactivate this as a compiler flag (or even better specify the contracts that should include their deployment data)
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.