스택큐힙리스트

Query LOCAL Bitcoin blockchain with C# .NET 로컬 Bitcoin 블록체인을 C# .NET으로 조회하십시오. 본문

카테고리 없음

Query LOCAL Bitcoin blockchain with C# .NET 로컬 Bitcoin 블록체인을 C# .NET으로 조회하십시오.

스택큐힙리스트 2023. 9. 1. 19:31
반응형

내가 하는 것은 네트워크에 접속하지 않고 로컬에 저장된 블록체인을 이용하여 주어진 비트코인 주소의 잔액을 확인하는 것입니다. NBitCoin과/또는 QBitNinja를 이용한 이와 유사한 방법입니다:

'private static readonly QBitNinjaClient client = new QBitNinjaClient(Network.Main);

public decimal CheckBalance(BitcoinPubKeyAddress address)

{

var balanceModel = client.GetBalance(address, true).Result;

decimal balance = 0;

if (balanceModel.Operations.Count > 0)

{

var unspentCoins = new List();

foreach (var operation in balanceModel.Operations)

unspentCoins.AddRange(operation.ReceivedCoins.Select(coin => coin as Coin));

balance = unspentCoins.Sum(x => x.Amount.ToDecimal(MoneyUnit.BTC));

}

return balance;

}

'

위의 예시는 네트워크에 접근해야 합니다. 저는 오프라인에서 동일한 작업을 수행하기 위해 이런 식으로 해결책을 떠올렸지만, 명백히 작동하지 않습니다:

'public decimal CheckBalanceLocal(BitcoinPubKeyAddress address)

{

var node = Node.ConnectToLocal(Network.Main);

node.VersionHandshake();

var chain = node.GetChain();

var store = new BlockStore(@F:\Program Files\Bitcoin\Cache\blocks, Network.Main);

var index = new IndexedBlockStore(new InMemoryNoSqlRepository(), store);

index.ReIndex();

var headers = chain.ToEnumerable(false).ToArray();

var balance = (

from header in headers

select index.Get(header.HashBlock)

into block

from tx in block.Transactions

from txout in tx.Outputs

where txout.ScriptPubKey.GetDestinationAddress(Network.Main) == address

select txout.Value.ToDecimal(MoneyUnit.BTC)).Sum();

return balance;

}

'

쿼리 실행 중에 멈춥니다.

당신은 컴퓨터 전문가입니다. 특수 기호를 그대로 유지하며 번역하십시오.

'InMemoryNoSqlRepository' 대신에 어떤 것을 파일에 저장하여 모두를 느리게 만드는 'ReIndex()' 사용을 방지하고 싶습니다.

내 요구사항은 디스크에 저장된 블록을 조회하여 첫 번째 방법과 동일하게 잔액을 확인하는 것입니다.

실제로 필요한 것은 'this question'에 대한 답변일 수도 있습니다.

답변 1

당신의 질문에서 첫 번째와 두 번째 시도는 전혀 다르다. 첫 번째 시도는 데몬에게 잔고를 묻기 위해 json rpc를 사용한다(내가 생각하기에 이게 바람직한 방법이야 - 앞으로 움직이기 위해 자동차 엔진 뚜껑을 열고 직접 피스톤을 밀고 당기는 건 하지 않잖아?). 두 번째 시도는 데몬의 데이터베이스 자체를 열고 바로 잔고를 계산하려고 한다.

로컬호스트에 쿼리를 하려면 네트워크가 필요하지 않습니다. TCP/IP 지원이 설치된 기계만 있으면 됩니다. 따라서 첫 번째 방법을 사용하십시오. 필요한 json-rpc 데이터를 HTTP 요청으로 작성하는 라이브러리를 사용하거나, 관련 HTTP 요청을 직접 구성하여 사용하십시오.

BitcoinLib는 유지될 수도 있고(나는 모르겠지만), 이는 로컬 데몬을 쿼리하는 능력을 무효화하지 않습니다. GetBalance가 제거되거나 재구성되지 않았다고 알기로, 나는 최신 bitcoind와 함께 BitcoinLib를 GetBalance를 비롯한 다양한 작업에 사용합니다.

