신뢰할 수 있는 인증서와 lnrpc 사용 시도

8888 단어 lnrpc

묘사

btc pay 서버와 함께 사용할 수 있도록 gm를 조정하려고 시도하고 있으며, 이 서버는 신뢰할 수 있는 인증서를 사용합니다.GRPC::Core::ChannelCredentials.new(self.credentials)GRPC::Core::ChannelCredentials.new로 변경
Nicolas Dorier가 Alex Bosworth의 ln 서비스에서 사용하는 모드를 따르십시오.https://github.com/alexbosworth/ln-service/pull/71
이 오류를 계속 검색하려면 다음과 같이 하십시오.
rails가 중지되었습니다!
GRPC::알 수 없음: 2: 그룹 해제 v1: 패킷 크기가 너무 큽니다.
왜 그리고 우리가 이 기능을 lnrpc에 추가할 수 있는지 알고 싶습니까?만약 내가 그것을 내 기계에서 정상적으로 작동시키고 PR

토론 #1

을 만들 수 있다면 이것은 매우 좋은 관점이다.나는 아직 조사한 적이 없다.현재 신뢰할 수 있는 인증서 뒤에 있는 lnd가 없습니다.
실제로 파라미터/nil 없이 초기화 GRPC::Core::ChannelCredentials 는 환경/서버에서 루트 인증서를 불러올 수 있습니다.
너는 너의 잘못의 모든 흔적을 가지고 있니?

토론 #2

