웹 수익 창출로의 여정 - 3일차

아이디어 생성의 첫째 날과 학습의 둘째 날 후에, 나는 그것의 좀 더 실용적인 측면에 들어가고 놀 수 있는 무언가를 얻으려고 노력할 것이라고 생각했습니다.

내가 한 일은 다음과 같습니다.
  • moneyd로 Interledger 테스트넷에 연결
  • moneyd 인스턴스에 연결할 ILP 스트림 서버를 만듭니다.
  • 스트림 자격 증명 생성 및 송금
  • npx moneyd local를 실행하여 로컬 테스트넷으로 moneyd 인스턴스를 시작합니다.

    다음으로 간단한 노드 프로젝트를 설정합니다.

    npm init -y
    npm i -S ilp-protocol-stream ilp-plugin @interledger/connection-tag-utils
    mkdir src
    touch src/index.js
    



    // src/index.js
    const { randomBytes } = require("crypto");
    const { createServer, createConnection } = require("ilp-protocol-stream");
    const { encode, decode } = require("@interledger/connection-tag-utils");
    const createPlugin = require("ilp-plugin");
    
    // Used for encoding and decoding connectionTag
    const SECRET_KEY = randomBytes(32);
    
    async function createStreamServer() {
      const server = await createServer({ plugin: createPlugin() });
      server.on("connection", (connection) => {
        // connectionTag contains encrypted data, in this case about the user account
        const { account } = JSON.parse(
          decode(SECRET_KEY, connection.connectionTag)
        );
        connection.on("stream", (stream) => {
          stream.setReceiveMax(10000);
          stream.on("money", (amount) => {
            console.log(`Received payment from ${account} for: ${amount}`);
          });
        });
      });
    
      return server;
    }
    
    async function sendMoney({ amount, destinationAccount, sharedSecret }) {
      const connection = await createConnection({
        plugin: createPlugin(),
        destinationAccount,
        sharedSecret,
      });
    
      const stream = connection.createStream();
      await stream.sendTotal(amount);
      await connection.end();
    }
    
    async function run() {
      const server = await createStreamServer();
    
      // Encode the user account here so we can use when we receive money
      const data = encode(SECRET_KEY, JSON.stringify({ account: "userAccountId" }));
    
      const { destinationAccount, sharedSecret } = server.generateAddressAndSecret(
        data
      );
    
      const amount = 10000;
      await sendMoney({ amount, destinationAccount, sharedSecret });
      await server.close();
    }
    
    run().catch((err) => console.log(err));
    
    

    마지막으로 실행하십시오.

    npx nodemon src/index.js
    
    Received payment from userAccountId for: 10000
    

  • ilp-plugin와 같은 플러그인은 서버가 연결되는 위치를 결정합니다. env 변수ILP_BTP_SERVER를 찾고 찾지 못하면 기본값은 btp+ws://localhost:7768입니다. 이것은 현지 돈을 받는 인스턴스입니다.
  • 사용자 또는 송장에 대한 정보와 같은 데이터를 connectionTag에 인코딩할 수 있습니다. 이를 통해 예를 들어 데이터베이스를 업데이트할 수 있습니다.
  • 스트림 클라이언트를 만들고 돈을 보내려면 서버에서 얻을 수 있는 destinationAccountsharedSecret가 필요합니다.

  • 가능한 다음 단계


  • 로컬이 아닌 테스트넷에 연결
  • 다른 지갑간에 송금
  • REST 서버를 구축하고 다양한 사용자 및 지불 포인터를 처리합니다.
  • 현재 sendMoney에 있는 기능을 처리하는 브라우저 확장을 빌드합니다.
  • 좋은 웹페이지 즐겨찾기