답변 2

제목: C# .NET으로 LOCAL Bitcoin 블록체인에 대한 조회 기능 구현하기

서론:

비트코인은 전 세계적으로 가장 널리 알려진 암호화폐 중 하나입니다. 이러한 암호화폐는 분산된 블록체인 네트워크를 통해 거래를 처리하며, 이러한 블록체인 데이터베이스는 비트코인 거래의 모든 세부 정보를 저장합니다. C# .NET은 매우 강력한 프로그래밍 언어로, 비트코인 블록체인과 상호 작용하고 데이터를 조회하는 기능을 구현하는 데에 이상적입니다. 이 글에서는 C# .NET을 사용하여 LOCAL Bitcoin 블록체인에 대한 조회 기능을 구현하는 방법에 대해 자세히 알아보겠습니다.

1. C# .NET을 통한 LOCAL Bitcoin 블록체인 데이터 접속

C# .NET에서는 비트코인 블록체인과 상호 작용하기 위해 비트코인 데이터에 대한 직접적인 접속을 지원하는 여러 라이브러리가 있습니다. 이러한 라이브러리 중에서는 NBitcoin이 가장 인기가 있습니다. NBitcoin을 사용하여 LOCAL Bitcoin 블록체인에 접속하고, 블록체인의 높이, 트랜잭션, 주소, 유효성 검증 등의 정보를 얻을 수 있습니다.

2. 비트코인 블록체인 높이 조회

블록체인 높이는 비트코인 블록체인의 길이를 나타냅니다. C# .NET을 사용하여 NBitcoin 라이브러리를 이용하면 접속한 LOCAL Bitcoin 블록체인의 현재 높이를 조회할 수 있습니다. 이를 통해 가장 최근의 블록 정보를 얻을 수 있으며, 새로운 트랜잭션 또는 유효성 검증 등의 작업을 수행할 수 있습니다.

3. 특정 블록에 대한 정보 조회

C# .NET을 이용하여 LOCAL Bitcoin 블록체인에서 특정 블록에 대한 정보를 조회하는 것도 가능합니다. NBitcoin을 사용하여 블록의 높이 또는 블록 해시를 통해 블록에 대한 자세한 정보를 가져올 수 있습니다. 이를 통해 특정 블록의 거래 목록, 블록 생성 시간, 블록 크기 등을 확인할 수 있습니다.

4. 특정 트랜잭션 조회

특정 트랜잭션에 대한 정보를 조회하는 것도 C# .NET과 NBitcoin을 이용하여 가능합니다. 트랜잭션 해시를 사용하여 트랜잭션의 세부 정보를 가져올 수 있습니다. 이를 통해 트랜잭션의 입력 및 출력, 입력 서명, 거래 금액 등을 확인할 수 있습니다.

5. 주소 정보 검색

LOCAL Bitcoin 블록체인에서 특정 주소에 대한 정보를 검색하는 것도 중요한 기능입니다. C# .NET을 이용하여 주소를 입력하여 해당 주소와 관련된 트랜잭션, 잔액 등을 조회할 수 있습니다.

결론:

C# .NET은 LOCAL Bitcoin 블록체인에 대한 조회 기능을 구현하기에 적합한 프로그래밍 언어입니다. NBitcoin을 사용하여 블록체인에 직접 접속하고, 블록, 트랜잭션, 주소 등 다양한 정보를 조회할 수 있습니다. 이를 통해 개발자는 비트코인 블록체인 데이터를 쉽게 분석하고 효율적으로 활용할 수 있습니다. C# .NET을 이용한 LOCAL Bitcoin 블록체인 데이터 조회 기능은 비트코인 생태계에 기여하고, 암호화폐 관련 프로젝트를 개발하는 데에 큰 도움이 될 것입니다.

반응형
Comments