전체 추적:
/Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/active_call.rb:31:in `check_status': 2:unmarshal v1: packet size too big (GRPC::Unknown)
    from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/active_call.rb:181:in `attach_status_results_and_complete_call'
    from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/active_call.rb:377:in `request_response'
    from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/client_stub.rb:178:in `block in request_response'
    from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/interceptors.rb:181:in `block in intercept!'
    from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/lnrpc-0.5.2/lib/lnrpc/macaroon_interceptor.rb:13:in `inject_macaroon_metadata'
    from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/interceptors.rb:175:in `intercept!'
    from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/client_stub.rb:177:in `request_response'
    from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/grpc-1.19.0-universal-darwin/src/ruby/lib/grpc/generic/service.rb:170:in `block (3 levels) in rpc_stub_class'
    from /Users/Ryan/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/lnrpc-0.5.2/lib/lnrpc/client.rb:60:in `method_missing'
    from rpc.rb:6:in `<main>'

토론 #셋

응, 이상해...당신의 코드는 도대체 어떤 모양입니까?

토론 #4

require 'lnrpc'

macaroon = "[my macaroon here]".each_byte.map { |b| b.to_s(16).rjust(2,'0') }.join

lnd = Lnrpc::Client.new({macaroon: macaroon, channel: 'btcpay399208.lndyn.com:443'})
lnd.get_info
gem를 조정하여 다음을 수행합니다.
self.address = options[:address] || DEFAULT_ADDRESS

self.credentials = options[:credentials_path] ? ::File.read(::File.expand_path(options[:credentials_path] || DEFAULT_CREDENTIALS_PATH)) : options[:credentials]

options[:macaroon] ||= begin
        macaroon_binary = ::File.read(::File.expand_path(options[:macaroon_path] || DEFAULT_MACAROON_PATH))
        macaroon_binary.unpack("H*")
      end

self.macaroon = options[:macaroon]

channelcredentials = self.credentials ? GRPC::Core::ChannelCredentials.new(self.credentials) : GRPC::Core::ChannelCredentials.new

self.grpc_client = Lnrpc::Lightning::Stub.new(self.address,
                                                    channelcredentials,
                                                    interceptors: [Lnrpc::MacaroonInterceptor.new(self.macaroon)]
                                                   )

토론 #5

네,"[my macaroon here]" 아몬드 케이크 파일에서 불러온 거예요?(이진법?)
나는 옵션에서 주소는 address가 아니라 channel라고 생각한다.
lnd = Lnrpc::Client.new({macaroon: macaroon, address: 'btcpay399208.lndyn.com:443'})

토론 #6

당신의 lnd 노드는 정말 이 주소와 포트를 통해 접근할 수 있습니까?

토론 #7

채널 오류 형식을 잘 포착했습니다. (다행히도 기본 주소 상수를 btcpay399208.lndyn.com:443로 설정했습니다.)
macaroon은 lnd의 실제 관리 macaroon입니다. 이것은 문자열입니다. (단지 이 때 시작하고 실행하려고 시도할 뿐입니다.)
이 포트를 통해 노드에 접근할 수 있을 것입니다.이 노드는 lunanode 가상 시스템에서 실행되는 BTC 결제 서버입니다.BTC Pay Server는 이 엔드포인트에서 LND grpc 서비스를 공개합니다.
screen shot 2019-03-04 at 10 59 41 am

토론 #8

유감스럽게도 btc 요금제 서버를 몰라요. 어떻게 btcpay 서버에서 아몬드 케이크를 얻었어요?만약 그것이 이미 16진수 값이라면, 당신은 .each_byte.map { |b| b.to_s(16).rjust(2,'0') }.join

토론 #9

를 필요로 하지 않습니다. 이것이 문제입니다.감사합니다!
공공 관계의 측면:
자격 증명 및 자격 증명 경로가 없는 경우 기본 자격 증명 경로가 아닌 신뢰할 수 있는 인증서로 가정할 수 있습니다.
def initialize(options={})
      self.address = options[:address] || DEFAULT_ADDRESS

      self.credentials = options[:credentials_path] ? ::File.read(::File.expand_path(options[:credentials_path])) : options[:credentials]

      options[:macaroon] ||= begin
        macaroon_binary = ::File.read(::File.expand_path(options[:macaroon_path] || DEFAULT_MACAROON_PATH))
        macaroon_binary.unpack("H*")
      end

      self.macaroon = options[:macaroon]

      channel_credentials = self.credentials ? GRPC::Core::ChannelCredentials.new(self.credentials) : GRPC::Core::ChannelCredentials.new

      self.grpc_client = Lnrpc::Lightning::Stub.new(self.address,
                                                    channel_credentials,
                                                    interceptors: [Lnrpc::MacaroonInterceptor.new(self.macaroon)]
                                                   )
end
또는 이 경우 기본\u 자격 증명\u 경로를 계속 사용하고 사용자가 다른 매개변수(trusted\u certificated:true)로 보내도록 합니다.
def initialize(options={})
      self.address = options[:address] || DEFAULT_ADDRESS

      options[:credentials] ||= ::File.read(::File.expand_path(options[:credentials_path] || DEFAULT_CREDENTIALS_PATH))
      self.credentials = options[:credentials]

      options[:macaroon] ||= begin
        macaroon_binary = ::File.read(::File.expand_path(options[:macaroon_path] || DEFAULT_MACAROON_PATH))
        macaroon_binary.unpack("H*")
      end
      self.macaroon = options[:macaroon]

      channel_credentials = options[:trusted_certification] ? GRPC::Core::ChannelCredentials.new : GRPC::Core::ChannelCredentials.new(self.credentials)

      self.grpc_client = Lnrpc::Lightning::Stub.new(self.address,
                                                    channel_credentials,
                                                    interceptors: [Lnrpc::MacaroonInterceptor.new(self.macaroon)]
                                                   )
 end

토론 #10

예, 대단합니다!이 소식을 들으니 매우 기쁘다.
나는 단지 이런 실험을 하고 있을 뿐이다.
    def initialize(options={})
      self.address = options[:address] || DEFAULT_ADDRESS

      unless options.has_key?(:credentials)
        options[:credentials] = ::File.read(::File.expand_path(options[:credentials_path] || DEFAULT_CREDENTIALS_PATH))
      end
      self.credentials = options[:credentials]

      unless options.has_key?(:macaroon)
        options[:macaroon] = ::File.read(::File.expand_path(options[:macaroon_path] || DEFAULT_MACAROON_PATH)).unpack("H*")
      end
      self.macaroon = options[:macaroon]
     self.grpc_client = Lnrpc::Lightning::Stub.new(self.address,
                                                    GRPC::Core::ChannelCredentials.new(self.credentials),
                                                    interceptors: [Lnrpc::MacaroonInterceptor.new(self.macaroon)]
                                                  )
    end
그래서 이렇게 사용할 수 있다.
lnd = Lnrpc::Client.new({credentials: nil, macaroon: macaroon, address: 'btcpay399208.lndyn.com:443'})
즉, nil가 자격 증명으로 전달되면 기본값/신뢰할 수 있는 시스템 인증서를 사용합니까?
당신은 어떻게 생각합니까?

토론 #11

좋아!

토론 #12

테스트하고 싶으면 내가 방금 branchPR#5를 밀었어.만약 당신에게 효과가 있다면 저에게 알려 주세요.
아직 테스트 단계이니, 나는 그것을 위해 규범을 좀 써야 한다.

토론 #13

효과가 좋아요!

토론 #14

네,너무 좋아요!!
왜냐하면 나는 어떤 btc비용 지불 서버도 실행하고 있지 않기 때문이다...자술한 파일, 문서 폴더, 위키백과에 부분을 추가하시겠습니까? 어떻게 연결하시겠습니까?이것은 다른 사람들에게 매우 도움이 될 것이다.네, 그럴게요!

좋은 웹페이지 즐겨찾기