Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Setup APIs to connect to Ethereum smart contracts #2

Merged
merged 2 commits into from
May 18, 2020

Conversation

ltfschoen
Copy link

@ltfschoen ltfschoen commented May 13, 2020

The API endpoints are as follows. Outstanding actions are the unchecked bulletpoints.

Substrate API endpoints are already included in lib/service/substrateApi

  • Use these to query how many DHX tokens the user has staked to determine the MSB to show in the Mining tabs 'Rewards' section. See Polkadot.js API documentation https://polkadot.js.org/api

Ethereum API endpoints are included within subdirectories of lib/service/ethereumApi.

  • The lib/service/ethereumApi/api.dart file is used to connect to the Ethereum network via Infura (to try it out you'll need to setup an Infura account and add your own project id in the .env file).

    • connectToWeb3EthereumClient (see comments in the file for details)
  • The lib/service/ethereumApi/apiAccount.dart file is used to fetch a sample Ethereum address' private key from the dotenv file.

    • getOwnAddress
  • Since we're only querying the user's Ethereum account information from the Ethereum blockchain, we only need their Ethereum public key address, so we want the user to be able to add their Ethereum public key address in the app's settings, or just scan their address to import it using a QR scanner.

  • The lib/service/ethereumApi/apiAssetsMXC.dart file is used to query a sample user account's MXC token balance from the Ethereum mainnet.

    • getAccountBalanceFromMXCContract // Get an account balance of MXC tokens on the Ethereum network
  • The lib/service/ethereumApi/apiAssetsIOTAPegged.dart file is used to query a sample user account's IOTA Pegged token balance from the IOTA Pegged smart contract (DataHighwayMiningIOTAPeggedContract) that we'll deploy on the Ethereum network. The ABI of that smart contract should be copy/pasted into assets/data/abi_datahighway_iota_pegged_mining_mainnet.json

    • getAccountBalanceIOTAPeggedFromDataHighwayMiningIOTAPeggedContract
  • The lib/service/ethereumApi/apiAssetsMiningIOTAPegged.dart file is used to query the DataHighwayMiningIOTAPeggedContract smart contract for the amount of IOTA pegged tokens that have been signalled, and to get the amount that have been signalled whose rewards have either been claimed and pending approval, or approved, or rejected. There are methods in app/lib/page/assets/index.dart that call these API methods and perform calculations before rendering the data in the Mining tab of the UI.

    • getAccountSignalledIOTAPeggedAmountFromDataHighwayIOTAPeggedMiningContract
    • getAccountSignalledClaimsPendingOfIOTAPeggedAmountFromDataHighwayIOTAPeggedMiningContract
    • getAccountSignalledClaimsApprovedOfIOTAPeggedAmountFromDataHighwayIOTAPeggedMiningContract
    • getAccountSignalledClaimsRejectedOfIOTAPeggedAmountFromDataHighwayIOTAPeggedMiningContract
  • Refactor methods in UI to use Flutter best practice and make sure it works with mock data. i.e. at the moment I'm passing the functions (i.e. _fetchMXCBalance) down so their available to child widgets (i.e. item) along with the context as follows. This looks wrong, what is a 'Flutter way' to do this properly?

              item(context,
                  ...
                  methods: {
                    'fetchMXCBalance': _fetchMXCBalance,
                    ...
    
  • The lib/service/ethereumApi/apiAssetsMiningMXC.dart file is used to query the DataHighwayMiningMXCContract for the amount of MXC tokens that have been locked or signalled, and to get the amount that have been locked or signalled whose rewards have either been claimed and pending approval, or approved, or rejected. There are methods in app/lib/page/assets/index.dart that call these API methods and perform calculations before rendering the data in the Mining tab of the UI.

    • getAccountSignalledMXCAmountFromDataHighwayMXCMiningContract
    • getAccountSignalledClaimsPendingOfMXCAmountFromDataHighwayMXCMiningContract
    • getAccountSignalledClaimsApprovedOfMXCAmountFromDataHighwayMXCMiningContract
    • getAccountSignalledClaimsRejectedOfMXCAmountFromDataHighwayMXCMiningContract
    • getAccountLockedMXCAmountFromDataHighwayMXCMiningContract
    • getAccountLockedClaimsPendingOfMXCAmountFromDataHighwayMXCMiningContract
    • getAccountLockedClaimsApprovedOfMXCAmountFromDataHighwayMXCMiningContract
    • getAccountLockedClaimsRejectedOfMXCAmountFromDataHighwayMXCMiningContract
  • Refactor methods in UI to use Flutter best practice and make sure it works with mock data, see previous comment.

Note that two other outstanding issues that are preventing it from compiling include:

  • Resolve the error that appears in the Mining tab after a while (this error also appears to occur in the develop_sam branch): MobXCaughtException: NoSuchMethodError: The getter 'isNotEmpty' was called on null. Received: null. Tried calling: isNotEmpty. See also: https://flutter.dev/docs/testing/errors. UPDATE FIXED IN COMMIT 84e4013
  • Add customized Polkadot.js SDK to the Flutter app, as advised in this issue Unknown types found polkawallet-io/polkawallet-flutter#19

[+4019 ms] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingOperatorIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingNetworkIndex, it will fail on constrution", source:  (31)
[   +4 ms] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingOrganizationIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingNetworkServerIndex, it will fail on constrution", source:  (31)
[   +4 ms] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingDeviceIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingRoutingProfileIndex, it will fail on constrution", source:  (31)
[  +13 ms] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingServiceProfileIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingAccountingPolicyIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingAccountingPolicyType, it will fail on constrution", source:  (31)
[   +4 ms] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingAccountingPolicyUplinkFeeFactor, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingAccountingPolicyDownlinkFeeFactor, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingAgreementPolicyIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingAgreementPolicyActivationType, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingAgreementPolicyExpiry, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingNetworkProfileIndex, it will fail on constrution", source:  (31)
[   +6 ms] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingDeviceProfileIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingDeviceProfileDevAddr, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingDeviceProfileDevEUI, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingDeviceProfileJoinEUI, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingDeviceProfileVendorID, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingSessionIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingSessionJoinRequestRequestedAt, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingSessionJoinRequestAcceptExpiry, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingSessionJoinRequestAcceptAcceptedAt, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingBillingPolicyIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingBillingPolicyNextBillingAt, it will fail on constrution", source:  (31)
[   +3 ms] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingBillingPolicyFrequencyInDays, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingChargingPolicyIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingChargingPolicyNextChargingAt, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingChargingPolicyDelayAfterBillingInDays, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingPacketBundleIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingPacketBundleReceivedAtHome, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingPacketBundleReceivedPacketsCount, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingPacketBundleReceivedPacketsOkCount, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingPacketBundleReceivedStartedAt, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingPacketBundleReceivedEndedAt, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type RoamingPacketBundleExternalDataStorageHash, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostConfigurationTokenMiningIndex, it will fail on constrution", source:  (31)
[   +7 ms] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostConfigurationTokenMiningTokenType, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostConfigurationTokenMiningTokenLockPeriod, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostConfigurationTokenMiningTokenLockPeriodStartDate, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostConfigurationTokenMiningTokenLockPeriodEndDate, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostConfigurationHardwareMiningIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostConfigurationHardwareMiningHardwareSecure, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostConfigurationHardwareMiningHardwareType, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostConfigurationHardwareMiningHardwareID, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostConfigurationHardwareMiningHardwareDevEUI, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostConfigurationHardwareMiningHardwareLockPeriodStartDate, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostConfigurationHardwareMiningHardwareLockPeriodEndDate, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostRatesTokenMiningIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostRatesTokenMiningTokenMXC, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostRatesTokenMiningTokenIOTA, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostRatesTokenMiningTokenDOT, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostRatesTokenMiningMaxToken, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostRatesTokenMiningMaxLoyalty, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostRatesHardwareMiningIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostRatesHardwareMiningHardwareSecure, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostRatesHardwareMiningHardwareInsecure, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostRatesHardwareMiningMaxHardware, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostSamplingTokenMiningIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostSamplingTokenMiningSampleDate, it will fail on constrution", source:  (31)
[   +4 ms] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostSamplingTokenMiningSampleTokensLocked, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostSamplingHardwareMiningIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostSamplingHardwareMiningSampleDate, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostSamplingHardwareMiningSampleHardwareOnline, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostEligibilityTokenMiningIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostEligibilityTokenMiningCalculatedEligibility, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostEligibilityTokenMiningTokenLockedPercentage, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostEligibilityHardwareMiningIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostEligibilityHardwareMiningCalculatedEligibility, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostEligibilityHardwareMiningHardwareUptimePercentage, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostLodgementsTokenMiningIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostLodgementsTokenMiningLodgementAmount, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostLodgementsTokenMiningLodgementDateRedeemed, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostLodgementsHardwareMiningIndex, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostLodgementsHardwareMiningLodgementAmount, it will fail on constrution", source:  (31)
[        ] I/chromium( 8403): [INFO:CONSOLE(31)] "Unable to resolve type MiningSpeedBoostLodgementsHardwareMiningLodgementDateRedeemed, it will fail on constrution", source:  (31)
[+6755 ms] I/chromium( 8403): [INFO:CONSOLE(23)] "Unknown types found, no types for MiningSpeedBoostConfigurationHardwareMining,MiningSpeedBoostConfigurationHardwareMiningHardwareConfig,MiningSpeedBoostConfigurationHardwareMiningHardwareDevEUI,MiningSpeedBoostConfigurationHardwareMiningHardwareID,MiningSpeedBoostConfigurationHardwareMiningHardwareLockPeriodEndDate,MiningSpeedBoostConfigurationHardwareMiningHardwareLockPeriodStartDate,MiningSpeedBoostConfigurationHardwareMiningHardwareSecure,MiningSpeedBoostConfigurationHardwareMiningHardwareType,MiningSpeedBoostConfigurationHardwareMiningIndex,MiningSpeedBoostConfigurationTokenMining,MiningSpeedBoostConfigurationTokenMiningIndex,MiningSpeedBoostConfigurationTokenMiningTokenConfig,MiningSpeedBoostConfigurationTokenMiningTokenLockPeriod,MiningSpeedBoostConfigurationTokenMiningTokenLockPeriodEndDate,MiningSpeedBoostConfigurationTokenMiningTokenLockPeriodStartDate,MiningSpeedBoostConfigurationTokenMiningTokenType,MiningSpeedBoostEligibilityHardwareMining,MiningSpeedBoostEligibilityHardwareMiningCalculatedEligibility,MiningSpeedBoostEligibilityHardwareMiningEligibilityResult,MiningSpeedBoostEligibilityHardwareMiningHardwareUptimePercentage,MiningSpeedBoostEligibilityHardwareMiningIndex,MiningSpeedBoostEligibilityTokenMining,MiningSpeedBoostEligibilityTokenMiningCalculatedEligibility,MiningSpeedBoostEligibilityTokenMiningEligibilityResult,MiningSpeedBoostEligibilityTokenMiningIndex,MiningSpeedBoostEligibilityTokenMiningTokenLockedPercentage,MiningSpeedBoostLodgementsHardwareMining,MiningSpeedBoostLodgementsHardwareMiningIndex,MiningSpeedBoostLodgementsHardwareMiningLodgementAmount,MiningSpeedBoostLodgementsHardwareMiningLodgementDateRedeemed,MiningSpeedBoostLodgementsHardwareMiningLodgementResult,MiningSpeedBoostLodgementsTokenMining,MiningSpeedBoostLodgementsTokenMiningIndex,MiningSpeedBoostLodgementsTokenMiningLodgementAmount,MiningSpeedBoostLodgementsTokenMiningLodgementDateRedeemed,MiningSpeedBoostLodgementsTokenMiningLodgementResult,MiningSpeedBoostRatesHardwareMining,MiningSpeedBoostRatesHardwareMiningHardwareInsecure,MiningSpeedBoostRatesHardwareMiningHardwareSecure,MiningSpeedBoostRatesHardwareMiningIndex,MiningSpeedBoostRatesHardwareMiningMaxHardware,MiningSpeedBoostRatesHardwareMiningRatesConfig,MiningSpeedBoostRatesTokenMining,MiningSpeedBoostRatesTokenMiningIndex,MiningSpeedBoostRatesTokenMiningMaxLoyalty,MiningSpeedBoostRatesTokenMiningMaxToken,MiningSpeedBoostRatesTokenMiningRatesConfig,MiningSpeedBoostRatesTokenMiningTokenDOT,MiningSpeedBoostRatesTokenMiningTokenIOTA,MiningSpeedBoostRatesTokenMiningTokenMXC,MiningSpeedBoostSamplingHardwareMining,MiningSpeedBoostSamplingHardwareMiningIndex,MiningSpeedBoostSamplingHardwareMiningSampleDate,MiningSpeedBoostSamplingHardwareMiningSampleHardwareOnline,MiningSpeedBoostSamplingHardwareMiningSamplingConfig,MiningSpeedBoostSamplingTokenMining,MiningSpeedBoostSamplingTokenMiningIndex,MiningSpeedBoostSamplingTokenMiningSampleDate,MiningSpeedBoostSamplingTokenMiningSampleTokensLocked,MiningSpeedBoostSamplingTokenMiningSamplingConfig,RoamingAccountingPolicy,RoamingAccountingPolicyConfig,RoamingAccountingPolicyDownlinkFeeFactor,RoamingAccountingPolicyIndex,RoamingAccountingPolicyType,RoamingAccountingPolicyUplinkFeeFactor,RoamingAgreementPolicy,RoamingAgreementPolicyActivationType,RoamingAgreementPolicyConfig,RoamingAgreementPolicyExpiry,RoamingAgreementPolicyIndex,RoamingBillingPolicy,RoamingBillingPolicyConfig,RoamingBillingPolicyFrequencyInDays,RoamingBillingPolicyIndex,RoamingBillingPolicyNextBillingAt,RoamingChargingPolicy,RoamingChargingPolicyConfig,RoamingChargingPolicyDelayAfterBillingInDays,RoamingChargingPolicyIndex,RoamingChargingPolicyNextChargingAt,RoamingDevice,RoamingDeviceIndex,RoamingDeviceProfile,RoamingDeviceProfileConfig,RoamingDeviceProfileDevAddr,RoamingDeviceProfileDevEUI,RoamingDeviceProfileIndex,RoamingDeviceProfileJoinEUI,RoamingDeviceProfileVendorID,RoamingNetwork,RoamingNetworkIndex,RoamingNetworkProfile,RoamingNetworkProfileIndex,RoamingNetworkServer,RoamingNetworkServerIndex,RoamingOperato
[ +146 ms] I/chromium( 8403): [INFO:CONSOLE(23)] "2020-05-13 17:27:13        API/INIT: Error: FATAL: Unable to initialize the API: createType(RoamingOperatorIndex):: Cannot construct unknown type RoamingOperatorIndex", source:  (23)
[   +4 ms] I/flutter ( 8403): received msg: {"path":"log","data":"FATAL: Unable to initialize the API: createType(RoamingOperatorIndex):: Cannot construct unknown type RoamingOperatorIndex"}

@ltfschoen
Copy link
Author

@zhbh Please kindly review the description of this PR and the code to try and get it to work. I'm moving back over to working on the Ethereum smart contracts.

@zhbh zhbh merged commit eaf1091 into develop_sam May 18, 2020
@cgroeschel cgroeschel deleted the develop_luke branch July 13, 2020 14:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants