It includes our specialized binary payload DSL (parser and schemas), clients and sdks.

Comments
  • [sdk/javascript]: add typescript definition files, add build process for dual packages for both CommonJS, ES Modules and CDN

    [sdk/javascript]: add typescript definition files, add build process for dual packages for both CommonJS, ES Modules and CDN

    What is the current behavior?

    • Describe the current behavior of the application or program.
    • Please mention any related issue numbers.
    1. With current JS SDK, on TypeScript environment, error has occur because there are no type definition files.
    2. Current JS SDK is implemented with CommonJS way. So, when we wanna use it on ES Modules environment, maybe we need to convert or something else.
    3. We can't use current JS SDK on browsers directly.

    What's the issue?

    • Explain in detail why this behavior is an issue - and why this should be changed.
    1. I don't think it's desirable in a modern front-end development environment where TypeScript is prevalent.
    2. I think there is a trend in web development to move to ES Modules, so npm packages with only CommonJS are going to be more difficult to use.
    3. I think it would be a good appeal to be able to load it on the CDN and try it out right away in the browser.

    How have you changed the behavior?

    • Describe your changes in detail for the maintainer.
    • Explain the solution you have provided, and how it fixes the issue case.
    • Specify if this is a breaking change.
    • Install typescript and webpack and related packages
    • Add build process
      • for CommonJS with tsc
      • for ES Modules with tsc
      • for CDN with webpack
    • Add type definition files via automatic build process with tsconfig settings
      • "allowJS": true
      • "declaration": true
    • Add build cmd to CI/CD process
    • Add output directories automatically generated to eslintignore

    How was this change tested?

    • Were unit test cases or end-to-end test cases included in this fix, or was only manual testing applicable?
    • Please provide a detailed description of test cases included or updated.
    • Does this change introduce any new warnings or binding errors? If so, make sure to update the relevant documentation and reference this pull request.

    In this PR, I don't implement new feature. I only add some dependencies and build process and only 1 entry point for CDN. So I have only debug to confirm simple transfer transaction with following sample code.

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
        <script src="https://cdn.jsdelivr.net/npm/@nemtus/[email protected]/index.min.js"></script>
        <script src="./index.js"></script>
      </head>
      <body>
        <script>
          const restApiClient = window.symbolSdkOpenAPIGeneratorTypeScriptAxios;
          const symbolSdk = window.symbolSdk;
    
          const NODE_DOMAIN = "symbol-test.next-web-technology.com";
    
          (async () => {
            // epochAdjustment, networkCurrencyMosaicIdの取得のためNetworkRoutesApi.getNetworkPropertiesを呼び出す
            const configurationParameters = {
              basePath: `http://${NODE_DOMAIN}:3000`,
            };
            const configuration = new restApiClient.Configuration(
              configurationParameters
            );
            const networkRoutesApi = new restApiClient.NetworkRoutesApi(
              configuration
            );
    
            const networkPropertiesDTO = (
              await networkRoutesApi.getNetworkProperties()
            ).data;
    
            // epochAdjustmentのレスポンス値は文字列でsが末尾に含まれるため除去してnumberに変換する
            const epochAdjustmentOriginal =
              networkPropertiesDTO.network.epochAdjustment;
            if (!epochAdjustmentOriginal) {
              throw Error("epochAdjustment is not found");
            }
            const epochAdjustment = parseInt(
              epochAdjustmentOriginal.replace(/s/g, "")
            );
    
            // networkCurrencyMosaicIdのレスポンス値はhex文字列で途中に'が含まれるため除去してBigIntに変換する
            const networkCurrencyMosaicIdOriginal =
              networkPropertiesDTO.chain.currencyMosaicId;
            if (!networkCurrencyMosaicIdOriginal) {
              throw Error("networkCurrencyMosaicId is not found");
            }
            const networkCurrencyMosaicId = BigInt(
              networkCurrencyMosaicIdOriginal.replace(/'/g, "")
            );
    
            // facadeの中に指定するtestnet等のネットワーク名を取得するためNetworkRoutesApi.getNetworkTypeを呼び出す
            const networkTypeDTO = (await networkRoutesApi.getNetworkType()).data;
            if (!networkTypeDTO) {
              throw Error("networkType is not found");
            }
            const networkName = networkTypeDTO.name;
    
            // ネットワーク名を指定してSDKを初期化
            const facade = new symbolSdk.facade.SymbolFacade(networkName);
    
            // トランザクションを送信するアカウント関連データを作成
            const privateKey = new symbolSdk.CryptoTypes.PrivateKey(
              "PUT_YOUR_PRIVATE_KEY"
            );
            const keyPair = new symbolSdk.symbol.KeyPair(privateKey);
            const signerPublicKeyString = keyPair.publicKey.toString();
            const signerAddressString = facade.network
              .publicKeyToAddress(keyPair.publicKey)
              .toString();
    
            // deadlineの計算(2時間で設定しているが変更可能、ただし遠すぎるとエラーになる。5~6時間くらいにテストネットでは閾値がある?)
            const now = Date.now();
            const deadline = BigInt(
              now - epochAdjustment * 1000 + 2 * 60 * 60 * 1000
            );
    
            // 送信先アドレス
            const recipientAddressString =
              "TBK7XV2NHC466HZ63XC7RPESLNXFEGCSJ3ZZ2FY";
    
            // トランザクションのデータ生成
            const transaction = facade.transactionFactory.create({
              type: "transfer_transaction",
              signerPublicKey: signerPublicKeyString,
              deadline,
              recipientAddress: recipientAddressString,
              mosaics: [{ mosaicId: networkCurrencyMosaicId, amount: 1000000n }],
            });
    
            // 手数料設定 ... 送信先ノードの設定によるが100なら基本的に足りないことはないと思う
            const feeMultiplier = 100;
            transaction.fee.value = BigInt(transaction.size * feeMultiplier);
    
            // 署名
            const signature = facade.signTransaction(keyPair, transaction);
            transaction.signature = new symbolSdk.symbol.Signature(signature.bytes);
    
            // 各ネットワーク固有のgenerationHashSeedを設定
            transaction.network.generationHashSeed = facade.network;
    
            // トランザクションのハッシュを計算 ... トランザクションの承認状態を後でWebSocketで確認する時などに必要
            const hash = facade.hashTransaction(transaction);
            console.log(hash.toString());
            console.log(
              `https://testnet.symbol.fyi/transactions/${hash.toString()}`
            );
    
            // トランザクション送信時にはこのデータを使う必要あり
            const transactionPayload =
              facade.transactionFactory.constructor.attachSignature(
                transaction,
                signature
              );
    
            // 1 confirmation以外の場合の設定
            const confirmationHeight = 6; // 6confで確認と見なす場合
            let transactionHeight = 0;
            let blockHeight = 0;
            let finalizedBlockHeight = 0;
    
            // WebSocketでトランザクション送信時の各種イベントに応じた処理を事前定義しておく必要がある
            const ws = new WebSocket(`wss://${NODE_DOMAIN}:3001/ws`);
    
            ws.onopen = () => {
              console.log("connection open");
            };
    
            ws.onclose = () => {
              console.log("connection closed");
            };
    
            ws.onmessage = (msg) => {
              const res = JSON.parse(msg.data);
              if ("uid" in res) {
                console.log(`uid : ${res.uid}`);
    
                // ターゲットアドレスのトランザクションが未承認状態になったのを監視
                const unconfirmedBody = `{"uid": "${res.uid}", "subscribe": "unconfirmedAdded/${recipientAddressString}"}`;
                console.log(unconfirmedBody);
                ws.send(unconfirmedBody);
    
                // ターゲットアドレスのトランザクションが承認されるの監視
                const confirmedBody = `{"uid": "${res.uid}", "subscribe": "confirmedAdded/${recipientAddressString}"}`;
                console.log(confirmedBody);
                ws.send(confirmedBody);
    
                // ターゲットアドレスのトランザクションがエラーになったのを監視
                const statusBody = `{"uid": "${res.uid}", "subscribe": "status/${recipientAddressString}"}`;
                console.log(statusBody);
                ws.send(statusBody);
    
                // 新しいブロックを監視
                const blockBody = `{"uid": "${res.uid}", "subscribe": "block"}`;
                console.log(blockBody);
                ws.send(blockBody);
    
                // ファイナライズされたブロックを監視
                const finalizedBlockBody = `{"uid": "${res.uid}", "subscribe": "finalizedBlock"}`;
                console.log(finalizedBlockBody);
                ws.send(finalizedBlockBody);
              }
    
              // トランザクションが未承認になったときに発火
              if (
                res.topic === `unconfirmedAdded/${recipientAddressString}` &&
                res.data.meta.hash === hash.toString()
              ) {
                console.log("transaction unconfirmed");
              }
    
              // トランザクションが承認されたときに発火
              if (
                res.topic === `confirmedAdded/${recipientAddressString}` &&
                res.data.meta.hash === hash.toString()
              ) {
                console.log("transaction confirmed");
                transactionHeight = parseInt(res.data.meta.height);
              }
    
              // ブロック生成時に発火
              if (res.topic === `block`) {
                console.log("block");
                blockHeight = parseInt(res.data.block.height);
              }
    
              // ブロックのファイナライズ時に発火
              if (res.topic === `finalizedBlock`) {
                console.log("finalizedBlock");
                console.log(res);
                finalizedBlockHeight = parseInt(res.data.height);
              }
    
              // トランザクションがエラーになったときに発火
              if (
                res.topic === `status/${recipientAddressString}` &&
                res.data.hash === hash.toString()
              ) {
                console.log(res.data.code);
                ws.close();
              } else {
                console.log(res);
              }
    
              // confirmationHeightブロック後に監視終了
              if (
                transactionHeight !== 0 &&
                transactionHeight + confirmationHeight - 1 <= blockHeight
              ) {
                console.log(
                  `${confirmationHeight} blocks confirmed. transactionHeight is ${transactionHeight} blockHeight is ${blockHeight}.`
                );
                ws.close();
              } else {
                console.log(
                  `wait for ${confirmationHeight} blocks. transactionHeight is ${transactionHeight} blockHeight is ${blockHeight}.`
                );
              }
    
              // finalizedBlockHeightが対象ブロックを追い越した後に監視終了
              if (
                transactionHeight !== 0 &&
                transactionHeight <= finalizedBlockHeight
              ) {
                console.log(
                  `${finalizedBlockHeight} block finalized. transactionHeight is ${transactionHeight} blockHeight is ${blockHeight}.`
                );
                ws.close();
              } else {
                console.log(
                  `wait for finalized block. transactionHeight is ${transactionHeight} blockHeight is ${blockHeight}.`
                );
              }
            };
    
            // トランザクションのアナウンス実行
            try {
              const transactionRoutesApi = new restApiClient.TransactionRoutesApi(
                configuration
              );
              console.log(transactionPayload);
              const response = await transactionRoutesApi.announceTransaction({
                transactionPayload,
              });
              console.log(response.data);
            } catch (err) {
              console.error(err);
            }
          })();
        </script>
      </body>
    </html>
    
    

    Requirements

    Your pull request must pass these requirements in order to be accepted. You can delete this section upon submitting your pull request.

    • [ ] My pull request title is prefixed with the directory and subdirectory it affects.
    • [ ] My pull request contains a single change or feature.
    • [ ] My commits are clearly labeled with one of the following: feat | bug | fix | build | perf | task
    • [ ] My code has been linted.
    • [ ] My code has comments, particularly in any hard to understand areas.
    • [ ] My code follows the style guidelines.
    • [ ] I have written and supplied test cases (either unit tests or end-to-end, where relevant).
    • [ ] I have made any corresponding changes to the documentation (where relevant).
  • [client/rest] {

    [client/rest] {"apiNode":"down","db":"up"}

    Hi. Cloud platform suddenly (it was my fault) shut down my instance with my node. After I returned access I tried to start node (symbol-bootstrap start --upgrade -d) , but it didn’t work out. Symbol-bootstrap healthCheck: …

    warn     Container node is NOT running YET. 
    warn     Container broker is NOT running YET.
    

    I know about symbol-bootstrap resetData however maybe something else may fix it. Server and broker logs are attached. Thanks in advance.

  • [monorepo] Do you have an easy example for deploying an api server in Kubernetes?

    [monorepo] Do you have an easy example for deploying an api server in Kubernetes?

    symbol-bootstrap is a handy for the most case, but we need to deploy our node in k8s cluster.

    it will be great that your team have a helm package for us.

  • [catbuffer/parser]  Parsing hash_lock.cat does not output data for factory_type: Transaction.

    [catbuffer/parser] Parsing hash_lock.cat does not output data for factory_type: Transaction.

    I am processing the yaml file output by catparser into json to create a sdk. However, in hash_lock.cat, I noticed that the data defining the transaction layout is not output. Specifically, the data begins with the following key

      - type
      factory_type: Transaction
    

    I feel that perhaps the apostrophe used in the following line has invalidated subsequent statements.

    https://github.com/symbol/symbol/blob/04fc8200a17509fd1e3c4194898f16336a89d04e/catbuffer/schemas/symbol/lock_hash/hash_lock.cats#L18

    could you please confirm it. thanks.

  • [client/catapult] can't graceful shutdown broker

    [client/catapult] can't graceful shutdown broker

    System Information

    • Client Version: symbolplatform/symbol-server:gcc-10-1.0.3.3
    • REST Version:
    • **Operating System: Linux
    • Installed With: From Source
    • VPS Provider: AWS
    • Are you fully synchronized? No
    • Did you try to restart your node? Yes

    Description

    Steps to Reproduce

    start broker and try to kill broker, and broker is just stuck

    Logs

    Screen Shot 2022-09-22 at 19 09 51

  • [sdk/javascript]: add 'create from descriptor' test vectors

    [sdk/javascript]: add 'create from descriptor' test vectors

    What is the current behavior?

    sdk javascript is missing create from descriptor test vectors

    What's the issue?

    this reduces code coverage in generated code

    How have you changed the behavior?

    ported py vectors to js

    How was this change tested?

    yes

  • [sdk/python] improved vectors generation

    [sdk/python] improved vectors generation

    What's the issue?

    There's a lot of repetitions and lot of senseless cases (mostly) in symbol tx test vectors

    How have you changed the behavior?

    • converted "generate" functions to "recipes
    • removed duplicates
    • removed senseless cases
    • introduced new cases, mostly oriented around flags covering

    How was this change tested?

    • previous change (#99 verified that generator actually emits proper payloads,
    • this change introduces new vectors, existing (py) vector tester passes on all of them (haven't checked js, should pass as well)
  • [catbuffer/schemas]: include versions explicitly in all multiversioned transactions

    [catbuffer/schemas]: include versions explicitly in all multiversioned transactions

    [problem]: latest version has no postfix (e.g. 'transfer_transaction') versions start at 1 [solution]: require latest version to use version postfix (e.g. 'transfer_transaction_v1') renumber versions starting at 0

  • Update BUILD-conan.md

    Update BUILD-conan.md

    @Jaguar0625

    Hi. I would like to change the URL (GIT) for "using Conan".

    Here is the part linked from the official documentation "Running a node manually". https://docs.symbol.dev/ja/guides/network/running-a-symbol-node-manually.html

    I am Japanese. I apologize, If my English is wrong.

  • [sdk/python] message encoder

    [sdk/python] message encoder

    message encoder is a helper around encrypted (and encoded) messages

    What's the issue?

    This is a helper to handle most common use cases of encryption in nem and symbol.

    How was this change tested?

    • the change uses already tested elements
    • there are additional tests used that check encoding (structuring)
  • [sdk/javascript] optimized JS field deserialization

    [sdk/javascript] optimized JS field deserialization

    Note: This is the default pull request template.

    What is the current behavior? / What's the issue?

    JS generated code is using universal struct reading, that is not leveraging symbol structs alignment

    How have you changed the behavior?

    struct generator is calling field.extensions.printer.load. In case of simple types, we could just handle it inside the printer, howevere in case of builtin fields (i.e. Amount) BuiltinPrinter does not have info about field itself, therefore wouldn't be able to access parent - aligned - struct

    Only sensible way to do it was to pass down is_aligned in calls to load()

    What was NOT changed:

    right now missing piece is handling of structs, so i.e. (from HashlockTransaction.deserialize)

    		const fee = Amount.deserializeAligned(view.buffer);
    		view.shiftRight(fee.size);
    		const deadline = Timestamp.deserializeAligned(view.buffer);
    		view.shiftRight(deadline.size);
    		const mosaic = UnresolvedMosaic.deserialize(view.buffer);
    		view.shiftRight(mosaic.size);
    

    note that UnresolvedMosaic.deserialize is called. otherwise it would require generating deserializeAligned on all structs, I'm not quite sure if that is wanted change, if so, should probably be done separately

    How was this change tested?

    • verified generated code
    • catbuffer test vectors are passing
    • additional unit tests added
  • [jenkins] feat: docker publish task optional build args param added

    [jenkins] feat: docker publish task optional build args param added

    What was the issue?

    it was not possible to pass docker build args to docker publish task in the jenkins pipeline.

    What's the fix?

    setting config.dockerBuildArgs parameter in the jenkins pipeline will be possible like the following:

    defaultCiPipeline {
    	platform = ['ubuntu']
    
    	publisher = 'docker'
    	dockerImageName = 'nemofficial/nis-client'
    
    	dockerBuildArgs = "--build-arg GIT_BRANCH_NAME=${env.BRANCH_NAME}"
    
    	packageId = 'nem-infra'
    }
    
    
  • [client/catapult] Testnet node stopped syncing from block 588857

    [client/catapult] Testnet node stopped syncing from block 588857

    System Information

    • Client Version: gcc-10-1.0.3.3
    • REST Version: 2.4.0
    • Operating System / Installed With / VPS Provider
      • We are running docker image (downloaded from https://hub.docker.com/r/symbolplatform/symbol-server) on k8s (GKE)
    • Are you fully synchronized?: No (synced until block 588857)
    • Did you try to restart your node?: Yes

    Description

    • expected Testnet node continues to sync without interruption.

    • actual Testnet node stopped syncing from block 588857.

    Steps to Reproduce

    Unknown

    Logs

    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:44.420886 0x00007f48b0ff9700: <warning> (consumers::[email protected]) block state hash (A7E9C0F72C886E22511D8B54758EEAFA62D144A978305EE75779B53172687E17) does not match cache state hash (D00AB84A9D6D8F528FDD68CA76ABD4A96B10AAB5EEC7975C34C183000C43AB04) at height 588857
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:44.420928 0x00007f48b0ff9700: <info> (consumers::[email protected]) cache state hash (9 components) at height 588856
    symbol-testnet-1-node-859b86c7f5-787s5 server A7E9C0F72C886E22511D8B54758EEAFA62D144A978305EE75779B53172687E17
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 69E48C7FB749A28308B41CFA125F488156630F23D478CAB29A481F7389DF4640
    symbol-testnet-1-node-859b86c7f5-787s5 server  + B829A3813367F5E8AEC758A3ABCDD705331E695A18ACF27831668BB86CE4896E
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 5A5C7B39D95C9E0CCE79268C9802AC9D43A1E09A6C6C6D7BBC77199EB4C2DB2F
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 31F8F02F965A74E944E6E16612D6EEA051235C03F3E32E980EB279C12C95BF81
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 6725FF220ADA1BDCB8471C0A0ED974EED24B7551686D4AEECCF521402A0200F1
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 7786D39E25D978EFB75FDCE5F6303FDA44F41AA727DD27BDBF7B218E4396E209
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 9193E9F30A1EECE1BF671C91BBA494A25259A60023BFBBDBD44E21A74936E7D7
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 244CD3D37E742FEAA8B8F9DBE6A9E4859E60FB398DC0074B854ED33D97F0D67F
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 4013FF9603AB57ACA37FCD58169A2DF93BD476084DF66AFDCF369E1FD6EE0472
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:44.420933 0x00007f48b0ff9700: <info> (consumers::[email protected]) cache state hash (9 components) at height 588857
    symbol-testnet-1-node-859b86c7f5-787s5 server D00AB84A9D6D8F528FDD68CA76ABD4A96B10AAB5EEC7975C34C183000C43AB04
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 2A9317E1ED6FDC8A8F56FF92E7D72993B230E700032010E4238C52CF9B8C66D3
    symbol-testnet-1-node-859b86c7f5-787s5 server  + B829A3813367F5E8AEC758A3ABCDD705331E695A18ACF27831668BB86CE4896E
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 213ED8F1CD8585ABE9DD2A89F30837D44FBC063905A0DC1481218F12B9FC0DA6
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 31F8F02F965A74E944E6E16612D6EEA051235C03F3E32E980EB279C12C95BF81
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 6725FF220ADA1BDCB8471C0A0ED974EED24B7551686D4AEECCF521402A0200F1
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 7786D39E25D978EFB75FDCE5F6303FDA44F41AA727DD27BDBF7B218E4396E209
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 9193E9F30A1EECE1BF671C91BBA494A25259A60023BFBBDBD44E21A74936E7D7
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 244CD3D37E742FEAA8B8F9DBE6A9E4859E60FB398DC0074B854ED33D97F0D67F
    symbol-testnet-1-node-859b86c7f5-787s5 server  + 4013FF9603AB57ACA37FCD58169A2DF93BD476084DF66AFDCF369E1FD6EE0472
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:44.420942 0x00007f48b0ff9700: <warning> (consumers::[email protected]) processing of peer chain failed with Failure_Chain_Block_Inconsistent_State_Hash
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:44.422524 0x00007f488bfff700: <info> (disruptor::[email protected]) completing processing of element 2516 (360 blocks (heights 588857 - 589216) [D319FE7F] from Remote_Pull with size 135KB 788B), last consumer is 0 elements behind
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:44.422594 0x00007f488bfff700: <warning> (consumers::[email protected]) consumer aborted at position 2515 while processing 360 blocks (heights 588857 - 589216) [D319FE7F] from Remote_Pull with size 135KB 788B due to Failure_Chain_Block_Inconsistent_State_Hash
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.505823 0x00007f49dcb89700: <warning> (net::[email protected]) calling error handler due to timeout
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.505905 0x00007f49dcb89700: <warning> (net::[email protected]) error handler triggered for dusanjp7 @ 7.dusan.gq:7900
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.505938 0x00007f49c5ffb700: <warning> (net::[email protected]) calling error handler due to timeout
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.505970 0x00007f49927fc700: <warning> (net::[email protected]) closing connection to FUKUI-TESTNET(v1.1.6) @ stg.harvesting-sweet-potatoes.club:7900 due to unexpected data
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.505995 0x00007f49ddb8b700: <warning> (net::[email protected]) closing connection to dusanjp7 @ 7.dusan.gq:7900 due to unexpected data
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.506020 0x00007f49c5ffb700: <warning> (net::[email protected]) error handler triggered for FUKUI-TESTNET(v1.1.6) @ stg.harvesting-sweet-potatoes.club:7900
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.506332 0x00007f49beffd700: <error> (ionet::[email protected]) failed when reading from socket: Operation canceled
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.506370 0x00007f49beffd700: <warning> (net::[email protected]) calling error handler due to read error (Read_Error)
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.506381 0x00007f49beffd700: <warning> (net::[email protected]) error handler triggered for dusanjp7 @ 7.dusan.gq:7900
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.506391 0x00007f49beffd700: <warning> (net::[email protected]) ignoring request to remove unknown socket
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.506414 0x00007f49beffd700: <error> (api::[email protected]) read from remote node failed for peers info request
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.506481 0x00007f49beffd700: <warning> (src::[email protected]) exception thrown while requesting peers: read from remote node failed
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.506637 0x00007f49de38c700: <error> (ionet::[email protected]) failed when reading from socket: Operation canceled
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.506704 0x00007f49be7fc700: <warning> (net::[email protected]) calling error handler due to read error (Read_Error)
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.506732 0x00007f49be7fc700: <warning> (net::[email protected]) error handler triggered for FUKUI-TESTNET(v1.1.6) @ stg.harvesting-sweet-potatoes.club:7900
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.506744 0x00007f49be7fc700: <warning> (net::[email protected]) ignoring request to remove unknown socket
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.506751 0x00007f49be7fc700: <error> (api::[email protected]) read from remote node failed for peers info request
    symbol-testnet-1-node-859b86c7f5-787s5 server 2022-08-03 11:36:45.506778 0x00007f49be7fc700: <warning> (src::[email protected]) exception thrown while requesting peers: read from remote node failed
    
  • [linters] feat: add the sort-imports eslint rule

    [linters] feat: add the sort-imports eslint rule

    What is the current behavior?

    Unsorted named imports are ignored by the linter.

    What's the issue?

    Named imports are not consistent and it is hard to find a member in a large list.

    How have you changed the behavior?

    • Added sort-imports rule to javascript/default.eslintrc.
    • Added ignoreDeclarationSort property to only affect member sorting and make it compatible with the import/order rule.

    import { b, a, c } from 'foo.js';
    

    ✔️

    import { a, b, c } from 'foo.js';
    
  • [sdk/python] Generate and publish documentation from source code

    [sdk/python] Generate and publish documentation from source code

    Current Behaviour

    Currently, we are not generating or publishing documentation generated from the source code.

    Expected Behavior

    Generate documentation from source code and publish it online.

    JS issue: #300

  • [sdk/javascript] Generate and publish documentation from source code

    [sdk/javascript] Generate and publish documentation from source code

    Current Behaviour

    Currently, we are not generating or publishing documentation generated from the source code.

    Expected Behavior

    Generate documentation from source code and publish it online. For javascript, we could possibly use https://jsdoc.app/

    Example docs available for old SDK: https://symbol.github.io/symbol-sdk-typescript-javascript/1.0.3/

  • [sdk/python] Metadata - provide util to calculate delta (xor) value and delta length

    [sdk/python] Metadata - provide util to calculate delta (xor) value and delta length

    Current Behaviour

    Previous SDK when constructing Metadata (Namespace/Mosaic/Account) Transaction automatically calculated delta value and length based on on-chain metadata value fetched during Transaction creation.

    New SDK is not doing network communication but would be nice to provide a helper or other way (additional field?) to provide previous value (which the user has to manually fetch from the network) and new value. It would calculate the correct delta value and delta length to put into the transaction.

    Expected Behaviour

    Provide util/helper or a way to pass previous value during Metadata Transaction creation. Based on that we could calculate:

    • value (delta)
    • value size
    • value size delta

    JS issue: #297

A distribution of the cFS that includes the cfe-eds-framework which includes NASA's core Flight Executive(cFE) and CCSDS Electronic Data Sheets(EDS) support.

core Flight System(cFS) Application Toolkit(cFSAT) - Beta Release A distribution of the cFS that includes the cfe-eds-framework which includes NASA's

Jul 3, 2022
PS4 kernel hooking library / payload.

PS4 KHook PS4 KHook is a minimalist kernel hooking payload. It targets 5.05 but it can be used with any firmware (or even non-PS4 systems) with modifi

Dec 27, 2022
Code Injection, Inject malicious payload via pagetables pml4.
Code Injection, Inject malicious payload via pagetables pml4.

PageTableInjection Code Injection, Inject malicious payload via pagetables pml4. Introduction This is just a proof-of-concept of the page table inject

Nov 28, 2022
DSL language to write seccomp filters

a domain specific language for defining seccomp profiles for containers in an easier way and having more control on the generated BPF that it is possible with libseccomp

Sep 2, 2022
Implementation of Monocular Direct Sparse Localization in a Prior 3D Surfel Map (DSL)

Implementation of Monocular Direct Sparse Localization in a Prior 3D Surfel Map (DSL)

Nov 30, 2022
A tiny operating system specialized for saving a kernel crash dump.

boot2dump A tiny operating system which takes a filename and memory buffer, saves it into the disk, and reboots the computer. It's initially designed

Jan 4, 2022
Small stack-based DSL for procedurally generated 1-bit graphics
Small stack-based DSL for procedurally generated 1-bit graphics

Bitlang Bitlang is a tiny stack-based DSL, designed for the sole purpose of producing procedurally generated 1-bit art. It is implemented in ANSI-C, a

Jan 20, 2022
This is our take on the digitalisation of the board game "b00le0", where you can play versus our AI, or against one of your friends in an online match.
This is our take on the digitalisation of the board game

This is our take on the digitalisation of the board game "b00le0", where you can play versus our AI, or against one of your friends in an online match.

Dec 8, 2022
ContactGot is an offline desktop app, where clients can leave their info, while an administrator can manage which information they need to gather on certain projects.
ContactGot is an offline desktop app, where clients can leave their info, while an administrator can manage which information they need to gather on certain projects.

ContactGot Contents Description How to use Requirements Engineering Installation Documentation Design Architecture Demonstration 1. Description During

Sep 17, 2022
Template to create JACK clients

jack-client-template This project is a template to create JACK clients. Installation As with other autotools project, you need to run the following co

Oct 15, 2022
Fast C/C++ CSS Parser (Cascading Style Sheets Parser)

MyCSS — a pure C CSS parser MyCSS is a fast CSS Parser implemented as a pure C99 library with the ability to build without dependencies. Mailing List:

Sep 22, 2022
Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.
Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.

SynnixOS Epic Hobby OS targeting x86_64 CPUs, it includes some hacked together functionality for most essential OSs although, with interactivity via Q

Oct 28, 2022
AnalogWrite for ESP32 and ESP32-S2 with LEDC PWM. Includes PWM Phase Control, DAC and Smart GPIO resource management.
AnalogWrite for ESP32 and ESP32-S2 with LEDC PWM. Includes PWM Phase Control, DAC and Smart GPIO resource management.

analogWrite() ESP32 Installation Instructions This library was tested using using the ESP32 Arduino IDE Boards Manager installation method. Stable rel

Jan 5, 2023
This repo includes SVO Pro which is the newest version of Semi-direct Visual Odometry (SVO) developed over the past few years at the Robotics and Perception Group (RPG).
This repo includes SVO Pro which is the newest version of Semi-direct Visual Odometry (SVO) developed over the past few years at the Robotics and Perception Group (RPG).

rpg_svo_pro This repo includes SVO Pro which is the newest version of Semi-direct Visual Odometry (SVO) developed over the past few years at the Robot

Dec 26, 2022
Working example for local_flutter_notification package in Flutter. Includes setting notification at custom time, daily, weekly.

local_notification_example Working example for local_flutter_notification package in Flutter. Includes setting notification at custom time, daily, wee

Oct 3, 2021
Rat is a very simplified cat clone that includes only stdio library

rat - simplified cat clone. Rat is a very simplified cat clone that includes only stdio library. It's currently much slower than cat because it doesnt

Nov 8, 2021
A repository that includes common helper functions for writing applications in the DPDK. I will be using this for my future projects in the DPDK.

The DPDK Common (WIP) Description This project includes helpful functions and global variables for developing applications using the DPDK. I am using

Dec 27, 2022
(FIXED) Since the one on github didn't work. (ALSO INCLUDES .DLL SO YOU CAN JUST INJECT INTO FORTNITE)
(FIXED) Since the one on github didn't work. (ALSO INCLUDES .DLL SO YOU CAN JUST INJECT INTO FORTNITE)

Marathon-Fortnite-Cheat-Fix-Leak Fortnite Marathon Cheat v18.20 FIXED [Leak] Getting started Open .sln with Visual Studio 2019 Compile batch build to

Dec 13, 2021
Northstar-dedicated - Docker container for the Northstar dedicated server. Also includes general notes on running the dedi on Linux. WIP.

northstar-dedicated Docker image for the Northstar dedicated server. Not ready yet (it'll probably be another day or two). Versioning Tentative. Stabl

Jan 6, 2023